2011-03-16 42 views
2

我有兩臺設備將數據流式傳輸到我的應用程序。一臺設備持續以1個數據包的速率將每個以'\ r \ n'結尾的9字節數據包流傳送到COM1。只有當設備被觸發時,第二臺設備纔會向COM3發送一個以'\ r \ n'結尾的38字節數據包。使用SerialDataReceivedEventHandler讀取多個串行端口的問題

每個都有一個完全不同的SerialDataReceivedEventHandler,每個都運行在它自己的dll中,將它們放在不同的線程中。

COM1 SerialDataReceivedEventHandler總是運​​行良好。

如果沒有數據流入COM1,COM3 SerialDataReceivedEventHandler將運行良好。

然而,當COM1 SerialDataReceivedEventHandler正在操作並且COM3 SerialDataReceivedEventHandler工作時,COM1 SerialDataReceivedEventHandler立即在數據可用,但COM3 SerialDataReceivedEventHandler佔用12秒的時候,數據是可用的消防火災。

COM1 SerialDataReceivedEventHandler是否保持COM3 SerialDataReceivedEventHandler不被觸發?或者在SerialDataReceivedEventHandler引擎下可能發生其他事情?有任何想法嗎?

+0

使用某種USB版本?用你的車跑過去,從另一個供應商處得到另一個。 – 2011-03-17 00:39:22

回答

3

默認情況下,COM1和COM3都使用相同的中斷線在數據顯示時發出信號,假設這些是真實的串行端口。你能配置其中一個端口是COM2還是COM4? COM1 & COM3既份額IRQ 4而COM2 & COM4 IRQ共享3.

您可以看一下這個設備管理器(可以運行devmgmt.msc啓動它)。

+0

+1尼斯回答 – 2011-03-17 03:42:19

+0

COM1是大規模的數據輸入,被用於標籤印刷輸出COM2,COM3和COM4是掃描儀的數據輸入 – Rich 2011-03-17 12:12:16

+0

我試圖改變上COM3與COM4的中斷在設備管理器,但它並沒有任何區別。如果我從COM1運行兩個超級終端讀取實例並從COM3運行另一個讀取實例,則看不到任何收到的數據延遲。在我看來,問題在於SerialDataReceivedEventHandlers。 – Rich 2011-03-17 12:21:42