【发布时间】:2015-09-21 19:13:24
【问题描述】:
我的程序现在使用了两个 Arduino。 因为我在 Linux 上并且是 Linux 的新手,所以端口不是静态的,比如“com3”和“com6”,我认为它是第一个连接的 Arduino 的“ttyUSB0”,第二个连接的“ttyUSB1”等等上。但是由于在操作系统启动时两者都是连接的,我可以确定端口名称将保持不变吗?还是有其他方法可以通过名称访问端口?
【问题讨论】:
标签: linux serial-port port
我的程序现在使用了两个 Arduino。 因为我在 Linux 上并且是 Linux 的新手,所以端口不是静态的,比如“com3”和“com6”,我认为它是第一个连接的 Arduino 的“ttyUSB0”,第二个连接的“ttyUSB1”等等上。但是由于在操作系统启动时两者都是连接的,我可以确定端口名称将保持不变吗?还是有其他方法可以通过名称访问端口?
【问题讨论】:
标签: linux serial-port port
使用 udev!
udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1
应该给你USB接口的序列号。
然后你可以编写udev规则:
例子
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="arduino"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A7004IXj", SYMLINK+="buspirate"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTDIF46B", SYMLINK+="cisco.serial"
【讨论】:
ATTRS{serial}=="0000:00:14.0" 所以是0000:00:14.0?我只是不明白“然后你可以编写 udev 规则”是什么意思