roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 23:02

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 19:12 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Прошу помощи linux-спецов по sh или awk

Решаю задачу на OpenWRT (OR-WRT)
Лучше конечно на sh, т.к. сейчас скрипт на нём.

Нужно скинуть "на экран" или в файл или в переменную окружения содержимое входящего буфера /dev/ttyUSB0.

Просто копирование подвешивается навсегда, что и логично :)
Как скопировать до момента, пока там есть данные?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 19:27 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
stty чтобы установить параметры порта, cat чтобы читать с него

_________________
У меня в голове опилки и длинные слова меня только огорчают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 19:35 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
cat прервется, когда буфер будет пустой в последовательном порту?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 19:40 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
боюсь соврать, стоит проверить на настоящем железе..
есть подозрение что cat может висеть бесконечно (или пока не прийдет SIGHUP).. вполне можно сделать poor man's timeout что-нить типа:
cat /dev/ttyUSB0 > /tmp/somefile &
pid=$!
sleep 5
kill -9 $pid

Ну или можно попробовать какой-нить read с параметром -t... там много вариантом, стоит экспериментировать.. head тоже интересный вариант, если надо прочитать строку

_________________
У меня в голове опилки и длинные слова меня только огорчают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 19:45 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Вот какое-то такое увидел в группах гугл, может это чем-то помочь?
Код:
#!/bin/bash

# Port setting
stty -F /dev/ttyS1 raw speed 9600

# Loop
while [ 1 ]; do
        READ=`dd if=/dev/ttyS1 count=1`
        echo $READ
done

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 20:17 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
=DeaD= писал(а):
Вот какое-то такое увидел в группах гугл, может это чем-то помочь?
Код:
#!/bin/bash

# Port setting
stty -F /dev/ttyS1 raw speed 9600

# Loop
while [ 1 ]; do
        READ=`dd if=/dev/ttyS1 count=1`
        echo $READ
done

Не думаю.
Вообще ты неправильно к делу подходишь. Читать уарт надо либо до какого-либо символа завершения либо до таймаута. Иначе это все костыли и рейс-кондишены.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 20:27 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Да мне бы в STDOUT выплюнуть всё что там есть в буфере и больше пока ничего не надо :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 20:39 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
там нет буфера, это поток (в терминах линукса это character device)
разные программы могут по разному этот поток разбивать для анализа (буфферизация внутри обработчика потока),
например по символу перевода строки
Следовательно признак окончания передачи нужно придумать (или сделать процесс цикличным)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 20:48 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
именно. Dead, придумай другой алгоритм.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 21:38 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
С буфером ясно, спасибо! Это была моя главная ошибка! Сейчас почти получил то, что нужно. Ответ уже получаю.
Только не пойму, почему у меня после ответа контролер сыплет ERR - вроде ничего лишнего ему не высылаю.

Добавлено спустя 10 минут 36 секунд:
Сейчас делаю так:

Код:
#!/bin/sh

echo "Content-type: text/html"
echo
echo "OK"
echo -n "["
cat /dev/ttyUSB0 &
pid=$!
echo "$QUERY_STRING" > "/dev/ttyUSB0"
sleep 1
kill -9 $pid
echo -n "]"


Выдаёт вот что:
Код:
OK
[Drv(100,0)

ERR09 in Drv cmd

ERR09 in Drv cmd

ERR09 in Drv cmd

]


Только "ERR09 in Drv cmd" не 3 раза выводит, а 200 раз :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 21:43 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
цепляй другой USB-UART и смотри что туда летит


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 22:54 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Такое ощущение, что роутер после закрытия порта гадит в /dev/ttyUSB0 :)

Добавлено спустя 1 час 11 минут 3 секунды:
Подцепил второй USB-UART - ничего подобного.
Много думаю, что за ерунда.

Телнетом отправляю команты контроллеру - всё отлично.
Слушаю что пишет роутер - всё отлично.
Связываю их друг с другом - сплошные ошибки :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 23:00 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
Я бы все же выставил настройки порта с помощью stty... Не из эфира вселенной же он скорость и контроль четности берет...

_________________
У меня в голове опилки и длинные слова меня только огорчают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 22 янв 2014, 23:49 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Как и ожидалось - настройки порта не помогли.

Добавлено спустя 22 минуты 44 секунды:
Буду менять подход к задаче, как-то коряво, действительно.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прошу помощи linux-спецов по sh или awk
СообщениеДобавлено: 23 янв 2014, 10:41 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2011, 12:37
Сообщения: 1672
Откуда: Москва
прог. языки: С
=DeaD=,
мы с dccharacter'ом вот тут forum87/topic10646-960.html#p289779
аналогичную задачу решали

Я лично таким образом дамплю логи с контроллера в файл чтобы потом обработать в gnuplot

В общем случае сначала нужно корректно настроить порт командой stty,
потом синхронизировать буфер, например посылать команду ping и ждать правильного ответа,
потом передавать команды

Ещё можно использовать команду expect

Для отладки можно использовать команду script (http://manpages.ubuntu.com/manpages/har ... ipt.1.html)
пожалуй это тут мало пригодно.

_________________
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO