如果我有一个使用Python pyserial模块访问的USB调制解调器,它要求识别设备'/dev/ttyACM0。如果调制解调器连接到 USB 集线器,它将不再出现在/dev/tty...
如何以编程方式从我的 Python 代码中识别它,以便无论它是否已更改,或者机器重新启动,我都可以找到调制解调器?
注意:我总是可以看到使用 lsusb 的设备,但如果它连接到 USB 集线器,它不会显示为/dev/tty...装置
这听起来像是 linux 内核中的一个错误。如果可以,请尝试更新的版本。
如果失败,请检查dmesg
输出的最后几行或文件/var/log/messages
(后者取决于您的发行版;如果该文件不存在或不包含您要查找的内容,请检查/var/log
中的其他文件;按时间排序ls -rt
帮助(。
识别设备后,您可能会看到一个模式。
另一种方法是主要和次要编号。如果运行 ls -l /dev
,您将看到如下所示的输出:
crw--w---- 1 root tty 4, 0 2011-12-19 09:15 tty0
c
表示"字符设备",4, 0
表示它是控制台设备单元 0。
4
是标识设备类型的主编号。有关主要编号和相应设备驱动程序的列表,请参阅 /proc/devices
。
如果直接插入模型,请记下主编号。将其插入集线器后,尝试查找具有相同编号的设备。
与其在 Python 中做一些巫毒教,不如尝试编写一个 udev 规则,为您的设备提供一个更有用的名称,例如 /dev/my-serial-thingy
。从Python使用它要容易得多。