C# 是否可以为串行端口中的每个响应注册不同的回调函数

C# 是否可以为串行端口中的每个响应注册不同的回调函数,c#,wpf,serial-port,C#,Wpf,Serial Port,我目前正在开发一个WPF应用程序,通过串口与嵌入式板通信,我必须发送2到3个以上的命令 1连接 2发送数据 3断开 目前,我使用了serialPort.DataReceived,如下所示: 端口\u DataReceived回调方法: private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) { } 每个命令都会调用它连接、发送数据、断开连接 那么,有可能为每个命令注册不同的方法吗 serialP

我目前正在开发一个WPF应用程序,通过串口与嵌入式板通信,我必须发送2到3个以上的命令

1连接

2发送数据

3断开

目前,我使用了serialPort.DataReceived,如下所示:

端口\u DataReceived回调方法:

private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{

}
每个命令都会调用它连接、发送数据、断开连接

那么,有可能为每个命令注册不同的方法吗

serialPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceivedForConnect);

serialPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceivedForSendData);

serialPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceivedDisconnect);
那么,有可能为每个命令注册不同的方法吗

serialPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceivedForConnect);

serialPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceivedForSendData);

serialPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceivedDisconnect);
不,不是。SerialPort类仅引发DataReceived事件以指示已接收某些数据


然后由您来解释数据,如何解释取决于所读取的数据。上有一个基本示例。

SerialPort无法区分您的命令,因为他接收序列化数据字节?不知道他们代表什么。你定义了通信协议吗?如果是,,您可以添加前缀标识符或使用现有的标识符来标识数据并将数据中继到相应的回调。是的,定义了协议n这三条命令有不同的功能扫描我们在这三个方法中注册事件?您可以创建自己的事件属性,请参阅这些更高级别的事件,但也请参阅NET的扩展,它提供了一种更好的发布-订阅方式。@如果有时间,IanMercer请求作为答案发布。我正在逐个发送24字节的帧,但如何限制下一帧,直到没有收到第一帧的响应为止?@PrashantPimpale:如果您有其他问题,请提出新问题。添加了一个问题,请看一看stackoverflow.com/q/55026042/7124761