Linux中的COM端口检测
请告诉我是否有任何API,系统调用,function(在Linux中),我可以使用我的C程序动态检测COM端口,即,只要在端口中插入USB调制解调器加密狗,我就能检测到COM端口在我的C程序中使用API,系统调用或函数。
根据您的调制解调器,USB串行端口设备可能显示为/dev/ttyUSBn
或/dev/ttyACMn
,其中n
是从0
开始的某个数字。
您可以配置udev
规则以自动对插入或删除的设备作出反应。
如果你想在C中自己做,你需要使用netlink(7)
套接字。 如果您不想摆弄它们,可能更简单的方法是简单地使用udev包提供的实用程序udevadm
(udevadm在内部使用netlink
),类似于:
udevadm monitor --kernel
如果您打算在C程序中使用它,只需在管道中调用它,如下所示:
stdbuf -o0 udevadm monitor --kernel
并设置select
循环,以便它可以立即做出反应。 包含在stdbuf
是必要的,以避免udevadm提供的缓冲。
在Linux中,串行端口不称为COMx。 它们(实际串行端口)通常命名为/dev/ttySx
,其中x是一个数字,从COM1开始为0,COM2开始为1,等等。
如果你想要一个列表,你应该在/dev
查找ttyS
设备。
这是一个非常详细的Linux上串行端口编程页面:
- 串行编程HOWTO
- 连续HOWTO
最后请注意,快速谷歌搜索对于这样的一般性问题有很长的路要走!