c# 串口发送接收数据
串口通信是一种常见的通信方式,它可以用于连接嵌入式设备、传感器、机器人等设备,实现数据的收发,并进行相应的处理。在 c# 开发中,串口通信通常使用 SerialPort 类实现,该类提供了一系列与串口通信相关的属性和方法,本文将介绍如何使用 SerialPort 类实现 c# 中的串口通信,包括串口的打开、发送和接收等操作。
打开串口
在使用 SerialPort 类进行串口通信前,需要先打开串口,打开串口的方法为调用 SerialPort 对象的 Open 方法,并设置相应的串口号、波特率、校验位、数据位和停止位等参数,示例代码如下:
SerialPort serialPort = new SerialPort();
serialPort.PortName = "COM1"; // 设置串口号为 COM1
serialPort.BaudRate = 9600; // 设置波特率为 9600
serialPort.Parity = Parity.None; // 设置校验位为无校验位
serialPort.DataBits = 8; // 设置数据位为 8 位
serialPort.StopBits = StopBits.One; // 设置停止位为 1 位
serialPort.Open(); // 打开串口
在使用完串口后,应该关闭串口,以释放资源,关闭串口的方法为调用 SerialPort 对象的 Close 方法,示例代码如下:
serialPort.Close(); // 关闭串口
发送数据
在打开串口后,可以通过调用 SerialPort 对象的 Write 方法,向串口发送数据,该方法将发送一个字节数组数据到串口,示例代码如下:
byte[] sendBytes = new byte[] {0x01, 0x02, 0x03}; // 待发送的字节数组
serialPort.Write(sendBytes, 0, sendBytes.Length); // 发送数据
接收数据
在打开串口后,可以通过调用 SerialPort 对象的 Read 方法,从串口接收数据,该方法会阻塞线程,直到接收到指定长度的数据或者超时,示例代码如下:
byte[] receiveBytes = new byte[10]; // 准备接收的字节数组
serialPort.Read(receiveBytes, 0, 10); // 接收数据
在读取串口数据时,应先使用 SerialPort 对象的 BytesToRead 属性获取当前串口缓存区中的可读数据长度,以避免读取到无效的数据,示例代码如下:
int length = serialPort.BytesToRead; // 获取可读数据长度
byte[] receiveBytes = new byte[length]; // 准备接收的字节数组
serialPort.Read(receiveBytes, 0, length); // 接收数据
在接收数据后,需要将字节数组转化为字符串或者其他数据类型进行后续处理,示例代码如下:
string receiveStr = Encoding.ASCII.GetString(receiveBytes); // 将字节数组转化为 ASCII 编码的字符串
int intValue = BitConverter.ToInt32(receiveBytes, 0); // 将字节数组转化为 int 类型的数据
总结
本文介绍了如何使用 SerialPort 类实现 c# 中的串口通信,包括串口的打开、发送和接收等操作。在进行串口通信时,需要注意以下几点:
- 串口通信前必须先打开串口,使用完串口后应该关闭串口
- 发送数据时,需要将待发送的数据转化为字节数组,使用 Write 方法发送
- 接收数据时,应该先获取当前串口缓存区中的可读数据长度,再使用 Read 方法接收数据,并将接收到的字节数组转化为字符串或其他数据类型进行处理
希望本文能帮助读者了解如何使用 c# 实现串口通信。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 串口发送接收数据 - Python技术站