В Unix/Linux все является файлом.
Каждый раз, когда вы отправляете эхо на устройство (/dev), вы открываете для записи, а затем пишете для закрытия. Простой способ поймать вывод устройства так же прост, как
tail -f /dev/ttyACM0 (-f оставляет линию открытой)
это отключит вывод и оставит устройство открытым.
Например, в моем случае у меня есть один проект, который считывает датчики в Arduino и параллельно отправляет информацию на сервер, а также на последовательный порт.
Теперь последовательные терминалы должны соответствовать скорости ОС и устройства. Поэтому иногда вы не получаете результат, если у вас нет правильной скорости и настроек. если вы наберете терминал
стти /dev/ttyACM0
вы получите текущую конфигурацию скорости.
Итак, вы можете попробовать что-то вроде этого (но не всегда работает)
обновлено ++
#!/бин/баш
input="/dev/ttyACM1" # устанавливает устройство
stty -F $input 115200 мин 0
# добавлено для инициализации строки
stty -F $input -brkint -icrnl -imaxbel -opost -onlcr -isig
stty -F $input -icanon -iexten -echo -echoe -echok -echoctl -echoke
echo "ver" >>$input #отправить команду
tail -f $input & #reads и ждать вечно
спать 2 секунды
killall tail #Может быть проблемой, если работает другой хвост
в моем случае эта оболочка выводит это (она не будет принимать команду ver, поскольку она не реализована, но после этого читает с tty все, что отправляет tty). С изменением хвост останавливается раньше, а вывод усекается на 2 секунды.
1970-00-00-00:00:00: Инициализировать SD-карту...
1970-00-00-00:00:00: Инициализация SDCard завершена.
1970-00-00-00:00:00: Чтение конфигурации...
1970-00-00-00:00:00: Готово...
1970-01-01-00:00:01: IP-адрес: 192.168.22.199
Опять же, флаг -f держит терминал открытым, но если я сниму его, я ничего не получу (я потерял вывод буфера)
Вот почему я думаю, что небольшая программа на языке C подойдет лучше.
Надеюсь это поможет.