上位机与通信组件(一)
1、基于C#的串口通信对象:SerialPort
引入System.IO.Ports;
创建SerialPort对象:SerialPort serialPort = new SerialPort();
2、字段属性
创建连接的基本属性:
serialPort.PortName = "COM1"; // 获取或设置通信端口
serialPort.BaudRate = 9600;// 获取或设置串行波特率
serialPort.DataBits = 8;// 获取或设置每个字节的标准的数据位长度
serialPort.Parity = Parity.None; // 获取或设置奇偶校验检查协议
serialPort.StopBits = StopBits.One; // 获取或设置每个字节的标准停止位数
SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
3、常用方法
GetPortNames:获取当前计算机的串口端口名称数组
string[] commArray = SerialPort.GetPortNames();
Open:打开一个新的串行端口连接
Read:从输入缓冲区中的读取
Write:将数据写入串行端口输出缓冲区
Close:关闭端口连接,将IsOpen设置为False,并释放内部Stream对象
4、常用事件
DataReceived:表示将处理SerialPort对象的数据接收事件的方法。接收到数据时的委托回调
serialPort.DataReceived += SerialPort_DataReceived; void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { throw new NotImplementedException(); }
5、串口写数据简单例子
通过虚拟串口驱动添加COM1、COM2两端口:
创建SerialPort通信串口对象,并向COM2写入数据:
1 using System.IO.Ports; 2 using System.Text; 3 4 string[] commArray = SerialPort.GetPortNames(); // 获取当前计算机的串口端口名称数组 5 SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); 6 7 serialPort.Open(); 8 9 Random random = new Random(); 10 int i = 1; 11 while (true) 12 { 13 if(serialPort != null) 14 { 15 serialPort.WriteLine($"第{i}条数据:{random.Next(1, 1001)}"); 16 i++; 17 } 18 19 } 20 21 //serialPort.Close();
从COM1发送给COM2的数据: