1

请让我知道是否有任何 API、系统调用、函数(在 Linux 中),我可以使用我的 C 程序动态检测 COM 端口,即,只要将 USB 调制解调器加密狗插入端口中,我就能够检测到该 COM 端口使用我的 C 程序中的 API、系统调用或函数。

4

2 回答 2

7

根据您的调制解调器,USB 串行端口设备可能显示为/dev/ttyUSBn/dev/ttyACMn,其中n某个数字从 开始0

您可以配置udev规则以自动对插入或移除的设备做出反应。

如果你想在 C 中自己做,你需要使用netlink(7)套接字。如果您不想摆弄它们,可能更简单的方法是简单地使用udevadmudev 包提供的实用程序(udevadm 在netlink内部使用),如下所示:

 udevadm monitor --kernel

如果要在 C 程序中使用它,只需像这样在管道中调用它:

 stdbuf -o0 udevadm monitor --kernel

并设置select循环,因此它可以立即做出反应。stdbuf为了避免 udevadm 提供的缓冲,必须进行回绕。

于 2013-04-03T06:14:21.540 回答
4

在 Linux 中,串行端口不称为 COMx。它们(真正的串行端口)通常被命名/dev/ttySx,其中 x 是一个数字,从 COM1 的 0 开始,COM2 的 1 开始,等等。

如果你想要一个列表,你应该寻找/dev设备ttyS

这是Linux上串口编程的非常详细的页面:

最后,请注意,对于此类一般性问题,快速的Google 搜索大有帮助!

于 2013-04-03T06:10:59.140 回答