我有一些基于 CP2102N 的 USB/TTL 适配器,有 4 条 GPIO 线。
我可以通过 来打开其中一个串行设备,相关的 GPIO 线由:/dev/ttyUSB0
控制。libgpiod
/dev/gpiochip1
我需要确保我始终修改正确的设备,并且我需要一种方法来通过查询/dev/ttyUSB0
-> 的结果/dev/gpiochip1
或通过查询/dev/gpiochip1
-> 的结果来找出关系/dev/ttyUSB0
。
我怎么做?我没有看到任何东西libgpiod
可以做到这一点。
答案1
您可以尝试readlink /sys/class/gpio/gpiochip1
和/或readlink /sys/class/tty/ttyUSB0
,并查看两条路径是否具有相同的控制器和 USB 设备组件。
例如,如果您收到类似以下信息:
# readlink /sys/class/gpio/gpiochip1
../../devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/gpio/gpiochip1
# readlink /sys/class/tty/ttyUSB0
../../devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/ttyUSB0/tty/ttyUSB0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The same PCI USB controller and USB device path!
那么你就会知道 ttyUSB0 == gpiochip1。