|
| |||
|
|
Работа с сериалом в bash Давно не писал на bash'е . Что-то туплю. Прошу помощи сообщества. Возникла простая задачка. На USB, через преобразователь в 485 висит железка. В нее надо плюнуть текстовой строкой, оканчивающейся на <cr> ( \x0D ). Железка тоже отвечает строкой, оканчивающейся на <cr>. Пишу, запускаю: #!/bin/bash cr=$'\x0d' stty -F /dev/ttyUSB0 raw ispeed 9600 ospeed 9600 cs8 -cstopb -ignpar cread clocal printf "\$012"$cr > /dev/ttyUSB0 read -r -d $cr -t 4 < /dev/ttyUSB0 echo "$REPLY" Ничего не происходит. Висим, отсыхаем по таймауту. Запускаю в разных консолях: #!/bin/bash flag=0 cr=$'\x0d' stty -F /dev/ttyUSB0 raw ispeed 9600 ospeed 9600 cs8 -cstopb -ignpar cread clocal until [ $flag -eq 1 ]; do read -r -d $cr < /dev/ttyUSB0 echo "$REPLY" done и #!/bin/bash cr=$'\x0d' stty -F /dev/ttyUSB0 raw ispeed 9600 ospeed 9600 cs8 -cstopb -ignpar cread clocal printf "\$012"$cr > /dev/ttyUSB0 Отрабатывает. Железка отзывается и присылает то, что должна. ЧЯДНТ? |
||||||||||||||