概述:RJCP.DLL.SerialPortStream庫為C#串口通信提供強大支持,跨平臺、高度可定製,集成基礎功能如打開、配置串口和數據讀寫,以及高級功能包括事件處理、超時設置等,極大簡化串口開發流程,適用於不同平臺和複雜通信需求。 C#串口開發之RJCP.DLL.SerialPortStrea ...
概述:RJCP.DLL.SerialPortStream庫為C#串口通信提供強大支持,跨平臺、高度可定製,集成基礎功能如打開、配置串口和數據讀寫,以及高級功能包括事件處理、超時設置等,極大簡化串口開發流程,適用於不同平臺和複雜通信需求。
C#串口開發之RJCP.DLL.SerialPortStream庫介紹
用途與優點
RJCP.DLL.SerialPortStream庫用於C#中串口通信的開發,具有以下優點:
- 跨平臺支持: 適用於Windows、Linux和macOS等多個平臺。
- 高度可定製性: 提供靈活的配置選項,可滿足不同串口通信需求。
- 開源社區支持: 在GitHub上積極維護,可獲取最新版本和社區支持。
基礎功能
1. 創建 SerialPortStream 實例
using RJCP.IO.Ports;
SerialPortStream serialPort = new SerialPortStream("COM1");
2. 打開和關閉串口
serialPort.Open();
// 進行串口操作
serialPort.Close();
3. 配置串口參數
serialPort.BaudRate = 9600;
serialPort.Parity = Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
4. 讀取和寫入數據
// 讀取數據
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);
高級功能
1. 事件處理
// 添加數據接收事件處理程式
serialPort.DataReceived += (sender, e) => {
byte[] receivedData = new byte[serialPort.BytesToRead];
serialPort.Read(receivedData, 0, receivedData.Length);
Console.WriteLine($"Received: {Encoding.UTF8.GetString(receivedData)}");
};
2. 超時設置
// 設置讀取超時時間為100毫秒
serialPort.ReadTimeout = 100;
3. 自定義流控制
// 自定義流控製為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庫的基礎和高級功能,包括打開和配置串口、事件處理、超時設置和流控制等。