Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Русскоязычное Linux-сообщество ([info]lj_ru_linux)
@ 2013-12-16 08:22:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Работа с сериалом в 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

Отрабатывает. Железка отзывается и присылает то, что должна. ЧЯДНТ?



(Читать комментарии) (Добавить комментарий)