C#でマルチスレッドのシリアル通信を実現する方法は何ですか?
C#でのマルチスレッドシリアル通信の実装には、System.IO.Ports名前空間のSerialPortクラスを使用します。
最初に、SerialPortオブジェクトを作成し、ボーレート、データビット、ストップビット、パリティなどのシリアルポート関連のプロパティを設定します。
using System.IO.Ports;
SerialPort serialPort = new SerialPort();
serialPort.PortName = "COM1"; // 设置串口名称
serialPort.BaudRate = 9600; // 设置波特率
serialPort.DataBits = 8; // 设置数据位
serialPort.StopBits = StopBits.One; // 设置停止位
serialPort.Parity = Parity.None; // 设置校验位
その後、シリアルデータの読み取りと書き込みを処理するスレッド関数を作成します。このスレッド関数では、SerialPortオブジェクトのReadLine()およびWrite()メソッドを使用してデータの読み取りと書き込みを行うことができます。
void SerialThreadFunc()
{
while (true)
{
if (serialPort.IsOpen)
{
// 读取串口数据
string data = serialPort.ReadLine();
Console.WriteLine("Received data: " + data);
// 写入串口数据
serialPort.Write("Hello, SerialPort!");
}
}
}
最後、新しいスレッドを作成し、そのスレッドでシリアル通信を開始します。
Thread serialThread = new Thread(SerialThreadFunc);
serialThread.Start();
上記手順に従うことで、マルチスレッドシリアル通信を実現することができます。メインスレッドでは、SerialPortオブジェクトの関連メソッドを使用してデータをシリアルポートに送信することができます。シリアルポートスレッドでは、ReadLine()メソッドを使用してシリアルデータを読み取ることができます。