Baud rate detector

nothinrandom
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.

nothinrandom
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();
        }