How to distinguish identical USB-to-serial converter?

假如想象 提交于 2021-02-08 09:51:30

问题


I have 2 identical USB-to-serial adapter cables (pretty much like this one) to connect a desktop PC under Ubuntu and some RS232 devices.

I develop a python software to pilot these devices.

I need to find a way to identify which one of the 2 adapters I am connected to.

I know about python's serial.tools.list_ports.comports() function, but all the settings are the exact same for both adapters (see capture below). Except the device, but it may change depending on the plugging order.

How can I change some settings' field to make both adapter pythonically distinguishable? Is it possible to write my own serial_number for example?


回答1:


To solve this problem there are some alternative paths to serial devices in Linux. There's either /dev/serial/by-id/ and /dev/serial/by-path variant to access your devices.




回答2:


If this is always for a specific serial device, the normal way to do this is to use the udev program to create symlinks for you in /dev. There's a lot of different options for how to do this, either based on what physical port it's plugged into or based off of attributes of the device(e.g. serial number).

FTDI based devices all have a serial number associated with them, but since yours is a Prolific they don't have a serial number, so this becomes a bit harder. However, since we can use udev to create a symlink based on where it is plugged in, something like the following should work(put this in a file seen by udev, e.g. /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"

The KERNELS parameter will have to change depending on where exactly you plug the serial device into and will be specific to your system. You can get a list of the udev parameters on your device by running the following:

udevadm info -a -n /dev/ttyUSB2

This page has more information on writing udev rules.



来源:https://stackoverflow.com/questions/55570556/how-to-distinguish-identical-usb-to-serial-converter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!