Beispiel #1
0
        //private void Start_RXthread()
        //{
        //    if (RX_backgroundWorker.IsBusy != true) {  }
        //}

        private void RX_thread()
        {
            int buffersize = _SerialPort.BytesToRead; //十六进制数的大小

            byte[] buffer = new Byte[buffersize];     //创建缓冲区
            _SerialPort.Read(buffer, 0, buffersize);
            if (RX_HEX_checkBox.Checked)
            {
                RXbox.AppendText(HEX_To_String(buffer));
            }
            else
            {
                try
                {
                    RXbox.AppendText(HEX_To_ASCII(buffer));
                    //蛋疼的处理richtextbox
                    //richtextbox中\n \r两者都是换行
                    //if ((buffer[0] == 0x0A) && (flagRN)) { } else { flagRN = false; }

                    //if (buffer[buffer.Length - 1] == 0x0D) { flagRN = true; }
                }
                catch { }
            }
            //if (scroll_checkBox.Checked)
            //{
            //    //RXbox.AutoScrollOffset
            //    //RXbox.view
            //    //RXbox_Scroll.Maximum = RXbox.ViewportHeight;
            //}
            RXL = RXL + buffer.Length;
            toolStripStatusLabel_R.Text = RXL.ToString();
        }
Beispiel #2
0
        //打开串口
        private void button2_Click(object sender, EventArgs e)
        {
            this.tabControl.Focus();

            try
            {
                bTarget = 0;
                if (_SerialPort.IsOpen)
                {
                    _SerialPort.Close();
                    Open_or_Close.BackColor       = Color.Coral;
                    Open_or_Close.Text            = "打开串口";
                    toolStripStatusLabel_COM.Text = null;
                    toolStripStatusLabel_RX.Text  = null;
                    toolStripStatusLabel_TX.Text  = null;
                    toolStripStatusLabel_R.Text   = null;
                    toolStripStatusLabel_T.Text   = null;
                    //RXbox.MustHideCaret = false;
                }
                else
                {
                    if (NameOfSerial.Text != "无")
                    {
                        _SerialPort.PortName = NameOfSerial.SelectedItem.ToString();
                        try
                        {
                            _SerialPort.Open();
                            toolStripStatusLabel_ERROR.Text = null;
                            toolStripStatusLabel_COM.Text   = _SerialPort.PortName + ": " + _SerialPort.BaudRate + " " + _SerialPort.DataBits + " " + _SerialPort.Parity + " " + _SerialPort.StopBits + "     ";
                            toolStripStatusLabel_RX.Text    = "RX";
                            toolStripStatusLabel_TX.Text    = "TX";
                            RXL = 0; TXL = 0;
                            toolStripStatusLabel_R.Text = RXL.ToString();
                            toolStripStatusLabel_T.Text = TXL.ToString();
                            Open_or_Close.Text          = "关闭串口";
                            Open_or_Close.BackColor     = Color.LightGreen;
                            //RXbox.MustHideCaret = true;
                        }
                        catch
                        {
                            MessageBox.Show("无法打开串口,该串口可能已被其他进程占用");
                        }
                    }
                    else
                    {
                        toolStripStatusLabel_ERROR.Text = "请先选择通信串口号";
                    }
                }
            }
            catch
            {
                toolStripStatusLabel_ERROR.Text = "未知错误";
                NameOfSerial.Items.Clear();
                NewSerial();
                Open_or_Close.Text = "打开串口";
            }
        }
Beispiel #3
0
        private void RX_thread()
        {
            int buffersize = _SerialPort.BytesToRead; //十六进制数的大小

            byte[] buffer = new Byte[buffersize];     //创建缓冲区

            _SerialPort.Read(buffer, 0, buffersize);
            if (buffersize < 5) //136+\r\n
            {
                return;
            }
            if (RX_HEX_checkBox.Checked)
            {
                RXbox.AppendText(HEX_To_String(buffer));
            }
            else
            {
                try
                {
                    string bufferstr = HEX_To_ASCII(buffer);
                    bufferstr.Replace("\n", "");
                    bufferstr.Replace("\r", "");
                    if (checkBox_timer.Checked)
                    {
                        DateTime ct       = DateTime.Now;
                        string   timeinfo = ct.Month.ToString() + ct.Day.ToString() + "_" + ct.Hour.ToString() + ct.Minute.ToString() + ct.Second.ToString();


                        RXbox.AppendText("\r\n" + timeinfo + "," + bufferstr);
                        save_Record();
                    }
                    else
                    {
                        RXbox.AppendText("\r\n" + bufferstr);
                        save_Record();
                    }

                    //蛋疼的处理richtextbox
                    //richtextbox中\n \r两者都是换行
                    //if ((buffer[0] == 0x0A) && (flagRN)) { } else { flagRN = false; }

                    //if (buffer[buffer.Length - 1] == 0x0D) { flagRN = true; }
                }
                catch { }
            }
            //if (scroll_checkBox.Checked)
            //{
            //    //RXbox.AutoScrollOffset
            //    //RXbox.view
            //    //RXbox_Scroll.Maximum = RXbox.ViewportHeight;
            //}
            RXL = RXL + buffer.Length;
            toolStripStatusLabel_R.Text = RXL.ToString();
        }
Beispiel #4
0
        private void RX_thread()
        {
            int buffersize = _SerialPort.BytesToRead; //十六进制数的大小

            byte[] buffer = new Byte[buffersize];     //创建缓冲区
            _SerialPort.Read(buffer, 0, buffersize);
            //RXbox.SelectionColor = Color.Black;
            if (RX_HEX_checkBox.Checked)
            {
                //RXbox.SelectionColor = Color.Blue;
                RXbox.AppendText(HEX_To_String(buffer));
                //RXbox.SelectionColor = Color.Black;
            }
            else
            {
                try
                {
                    //蛋疼的处理richtextbox
                    //richtextbox中\n \r两者都是换行
                    if ((buffer[0] == 0x0A) && (flagRN))
                    {
                    }
                    else
                    {
                        flagRN = false;
                    }
                    //RXbox.AppendText(HEX_To_ASCII(buffer));
                    //RXbox_Ex.Focus();
                    //RX_Browser.DocumentText = HEX_To_ASCII(buffer);
                    //htmlbox.Write(buffer, 0, buffer.Length);
                    //RXbox.Text += HEX_To_ASCII(buffer);
                    RXbox.AppendText(HEX_To_ASCII(buffer));
                    //if (RXbox_AutoScroll) { RXbox.ScrollToCaret(); }
                    //if (Scroll_backgroundWorker.IsBusy != true) { Scroll_backgroundWorker.RunWorkerAsync(); }
                    if (buffer[buffer.Length - 1] == 0x0D)
                    {
                        flagRN = true;
                    }
                }
                catch { }
            }
            //if (scroll_checkBox.Checked)
            //{
            //    //RXbox.AutoScrollOffset
            //    //RXbox.view
            //    //RXbox_Scroll.Maximum = RXbox.ViewportHeight;
            //}
            RXL = RXL + buffer.Length;
            toolStripStatusLabel_R.Text = RXL.ToString();
        }