是否可以知道RS232端口的连接状态?

Ped*_*roD 2 serial-port

你们建议使用9针电缆中的哪个信号/针来检查连接状态?

到目前为止,我正在使用DSR信号,因为在硬件测试中,如果电缆正确连接,则如果断开连接,则DSR信号为1,DSR变为0。但是,与其他驱动程序和/或操作系统相比,DSR在消息传输过程中会发生变化或始终为0。因此,除非在晴天在25ºC的受控条件下,否则我认为此DSR信号并不可靠。

那么如何在给定的时间点知道我是否仍在连接,即电缆没有断开?

请注意,连接可能会丢失,并且我的串行端口仍然存在并且已在操作系统的端口列表中打开,因此检查端口是否存在无法解决任何问题。我唯一的希望是依靠9个引脚之一进行检查。

另外,我也不想发送或接收字节来检查连接状态。应该有更好的方法...

谢谢!

Tre*_*ors 6

在任何给定时间都没有可靠的方法来确定串行连接状态。

标准方法是使DTR两端变为高电平,因此,无论您与谁连接,都会看到DSR,从而知道另一端是什么。您没有具体说明连接的确切类型,但是由于遇到这些问题,因此我暂时假设它是DTE / DTE,并且需要空调制解调器连接。

更糟的是,问题可能出在电缆本身,而不是软件或操作系统。

有关更多信息请参见此页面,但是对于空调制解调器电缆,有多个引脚。

空调制解调器电缆内部所需的最小接线如下所示: 无握手零调制解调器电缆

这就是所谓的“无握手零调制解调器电缆”。您会看到DTR和DSR引脚(引脚6和4)不起作用。使用此电缆插入某些东西时,DSR引脚状态不会改变。

然后是这个:

环回握手

这是“回送握手电缆”。您可以在此处看到DTR和DSR(引脚6和4)在每个连接器处相互桥接,并且没有沿着电缆的长度方向走。这意味着,如果将DTR设置为高电平,则会看到DSR-您自己的DSR。这告诉您端口上已经连接了串行电缆,但是该电缆的另一端并不一定要走到任何地方。您可以将电缆切成两半然后贴在鼻子上,您仍然会看到软件告诉您的连接有效。

更好的解决方案是使用如下所示的电缆:

部分握手

或像这样

充分握手

这是部分或全部握手电缆。您会看到每一侧的针脚4进入另一侧的针脚6。因此,双方都可以将DTR设置为高电平,并查看对方的DSR。这是唯一可以准确确定电缆是否实际连接到设备的情况。并且即使如此,只要双方都同意设置DTR。除非您控制通信的双方,否则都会碰碰运气。

这是您最好的方法,而无需在线发送数据并等待有效的回复。