示例#1
0
        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 {};
        }
示例#2
0
        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 {};
        }