當前位置: 妍妍網 > 碼農

C# 串口通訊利器:SerialPortStream庫

2024-03-10碼農

前言

RJCP.DLL.SerialPortStream庫為C#串口通訊提供強大支持,跨平台、高度可客製,整合基礎功能如開啟、配置串口和數據讀寫,以及高級功能包括事件處理、超時設定等,極大簡化串口開發流程,適用於不同平台和復雜通訊需求。

RJCP.DLL.SerialPortStream庫

用途與優點

RJCP.DLL.SerialPortStream庫用於C#中串口通訊的開發,具有以下優點:

1、 跨平台支持: 適用於Windows、Linux和macOS等多個平台。

2、 高度可客製性: 提供靈活的配置選項,可滿足不同串口通訊需求。

3、 開源社群支持: 在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 = newbyte[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 = newbyte[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;
classProgram {
staticvoidMain() {
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 = newbyte[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庫的基礎和高級功能,包括開啟和配置串口、事件處理、超時設定和流控制等。

- EOF -

推薦閱讀 點選標題可跳轉

看完本文有收獲?請轉發分享給更多人

推薦關註「DotNet」,提升.Net技能

點贊和在看就是最大的支持❤️