Тот же скрипт, но без использования timeout, т.е. практически даровый:
Код:
#!/bin/sh
tty=/dev/ttyATH0
# Сброс параметров.
stty -F $tty 4:0:18b2:0:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
# Настройка.
stty -F $tty raw 9600 cs8
# Тестовая посылка.
printf "\x10\x10\x00\x00\x00\x01\x02\x03\xE8\x66\xBE" > $tty
#timeout 0.2 dd if=$tty of=ans.dat count=256 2> /dev/null
( dd if=$tty of=ans.dat count=256 2> /dev/null ) & sleep 1 ; kill $!
hexdump -C ans.dat
Информация по способам прерывания команд взята тут:
Timeout a command in bash without unnecessary delay
Жалко только, что sleep засыпает на секунды, т.к. timeout понимает и доли секунды.