上位机与通信组件(一)

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的数据:

 

 

posted @ 2023-07-02 17:14  逆风起降  阅读(20)  评论(0编辑  收藏  举报