确定是串口存在,Linux C / C ++

时间:2012-04-09 19:39:01

标签: c++ c linux serial-port

我的开发目标是一台Linux计算机,它有两个位于/ dev / ttyS0和/ dev / ttyS1的物理串口。我还希望定义/ dev / ttyS2和/ dev / ttyS3。

使用stty -f / dev / ttyS0和S1报告两个串口的配置,并报告S2和S3的“不存在”的内容。

硬件设计人员正在谈论提供USB到主板上内置的串口。它们将是外部的DB9连接器,只是电路 - 内部没有USB连接器。 USB-to-serial连接的数量无法保证,我知道设计为“很多”而不是一个。

因此,在设置我的端口服务器守护进程时,我需要能够确定哪些ttyS和哪些ttyUSB是“真实的”,哪些不是。会不会有地方主义者ttyUSB?如果一个人被“拔掉”(比如确实是PC内部真正的USB耦合器)怎么办?

有没有比popen()stty更好的方法并检查其输出以确定串口的状态?是否有stty的C API?

谢谢!

1 个答案:

答案 0 :(得分:4)

stty使用的“C-API”是tcsetattr(3)tcgetattr(3)

要在不打开设备的情况下查找TTY,您可以查看以下问题:

How to find all serial devices (ttyS, ttyUSB, ..) on Linux without opening them?