c#SerialPort PinChanged事件处理

时间:2011-04-05 16:04:34

标签: c# serial-port

我有一个空终止的串口侦听器,我希望它将所有数据和引脚事件从输入端口传递到输出端口。数据运行良好,但我想传递所有的pin事件。我使用了

添加了一个监听器
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)
        {

        }
    }

如何将引脚状态的这些更改传递到输出端口?

2 个答案:

答案 0 :(得分:5)

这不起作用。 CD和Ring是调制解调器信号,它们作为PC上的输入连线。您没有可用于驱动这些信号的备用输出。 CTS和DSR是握手信号,在另一端连接到RTS和DTR。您需要自己使用它们在两个端口上实现握手。 Break也不能很好地工作,你不知道什么时候关闭,虽然你可以用计时器模拟它。不要打扰,这个信号可以追溯到石器时代。

RS-232不是为此而制造的。而是直接连接并点击信号。 TxD + Gnd到一个端口,RxD + Gnd到另一个端口,这样你就可以窥探流量。噪声不是最大的,保持电缆短路或波特率低。需要烙铁。

答案 1 :(得分:1)

CtsChanged和DsrChanged引脚状态是对其他事情的反应,你不应该试图以这种方式传递它们。它们与数据流有关。

我不确定其他信号。