2011-02-09 2 views
4

Я начинающий новичок, и я борется с тем, чтобы все вместе.Bash читайте с ttyUSB0 и отправьте по адресу

То, что я пытаюсь сделать, это:

1) Set Port (Запущенная)
2) Чтение из Dev/ttyUSB0 - данные должны выглядеть 000118110000101 (кошки или Gawk)
3) Установить чтения данные в переменную, например, DATA и создать URL-адрес, например http://domain.com/get_data.php?data= $ DATA
4) загрузить URL-адрес с помощью wget?
5) Подождите, пока больше данных из ttyUSB0 (опроса или петли?)

Я попытался PHP DIO расширение, что делает работу, но не является надежным, поскольку он останавливается/начинается по какой-то причине.

ЛЮБЫЕ предложения были бы оценены, я буду очень большой полон, если кто-нибудь может посоветовать лучший способ сделать это

Thanks

Brent

ответ

7

Это то, что я использовал.

#Set permisions 
sudo chmod o+rwx /dev/ttyUSB0 


#!/bin/bash 

# Port setting 
stty -F /dev/ttyUSB0 cs7 cstopb -ixon raw speed 1200 

# Loop 
while [ 1 ]; 
do 
    echo 'LOADING...' 
    READ=`dd if=/dev/ttyUSB0 count=22 | sed 's/ //g'` 
    echo $READ 
    wget http://localhost/BASHtest/test.php?signal=$READ 
    echo '[PRESS Ctrl + C TO EXIT]' 
done 
+1

+1 для публикации решения по вашей собственной проблеме. Объяснить re: non/blocking reads; блокировка чтения останавливает программу до тех пор, пока она не закончит чтение (потенциально навсегда, если это бесконечный поток данных). Неблокирующее чтение начинает чтение, а затем переходит к другой работе (например, обновлению пользовательского интерфейса). Второй поток обрабатывает данные по мере их поступления. Итак ... Если чтение, которое вы читаете, является блокирующим чтением, вам нужно знать, что вместо небольшого количества данных за один раз ваше приложение, кажется, виснет , – Basic

0

Для первого шага я бы посоветовала прочитайте в файл, а затем используйте команду od, чтобы получить восьмеричное (бинарное, насколько я вижу) представление, потому что стандартный awk не справляется с NUL (я думаю, gawk тоже). Поэтому после того, как вы получите байты, вы передаете его через скрипт sed, чтобы изменить восьмеричные на двоичные файлы, возьмите вывод с $() (или апострофами) и сделайте URL-адрес, который вы подаете до wget.

Единственная проблема, которую я вижу, заблокирована/не заблокирована, прочитайте с USB. Сообщите, если будет.

+0

Спасибо за ваш быстрый ответ pooh, извините, но мой опыт чтения с последовательных/USB-устройств ограничен. Не могли бы вы объяснить, что такое заблокированное/неблокированное чтение? – afro360

+0

@ afro360: у меня нет возможности проверить это сейчас, но я боюсь, что если вы просто сделаете 'cat tmpfile', он будет застрял навсегда. Другим вариантом может быть использование 'dd' и запрос большого количества байтов, поэтому он будет возвращаться с меньшим количеством, и там вы идете. Попробуйте сначала поэкспериментировать с тем, как получить куски данных надежным способом из/dev/ttyUSB0. –

+0

Все еще борется – afro360

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