Hi everyone. I'm writing an application in C#. Does anyone know how to autoset the baud rate? For example, I have a device connected to one of the three UART ports. Let's say that the device is set at a fixed baud rate of 38400, 8 data bits, no parity, 1 stop bit. If I send it a char "R", it replies with a char 'R'. On the device, let's say that I keep 8 data bits, no parity, 1 stop bit. How do I make it so that when I open the application, it sets the baud rate so that both devices can talk to each other? I tried a for loop, but for some reason when I send 'R' at the wrong baud rate, the application on the mini2440 crashes.
Baud rate detector
I figured it out. If anyone's interested:
private void ADC4_Load(object sender, EventArgs e)
{
int baud = 0;
for (int i = 0; i < 9; i++)
{
switch (baud)
{
case 0:
serialPort1.BaudRate = 300;
break;
case 1:
serialPort1.BaudRate = 1200;
break;
case 2:
serialPort1.BaudRate = 2400;
break;
case 3:
serialPort1.BaudRate = 4800;
break;
case 4:
serialPort1.BaudRate = 9600;
break;
case 5:
serialPort1.BaudRate = 14400;
break;
case 6:
serialPort1.BaudRate = 19200;
break;
case 7:
serialPort1.BaudRate = 38400;
break;
case 8:
serialPort1.BaudRate = 57600;
break;
case 9:
serialPort1.BaudRate = 115200;
break;
}
if (!serialPort1.IsOpen)
{
serialPort1.Open();
serialPort1.ReadTimeout = 3;
}
serialPort1.Write("R"); //figure out baud rate
if (serial1Read(1) == "R")
break;
else
serialPort1.Close();
baud++;
Thread.Sleep(30);
}
switch (baud)
{
case 0:
menuItem11.Checked = true;
break;
case 1:;
menuItem12.Checked = true;
break;
case 2:
menuItem13.Checked = true;
break;
case 3:
menuItem14.Checked = true;
break;
case 4:
menuItem15.Checked = true;
break;
case 5:
menuItem16.Checked = true;
break;
case 6:
menuItem17.Checked = true;
break;
case 7:
menuItem18.Checked = true;
break;
case 8:
menuItem19.Checked = true;
break;
case 9:
menuItem20.Checked = true;
break;
}
serialPort1.Close();
openserial();
}

