C# 发送了数据之后同步获取串口回传输数据
时间: 2024-10-20 11:19:36 浏览: 27
C# USB数据接收与发送
4星 · 用户满意度95%
在C#中,如果你需要通过串口发送数据并等待接收响应,你可以使用System.IO.Ports命名空间下的SerialPort类。以下是一个基本示例:
```csharp
using System.IO.Ports;
// 创建串口实例
SerialPort serialPort = new SerialPort("COM1", 9600); // "COM1"替换为你的实际串口号,波特率9600可自定义
try
{
// 打开串口
serialPort.Open();
// 发送数据
byte[] sendData = Encoding.ASCII.GetBytes("你要发送的数据");
serialPort.Write(sendData);
// 设置异步读取模式,并提供回调处理接收到的数据
serialPort.DataReceived += (sender, e) =>
{
if (serialPort.BytesToRead > 0)
{
byte[] receivedData = new byte[serialPort.BytesToRead];
serialPort.Read(receivedData, 0, receivedData.Length);
string receivedString = Encoding.ASCII.GetString(receivedData);
Console.WriteLine($"接收到的回应:{receivedString}");
}
};
// 开始监听数据
serialPort.DiscardInBuffer();
serialPort.Polling = true;
while (true) // 如果你想无限期等待,可以在这里添加适当的条件判断
{
serialPort.Poll(100); // 每隔100毫秒检查一次是否有新的数据
}
}
catch (Exception ex)
{
Console.WriteLine($"串口操作异常:{ex.Message}");
}
finally
{
// 关闭串口
serialPort.Close();
}
```
在这个例子中,我们首先打开串口,然后发送数据。接着设置`DataReceived`事件处理器来处理从串口接收到的数据。使用`Poll()`函数定期检查是否有新数据,直到你需要停止监听。
阅读全文