c - 如何将 lsusb 设备的结果链接到 /dev/ttyUSB*
问题描述
我有 USB 产品的供应商和产品代码:0403:6001
我想知道如何轻松地将 lsusb 命令的结果与设备的确定联系起来/dev/ttyUSB*
lsusb给我
Bus 001 Device 004: ID 065a:a001 First device
Bus 001 Device 003: ID 0403:6001 Second device FT232 USB-Serial (UART)
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
我怎么知道这个设备是打开/dev/ttyUSB0
还是 1 或 2 如果我的 PC 上有多个 USB 设备
提前致谢
背景定义:每次配置都不一样
USB设备可以插入或拔出,其他设备也可以...
解决方案
假设你有 udev:
shopt -s nullglob
for i in /dev/ttyUSB*; do
udevadm info -r -q all "$i" | awk -F= '
/DEVNAME/{d=$2}
/ID_VENDOR_ID/{v=$2}
/ID_MODEL_ID/{m=$2}
d&&v&&m{print d,v":"m;d=v=m=""}
'
done
udevadm
是获取有关 USB 设备的所有信息的命令。awk 命令只是过滤 USB 路径和类。
推荐阅读
- c - 使用 C 中的整数错误检查用户输入
- reactjs - React > 如何在使用 react-table 添加新行后将焦点设置在输入字段上
- powershell - 通过纯批处理将远程文件下载到内存中
- recursion - Ocaml:将列表排序为等价类
- elasticsearch - 可以在 Elasticsearch 中组合查询和建议
- aspnetboilerplate - ABP 实施 gRPC 的最佳实践
- javascript - 如何在 Javascript/ES6 中使用过滤条件从一个数组中过滤两个数组来创建对象?
- java - 在 Intellij Idea 中使用“Runtime.getRuntime().exec”方法时如何设置 JAVA_HOME?
- spring-webflux - 什么时候在 webflux 中调用 webClient
- java - Maven忽略依赖包的签名