我正在编写一个小脚本,它通过 bash shell 脚本向 Arduino 发送一些数据。发送数据的命令如下所示:
alias led_green="echo -e -n '\x10' > /dev/ttyACM1"
如您所见,我将 /dev/ttyACM1 硬编码到程序中。这很成问题,因为如果我更改 USB 端口,值也会更改,我的脚本将无法运行。我想知道是否有办法以编程方式告知 arduino 连接到哪个端口,这样只要有 arduino 连接,脚本就会一直运行。
答案1
我建议从别名切换到函数,该函数使用循环来遍历设备文件列表。
假设没有其他设备,您可以使用 for 循环来确定存在哪个设备。
$ for i in $(seq 0 99) ; do
> [ -e "/dev/ttyACM$i" ] && break
> done
如果在循环退出后回显的值$i
,则该值将是找到的设备的值。
但是,如果你有/dev/ttyACM0
和/dev/ttyACM1
设备并且它们运行在不同的波特率,你可以循环遍历它们并测试stty -a -F /dev/ttyACM$i | grep $BAUD_RATE
如果两个设备都以相同的波特率运行,那么...就没什么可做的了——必须使用手动方式。