2012-05-04 77 views

回答

11

这取决于你的意思是“连接”。我会首先解决最不准确但最简单的含义。

存在端口

如果你的意思是,以找出是否端口本身是存在于系统中,那么你可以检查已加载模块将支持它的存在,检查是否存在(如/ dev/ttyS0或/ dev/ttyUSB0,)验证您是否可以打开它(例如,我在实际上没有该硬件的系统上存在/ dev/ttyS0设备文件) 。 USB转换器可以被热插拔,所以今天你可以看到实际的“串行端口”在一个正在运行的系统中进出。

“调制解调器”控制/状态信号

另一种可能性是,你要找出是否有任何电缆连接到端口。这不是系统必须知道的事情。有一个外设可以断言的调制解调器控制和状态信号,你可以阅读。但是,外设并不需要使用这些,甚至在调制解调器时代曾经有意义的方式使用它们。您可能发现自己连接的许多系统仅使用接收和发送数据线和接地。

通过接收数据

剩余的可能性是,有可能是没有办法知道如果端口被连接时,比通过寻找从它数据等检测。有些外设可能会定期自动生成数据,因此您可以尝试阅读并查看是否有任何数据。对于其他人,你可以发送一个查询(希望没有不希望的副作用),并看看你是否得到预期的回应。例如,如果您发送字符串“* IDN?\ n”,那么大约实施SCPI标准的仪器可能会回复一些识别信息。

另一个主要的问题是你必须使端口和外设配置为兼容的波特率和字格式。否则,您可能会看到随机数据。你可能在某些情况下能够从实现的UART引擎中读取帧错误位(你必须检查驱动程序是否暴露了这种情况),并将其用作可能存在某种东西的指示,但是在错误的波特率率。

通过对硬件和期望数据进行细粒度控制,也可以编写自动波特率检测程序,但通常在“外设”端而不是“主机”上执行。

+0

非常感谢您的详细解释,感谢您的帮助。 –

+0

@RajeshSO plz接受答案,如果你满意。这将有助于其他人。 – Raulp

相关问题