我做了一种模块。模块中放置了不同的传感器。我通过RS232转换器将模块连接到Raspberry Pi。我正在使用 Libudev 自动查找哪个 Pi 端口具有使用供应商 ID 和产品 ID 的 RS232 转换器,并成功从中读取数据并将其显示在前端。现在我的问题是我现在有两个模块,并且两个模块都与相同的 Pi 连接,并且 RS232 供应商 id 和产品 id 相同。在前端,我选择了模块 1 或 2。除了供应商 ID 和产品 ID 之外,如何区分这两个转换器。如果能通过 Libudev 提供解决方案那就最好了。 PS:目前 Libudev 检测到我最近插入 RS232 转换器的端口。
答案1
正确的方法是为 RS232 转换器的设备节点命名,/dev/ttyUSB0
例如范围到您的应用程序。通过命令行选项、通过配置文件或其他方式。
因为您的应用程序可能在其他机器上运行,并且有许多其他具有相同供应商和产品 ID 的 RS232 转换器,但您的模块没有连接到其中任何一个。那么就会是必要的让用户选择您的应用程序应使用哪些 RS232 转换器,如果他无法设置此选项,您的应用程序将无法在他的计算机上运行。
至于自动区分同厂家、同产品的USB设备,可以看序列号(如果不同,有的设备没有序列号,或者都是一样的)。您还可以查看设备连接到的 USB 端口路径。您可以使用udev
规则为这些设备创建具有已知名称的符号链接,并将这些名称用作上述参数的默认值。