2011-04-05 269 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