private void btnStart_Click(object sender, EventArgs e) { btnStop.Enabled = true; btnStart.Enabled = false; if (parent.comPort.IsOpen) { parent.comPort.Close(); } if (comPort.IsOpen) { comPort.Close(); } try { parent.comPort.PortName = parent.CMB_ComPort.Text; parent.comPort.BaudRate = 57600; parent.comPort.Open(); parent.comPort.DtrEnable = false; parent.comPort.RtsEnable = false; System.Threading.Thread.Sleep(50); parent.comPort.DtrEnable = true; parent.comPort.RtsEnable = true; System.Threading.Thread.Sleep(100); Application.DoEvents(); comPort.PortName = cbComPort.Text; comPort.BaudRate = 57600; //comPort.Encoding try { comPort.Open(); } catch {} byte[] buffer = new byte[512]; int index = -1; if (parent.comPort.IsOpen && comPort.IsOpen) { loop = true; int np = 0; string message; while (loop) { System.Threading.Thread.Sleep(2); string s = ""; string so = ""; while (parent.comPort.BytesToRead != 0 && loop) { //parent.comPort.Write(s); byte c = (byte)parent.comPort.ReadByte(); byte[] ba = new byte[2]; ba[0] = c; comPort.Write(ba, 0, 1); if (c == 0 || c == 10) { Console.WriteLine('>' + s); s = ""; } else { char ch = (char)c; s = s + ch; //.ToString(); } Application.DoEvents(); } /* * while (comPort.BytesToRead != 0){ * string s=comPort.ReadExisting(); * parent.comPort.Write(s); * } */ while (comPort.BytesToRead != 0 && loop) { byte c = (byte)comPort.ReadByte(); byte[] ba = new byte[2]; if (flgRaw) { ba[0] = c; parent.comPort.Write(ba, 0, 1); } if (c == 0 || c == 10) { Console.WriteLine('<' + so); so = ""; } else { char ch = (char)c; so = so + ch; //.ToString(); } if (index >= 0) { buffer[index++] = c; } switch (parent.mavlink_parse_char(c)) { case 1: // got STX index = 0; buffer[index++] = c; // store STX break; case 2: // got packet if (!flgRaw) { if (parent.comPort.BytesToWrite == 0) // skip packet on buffer overrun { parent.comPort.Write(buffer, 0, index); } } index = -1; np++; try { this.Invoke((MethodInvoker) delegate { lblTLog.Text = np.ToString(); // runs on UI thread }); } catch { }; Application.DoEvents(); break; } // switch } // while bytes_to_read Application.DoEvents(); } // loop } else // if open { btnStop_Click(sender, null); } comPort.Close(); parent.comPort.Close(); } catch {}; }
private void btnStart_Click(object sender, EventArgs e) { btnStop.Enabled = true; btnStart.Enabled = false; if (parent.comPort.IsOpen) { parent.comPort.Close(); } if (comPort.IsOpen) { comPort.Close(); } try { parent.comPort.PortName = parent.CMB_ComPort.Text; parent.comPort.BaudRate = 57600; parent.comPort.Open(); parent.comPort.DtrEnable = false; parent.comPort.RtsEnable = false; System.Threading.Thread.Sleep(50); parent.comPort.DtrEnable = true; parent.comPort.RtsEnable = true; System.Threading.Thread.Sleep(100); Application.DoEvents(); comPort.PortName = cbComPort.Text; comPort.BaudRate = 57600; //comPort.Encoding try { comPort.Open(); } catch {} byte[] buffer = new byte[512]; int index = -1; if (parent.comPort.IsOpen && comPort.IsOpen) { loop = true; int np = 0; string message; while (loop) { while (parent.comPort.BytesToRead != 0) { Console.WriteLine(parent.comPort.ReadExisting()); } System.Threading.Thread.Sleep(2); Application.DoEvents(); /* * while (comPort.BytesToRead != 0){ * string s=comPort.ReadExisting(); * parent.comPort.Write(s); * } */ while (comPort.BytesToRead != 0 && loop) { byte c = (byte)comPort.ReadByte(); if (index >= 0) { buffer[index++] = c; } switch (parent.mavlink_parse_char(c)) { case 1: // got STX index = 0; buffer[index++] = c; // store STX break; case 2: // got packet if (parent.comPort.BytesToWrite == 0) { parent.comPort.Write(buffer, 0, index); } index = -1; np++; try { this.Invoke((MethodInvoker) delegate { lblTLog.Text = np.ToString(); // runs on UI thread }); } catch { }; message = ""; message += "Payload length: " + parent.rxmsg.len.ToString(); message += " Packet sequence: " + parent.rxmsg.seq.ToString(); message += " System ID: " + parent.rxmsg.sysid.ToString(); message += " Component ID: " + parent.rxmsg.compid.ToString(); message += " Message ID: " + parent.rxmsg.msgid.ToString(); message += " Message: "; for (int x = 0; x < parent.rxmsg.len; x++) { message += parent.rxmsg.payload[x].ToString(); } message += " CRC1: " + parent.rxmsg.seq.ToString(); message += " CRC2: " + c.ToString(); message += Environment.NewLine; //Console.Write(message); Application.DoEvents(); break; } // switch } // while bytes_to_read Application.DoEvents(); } // loop } else // if open { btnStop_Click(sender, null); } comPort.Close(); parent.comPort.Close(); } catch {}; }