diff --git a/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs b/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs index 94e3281f84..a10f2f7489 100644 --- a/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs +++ b/Tools/ArdupilotMegaPlanner/CommsUdpSerial.cs @@ -79,6 +79,18 @@ namespace System.IO.Ports client = new UdpClient(int.Parse(Port)); + int timeout = 5; + while (timeout > 0) + { + if (BytesToRead > 0) + break; + System.Threading.Thread.Sleep(1000); + timeout--; + } + + if (BytesToRead == 0) + return; + try { client.Receive(ref RemoteIpEndPoint); diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index fdebbc7360..204a6158ba 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -222,9 +222,12 @@ namespace ArdupilotMega private void CMB_serialport_Click(object sender, EventArgs e) { + String old_port = CMB_serialport.Text; CMB_serialport.Items.Clear(); CMB_serialport.Items.AddRange(SerialPort.GetPortNames()); CMB_serialport.Items.Add("UDP"); + if (CMB_serialport.Items.Contains(old_port)) + CMB_serialport.Text = old_port; } public static void fixtheme(Control temp) @@ -672,6 +675,10 @@ namespace ArdupilotMega private void CMB_serialport_SelectedIndexChanged(object sender, EventArgs e) { comportname = CMB_serialport.Text; + if (comportname == "UDP") + CMB_baudrate.Enabled = false; + else + CMB_baudrate.Enabled = true; try { comPort.BaseStream.PortName = CMB_serialport.Text;