2011-04-05 273 views
1

我有一個空終止的串口監聽器,我希望它將所有數據和pin事件從入端口傳遞到出端口。數據運行良好,但我想傳遞所有事件。我添加使用偵聽:c#SerialPort PinChanged事件處理

in_port.PinChanged += new SerialPinChangedEventHandler(port_PinChanged); 

,然後用處理:

static void port_PinChanged(object sender, SerialPinChangedEventArgs e) 
    { 

     if (e.EventType == SerialPinChange.Break) 
     { 
      out_port.BreakState = in_port.BreakState; 
     } 
     else if (e.EventType == SerialPinChange.CDChanged) 
     { 
     } 
     else if (e.EventType == SerialPinChange.CtsChanged) 
     { 
     } 
     else if (e.EventType == SerialPinChange.DsrChanged) 
     { 
     } 
     else if (e.EventType == SerialPinChange.Ring) 
     { 

     } 
    } 

如何傳遞的引腳狀態這些更改輸出端口?

回答

4

這是行不通的。 CD和Ring是調制解調器信號,它們在您的PC上作爲輸入連線。您沒有可用於驅動這些信號的備用輸出。 CTS和DSR是連接到另一端的RTS和DTR的握手信號。您需要自己使用它們在兩個端口上實施握手。休息也行不通,你不知道什麼時候關掉,儘管你可以用定時器來模擬它。不要打擾,那個信號來自石器時代。

RS-232只是不是爲此製作的。而是直接連線並點擊信號。 TxD + Gnd到一個端口,RxD + Gnd到另一個端口,這樣您就可以監聽流量。噪聲不是最大的,請保持電纜短路或波特率低。需要烙鐵。

1

CtsChanged和DsrChanged引腳狀態是對其他事情發生的反應,您不應該嘗試以這種方式傳遞它們。它們涉及數據流。

我不確定其他信號。

+0

感謝您的回覆。我在看這個的原因是有一個應用程序在一端通過端口與設備進行通信。一些設備命令失敗(不是寫入),所以我的第一個想法是在引腳改變時傳遞。有一個更好的方法嗎? – 2011-04-05 16:23:02