我正在Raspbian上运行一个自定义C ++程序,该程序会不时地重启其USB端口。但是,我注意到/ dev / USB *枚举在重启后是不一致的,因此需要能够处理。
基于/ dev /中的当前内容,是否有任何优雅的方法来获取诸如“ / dev / ttyUSB0”或“ / dev / ttyUSB1”之类的字符串?公平地假设只会连接一个设备,但是假设该设备除了通信所必需的东西之外,也不公平。
到目前为止我已经尝试过的事情:
我并不完全反对使用系统调用,但是如果可能的话,我想避免使用“ ls -l / dev / ttyUSB *”。
答案 0 :(得分:0)
执行此操作的最佳方法是创建udev规则,该规则将在插入设备时创建符号链接。您的udev规则将如下所示:
ATTRS{interface}="usb_converter", SYMLINK+="custom_link"
请注意,ATTRS
下还有许多选项可用于与特定的USB设备进行匹配。您可以获得诸如PID / VID,设备序列号,manu7facturer等信息。如果您的USB到串行转换器是FTDI制造的,通常我要做的就是使用FTPROG对设备进行重新编程并为其赋予唯一性。接口名称(在这种情况下为usb_converter
),然后对其进行匹配以确保始终使用相同的名称。
有关更多信息,请参见this answer,有关编写udev规则,请参见this guide。