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

最后请注意,快速谷歌搜索对于这样的一般性问题有很长的路要走!