C# 写一个捉包工具可以捉取串口通信的报文
时间: 2024-12-16 07:26:34 浏览: 8
在C#中,创建一个串口通信数据捕获工具通常涉及到`System.IO.Ports.SerialPort`类,这是一个用于与串行端口设备交互的类库。以下是一个简单的示例,展示如何使用这个类来监听并打印接收到的串口报文:
```csharp
using System;
using System.IO.Ports;
public class SerialPacketCapture
{
private SerialPort serialPort;
public SerialPacketCapture(string portName, int baudRate)
{
serialPort = new SerialPort(portName, baudRate);
serialPort.DataReceived += SerialPort_DataReceived; // 注册数据接收事件
serialPort.Open(); // 打开串口
}
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] buffer = new byte[serialPort.BytesToRead];
serialPort.Read(buffer, 0, buffer.Length);
string receivedMessage = System.Text.Encoding.ASCII.GetString(buffer); // 将字节转换成字符串
Console.WriteLine("Received: " + receivedMessage);
}
public void StartListening()
{
serialPort.DiscardInBuffer(); // 清空输入缓冲区,开始接收新的数据
serialPort.StartReceive();
}
public void StopListening()
{
serialPort.StopReceive();
serialPort.Close();
}
}
// 使用示例
public static void Main()
{
SerialPacketCapture packetCapture = new SerialPacketCapture("COM1", 9600);
packetCapture.StartListening();
// 当需要停止监听时,调用StopListening()方法
}
```
这个例子中,你需要替换`"COM1"`为实际的串口号,并设置合适的波特率。当你启动`StartListening()`方法时,程序会开始监听串口数据。每当有数据到达,`SerialPort_DataReceived`方法会被触发,将接收到的数据打印到控制台。
阅读全文