我有2条相同的USB到串行适配器电缆(非常类似于this one),用于在Ubuntu和某些RS232设备下连接台式机。
我开发了python软件来试用这些设备。
我需要找到一种方法来识别我连接的2个适配器中的哪个。
我了解python的serial.tools.list_ports.comports()
函数,但是两个适配器的所有设置都完全相同(请参见下面的捕获)。 device
除外,但它可能会根据插入顺序而改变。
如何更改某些设置的字段以使两个适配器在Python上都可以区分?例如,可以写我自己的serial_number
吗?
答案 0 :(得分:1)
要解决此问题,Linux中有一些通往串行设备的替代路径。
有一个
/dev/serial/by-id/
和/dev/serial/by-path
变体来访问您的设备。
答案 1 :(得分:1)
如果这总是用于特定的串行设备,则通常的方法是使用udev程序在/ dev中为您创建符号链接。进行此操作的方式有很多,可以根据所插入的物理端口来选择,也可以基于设备的属性(例如序列号)来完成。
所有基于FTDI的设备都具有与之关联的序列号,但是由于您的设备是多产的,因此它们没有序列号,因此这会变得有些困难。但是,由于我们可以使用udev根据插入位置创建符号链接,因此应执行以下操作(将其放入udev看到的文件中,例如/etc/udev/rules.d/80-my-converter .rules):
SUBSYSTEM=="usb", KERNELS=="2-1.8.3", SYMLINK+="device_1"
SUBSYSTEM=="usb", KERNELS=="2-1.8.1.3", SYMLINK+="device_2"
KERNELS参数将必须根据您将串行设备插入的确切位置进行更改,并且该参数将特定于您的系统。您可以通过运行以下命令在设备上获取udev参数的列表:
udevadm info -a -n /dev/ttyUSB2
This page了解有关编写udev规则的更多信息。