Как определить, к какому последовательному порту подключен мой Arduino, с помощью сценария оболочки?
Я сейчас пишу небольшой скрипт, который отправляет некоторые данные в Arduino через скрипт оболочки bash. Команда, которая отправляет данные, выглядит следующим образом:
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
Если оба устройства работают с одинаковой скоростью передачи, хорошо.,, Делать особо нечего - приходится пользоваться ручным способом.