如何使用 shell 脚本找到我的 Arduino 连接到哪个串行端口?

如何使用 shell 脚本找到我的 Arduino 连接到哪个串行端口?

我正在编写一个小脚本,它通过 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

如果两个设备都以相同的波特率运行,那么...就没什么可做的了——必须使用手动方式。

相关内容