我做了一种模块。模块中放置了不同的传感器。我通过RS232转换器将模块连接到Raspberry Pi。我正在使用Libudev自动找出哪个Pi端口有RS232转换器,使用供应商Id和Product,并成功地读取数据并在前端显示。现在我的问题是,我现在有两个模块,两个模块都与相同的Pi连接,并且RS232供应商id和Product都是相同的。在前端,我选择了模块1或2。除了Vendor id和Product之外,我如何区分两个转换器。最好能通过Libudev提供解决方案。P.S :目前,Libudev检测到了我插入RS232转换器的最新端口。
发布于 2018-11-07 07:12:24
正确的方法是使RS232转换器的设备节点的名称(例如,/dev/ttyUSB0
)成为应用程序的一个参数。通过命令行选项、配置文件或其他方式。
因为您的应用程序可能运行在其他机器上,有许多具有相同供应商和产品id的其他RS232转换器,但没有将模块连接到其中任何一个。然后,用户必须选择应用程序应该使用的RS232转换器,如果他没有方法设置这个转换器,那么您的应用程序将无法在他的机器上工作。
至于自动区分同一厂商和产品的USB设备,您可以查看序列号(如果序列号不同,有些设备没有序列号,或者始终是相同的序列号)。您还可以查看设备连接到的USB端口路径。您可以使用udev
规则为这些设备创建带有已知名称的符号链接,并将这些名称用作上述参数的默认值。
https://unix.stackexchange.com/questions/480282
复制相似问题