如何在Linux中用Python识别USB调制解调器/dev
我有一个USB调制解调器,我是通过Python的pyserial模块来访问它的。这个调制解调器需要被识别,比如说'/dev/ttyACM0'。但是如果调制解调器连接在一个USB集线器上,它就不会出现在/dev/tty...这个地方了。
我该如何在我的Python代码中以编程方式识别它,这样无论它是否被更改过,或者机器是否重启,我都能找到这个调制解调器呢?
注意:我总是可以通过lsusb命令看到这个设备,但如果它连接在USB集线器上,它就不会显示为/dev/tty...的设备。
2 个回答
1
与其在Python中搞一些复杂的操作,不如试着写一个udev规则,这样可以给你的设备起个更有用的名字,比如/dev/my-serial-thingy
。这样在Python中使用起来就简单多了。
1
这听起来像是Linux内核中的一个错误。如果可以的话,试试更新版本。
如果还是不行,检查一下dmesg
的最后几行输出,或者查看文件/var/log/messages
(这个文件的存在与否取决于你的Linux发行版;如果这个文件不存在或者里面没有你想要的信息,可以看看/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
来获取主号和相应设备驱动的列表。
如果你直接插入设备型号,记下主号。插入集线器后,尝试找到具有相同主号的设备。