我正在开发一个winforms应用程序。我有一个SerialPort列表,每个都在一个不同的COM端口上监听。
我打算为所有SerialPorts添加一个唯一的事件处理程序SerialPort.DataReceived。这是一个很好的设计吗?谢谢。
答案 0 :(得分:1)
嗯,当然,没错。并且通常非常有用,因为DataReceived事件处理程序应该在将其交给处理数据的其他代码之前尝试接收整个“数据包”。特别是如果您使用BeginInvoke在UI线程上运行代码。不同的设备通常具有不同的协议,因此在各自的事件处理程序中需要不同的代码。或者不同的缓冲区来存储部分响应。
或者并非所有设备都运行相同,并且共享相同的事件处理程序代码将起作用。您需要将 sender 参数转换为SerialPort才能进行正确的Read调用。你可以在适当的方式猜测问题。