RJCP.DLL.SerialPortStream库用于C#中串口通信的开发,具有以下优点:
using RJCP.IO.Ports;
SerialPortStream serialPort = new SerialPortStream("COM1");
serialPort.Open();
// 进行串口操作
serialPort.Close();
serialPort.BaudRate = 9600;
serialPort.Parity = Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
// 读取数据
byte[] buffer = new byte[1024];
int bytesRead = serialPort.Read(buffer, 0, buffer.Length);
// 写入数据
byte[] dataToSend = Encoding.UTF8.GetBytes("Hello, Serial!");
serialPort.Write(dataToSend, 0, dataToSend.Length);
// 添加数据接收事件处理程序
serialPort.DataReceived += (sender, e) => {
byte[] receivedData = new byte[serialPort.BytesToRead];
serialPort.Read(receivedData, 0, receivedData.Length);
Console.WriteLine($"Received: {Encoding.UTF8.GetString(receivedData)}");
};
// 设置读取超时时间为100毫秒
serialPort.ReadTimeout = 100;
// 自定义流控制为RTS/CTS
serialPort.Handshake = Handshake.RequestToSend;
以下是一个结合基础和高级功能的完整示例:
using System;
using System.Text;
using RJCP.IO.Ports;
class Program {
static void Main() {
using (SerialPortStream serialPort = new SerialPortStream("COM1")) {
// 基础功能:打开串口、配置参数
serialPort.Open();
serialPort.BaudRate = 9600;
serialPort.Parity = Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
// 高级功能:数据接收事件处理
serialPort.DataReceived += (sender, e) => {
byte[] receivedData = new byte[serialPort.BytesToRead];
serialPort.Read(receivedData, 0, receivedData.Length);
Console.WriteLine($"Received: {Encoding.UTF8.GetString(receivedData)}");
};
// 发送数据
byte[] dataToSend = Encoding.UTF8.GetBytes("Hello, Serial!");
serialPort.Write(dataToSend, 0, dataToSend.Length);
// 等待一段时间以接收数据
Console.WriteLine("Waiting for data...");
Console.ReadLine();
}
}
}
以上示例演示了RJCP.DLL.SerialPortStream库的基础和高级功能,包括打开和配置串口、事件处理、超时设置和流控制等。
源代码获取:公众号回复消息【code:87745
】