我有两台设备可以将数据传输到我的应用程序。一个设备连续流式传输以'\ r \ n'结尾的9字节数据包,速率为每50 ms一个数据包到COM1。仅当设备被触发时,第二个设备才向COM3发送一个以'\ r \ n'结尾的38字节数据包。
每个都有一个完全不同的SerialDataReceivedEventHandler,每个都运行在它自己的dll中,将它们放在不同的线程中。
COM1 SerialDataReceivedEventHandler总是表现良好。
如果没有数据流入COM1,COM3 SerialDataReceivedEventHandler将表现良好。
但是,当COM1 SerialDataReceivedEventHandler正在运行且COM3 SerialDataReceivedEventHandler正在运行时,COM1 SerialDataReceivedEventHandler会在数据可用时立即触发,但是当数据可用时,COM3 SerialDataReceivedEventHandler最多需要12秒才会触发。
COM1 SerialDataReceivedEventHandler是否阻止COM3 SerialDataReceivedEventHandler触发?或者也许在SerialDataReceivedEventHandler引擎盖下发生了其他事情?有任何想法吗?
答案 0 :(得分:3)
默认情况下,COM1和COM3都使用相同的中断线来显示数据,假设这些是真正的串行端口。您可以将其中一个端口配置为COM2或COM4吗? COM1& COM3和COM2都共享IRQ 4。 COM4共享IRQ 3。
您可以使用设备管理器查看此信息(您可以运行devmgmt.msc来启动它)。