最近在做与设备进行串口通信交互的项目,然后简单记录一下过程
使用的winform应用程序
方式1
1.声明串口对象 或者直接在工具箱拖拽串口控件
本篇文章不采用拖拽工具箱控件 直接声明对象
声明串口对象
SerialPort port = new SerialPort();//在选择了串口之后设置 串口、波特率、校验位等
也可以直接拖拽工具箱的串口控件SerialPort
2.引用串口命名控件 声明串口对象、声明委托
using System.IO.Ports;SerialPort serialPort1 = new SerialPort();public delegate void Displaydelegate(byte[] InputBuf);public Displaydelegate disp_delegate;public Form1(){InitializeComponent();disp_delegate = new Displaydelegate(DispUI);serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);}
3.先获取电脑所有串口列表
获取到列表后绑定给conboBox,以便选择串口打开 在load事件绑定下拉框
String[] portnames = SerialPort.GetPortNames();foreach (var item in portnames){comboBox1.Items.Add(item);}
4.实例化串口打开串口
选择串口后实例化串口
string aaa = comboBox1.SelectedItem.ToString();serialPort11 = new SerialPort(aaa, 9600, Parity.None, 8, StopBits.One); //初始化串口设置 serialPort11 声明为全局变量serialPort1.Open();if (serialPort1.IsOpen){MessageBox.Show("打开成功");}else{MessageBox.Show("打开失败");}
5.写一个接收数据事件获取串口发送来的数据
//编写一个接收事件private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e){// writetxt("端口名称:" + serialPort1.PortName + "====" + "端口名称:" + "波特率:" + serialPort1.BaudRate + "串口状态:" + serialPort1.IsOpen + "错误信息:无");//string receive = "";//数据接收try{Thread.Sleep(100); //(毫秒)等待一定时间,确保数据的完整性 int len int len = serialPort1.BytesToRead;if (len != 0){byte[] buff = new byte[len];serialPort1.Read(buff, 0, len);//receive = Encoding.Default.GetString(buff);//数据接收内容//textBox1.Text = receive + "\r\n"; //不能直接给textbox1 不然会报错this.Invoke(disp_delegate, buff);}}catch (Exception asd){//writetxt("端口名称:" + serialPort1.PortName + "====" + "端口名称:" + "波特率:" + serialPort1.BaudRate + "串口状态:" + serialPort1.IsOpen + "错误信息:" + asd.Message);return;}}public void DispUI(byte[] InputBuf){//textBox1.Text = Convert.ToString(InputBuf);string aaa = Encoding.Default.GetString(InputBuf);textBox1.Text = aaa;// writetxt("端口名称:" + serialPort1.PortName + "====" + "端口名称:" + "波特率:" + serialPort1.BaudRate + "串口状态:" + serialPort1.IsOpen + "错误信息:无" + "数据:" + aaa);}
6.模拟串口发送数据
模拟串口调试工具可参考我另一篇文章链接/qq_39569480/article/details/120776868