2015-02-09 3 views
0

У меня проблема со сценарием. У меня есть измеритель напряжения, подключенный к последовательному USB-устройству (ttyUSB1). Смарт-метр нуждается в начальной последовательности и вскоре после этого следует вторая команда, чтобы предоставить всю ее информацию. Это прекрасно работает. 1.8.0 * 00 (000898.46), например, входит в эту строку, меня интересует. Число в скобках - это номер в кВт-ч, который я хочу. Если я открою второй терминал и сделаю cat/dev/ttyUSB1, он отлично работает, и я вижу информацию, поступающую. Через 4-5 секунд появится строка, в которой я хочу. Но сценарий не работает. Если я запустил скрипт в одном терминале, он будет ждать. Греп не заканчивает. Если я запустил его во втором терминале, то первый терминал будет завершен. Или просто grep 1.8.0/dev/ttyUSB1 -m1 в другом терминале работает, но не в скрипте. Я пробовал разные методы с чтением, и поэтому никто не работал. Честно говоря, я не понимаю, много сценариев и всегда удавалось каким-то образом, но здесь бездельники помогло :(Grep не работает в скрипте, а на консоли

Пожалуйста, помогите Спасибо Arne

здесь сценарий:.!

#! /bin/bash 
echo start 
echo $'\x2f\x3f\x21\x0d' > /dev/ttyUSB1 
sleep 1 
echo ask 
echo $'\x06\x30\x30\x30\x0d' > /dev/ttyUSB1 
echo wait 
grep 1.8.0 /dev/ttyUSB1 -m1 
echo end  

ответ

0

Вы можете попробуйте создать файл с выходом voltimeter и grep из этого файла:

#! /bin/bash 

dev=/dev/ttyUSB1 
file=/tmp/testfile 

(tail -f $dev | tee $file) & # let's continuously copy in background 
echo start 
echo $'\x2f\x3f\x21\x0d' > $dev 
sleep 1 
echo ask 
echo $'\x06\x30\x30\x30\x0d' > $dev 
echo wait 
grep 1.8.0 $file # lets get the info from the file instead 
echo end 
sleep 1 
exit 
+0

Спасибо за ваш ответ, он создает/tmp/testfile, но он пуст. Если я открою второй терминал с cat/dev/USBtty1 показывает, что данные поступают. Я думаю, что сценарий каким-то образом не захватывает входящие данные от ttyUSB1. Может быть, мне нужно сделать 2 сценария, который заставляет метр отправлять данные, а второй - пытается получить мой номер. На самом деле я хотел только один, который возвращает мне данные. интересно, почему его не работает :( – Arne

+0

Это/dev/USBtty1 или/dev/ttyUSB1? – Tiago

+0

/dev/ttyUSB1 жаль, не наоборот – Arne

Смежные вопросы