串口调试助手

1 串口的初始化

设置串口的名称、波特率、数据位、校验位、停止位。

1 //获取本机所有串口的名字
2 String[] strPortName = SerialPort.GetPortNames();
3 //将本机所有串口名称赋值给cmbPort控件
4 cmbPortName.ItemsSource = strPortName;

 

 1 comPort.PortName = cmbPortName.Text;
 2 comPort.BaudRate = int.Parse(cmbBaudRate.Text);
 3 comPort.DataBits = int.Parse(cmbDataBit.Text);
 4 
 5 //奇偶校验
 6 switch (cmbPrity.SelectedIndex)
 7 {
 8     case 0:
 9         comPort.Parity = Parity.None;
10         break;
11     case 1:
12         comPort.Parity = Parity.Odd;
13         break;
14     case 2:
15         comPort.Parity = Parity.Even;
16         break;
17     default:
18         comPort.Parity = Parity.None;
19         break;
20 }
21 //停止位
22 switch (cmbStopBit.SelectedIndex)
23 {
24     case 0:
25         comPort.StopBits = StopBits.One;
26         break;
27     case 1:
28         comPort.StopBits = StopBits.Two;
29         break;
30     default:
31         comPort.StopBits = StopBits.One;
32         break;
33 }

2 打开串口

 1 comPort.Open(); 

3 关闭串口

 1 comPort.Close(); 

4 串口的发送

 1 comPort.Write(textSend.Text); //直接发送字符串

2 comPort.Write(bytes,0,str.Length); //发送字节数组  

注意:为了可以发送和显示中文,设置以下属性即可。

comPort.PortName = cmbPortName.Text;

5 串口数据的接收

 1 private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
 2 {
 3     
 4     string strData = "";
 5     
 6     //读去缓冲区字符数量
 7     while (comPort.BytesToRead != 0)
 8     {
 9         if (!bHexSendState)     //字符发送
10         {
11             //byte[] result = new byte[comPort.ReadBufferSize];
12             //comPort.Read(result, 0, comPort.ReadBufferSize);
13             //strData = Encoding.UTF8.GetString(result);
14             
15             strData = comPort.ReadExisting() + "\n";
16             
17         }
18         else
19         {
20             byte  readBuffer = (byte)comPort.ReadByte();
21             strData = Convert.ToString(readBuffer,16).ToUpper();
22             if (strData.Length == 1)
23                 strData = strData.PadLeft(2,'0');
24             strData +=  " ";
25         }
26         
27            
28         Dispatcher.Invoke(new Action(() =>
29         {
30             textRecv.AppendText(strData);
31             //滚动到底部
32             textRecv.ScrollToEnd(); 
33         }));
34     }
35 }

 


posted @ 2019-12-17 20:31  FengHandong  阅读(432)  评论(0)    收藏  举报