//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(); }
//打开串口 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 = "打开串口"; } }
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(); }
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(); }