Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX и Hardware > Опрос COM-порта стандартными средствами Linux


Автор: Zerstroer 12.3.2012, 15:24
Доброго времени суток.

Есть компьютер (ОС Debian 6.0.4) с com-портом (через переходник usb - com). Com-порт определился как /dev/ttyUSB0. Есть железка, подключенная к com-порту. Есть параметры работы железки. Есть перечень рабочих команд на данную железку. Есть желание поэксперементировать с ней.
Вопрос.
Можно ли стандартными средствами из консоли отправить на com-порт запрос и послушать ответ?
То, что находил в интернете сводилось в основном к написанию тестовых утилиток на C. 
Меня интересует готовый функционал. Вроде COM Port Sniffer/Monitor.


Автор: jhonyxakep 12.3.2012, 15:54
echo позволяет работать с портом, но увы настроек сокрости и тп вы не найдете.

Если все-же решитесь доустановить рекомендую minicom


Автор: Zerstroer 12.3.2012, 19:55
jhonyxakep, спасибо!

1. Можно подробнее о работе с COM-портом посредством echo? Можно ли комбинированно работать с echo, stty и setserial?

2. Minicom - в стандартном репозитории имеется, попробую воспользоваться.

Автор: Zerstroer 12.3.2012, 20:24
Значительно удовлетворила графическая утилита cutecom.

По echo вопрос остается открытым.

Автор: 500mhz 12.3.2012, 20:39
echo "туляля" > /dev/ttyS0
cat /dev/ttyS0  читаем ответ

Автор: Zerstroer 12.3.2012, 20:48
Цитата(500mhz @  12.3.2012,  18:39 Найти цитируемый пост)
echo "туляля" > /dev/ttyS0
cat /dev/ttyS0  читаем ответ 


И ВСЁ???!! smile 

Автор: 500mhz 12.3.2012, 20:50
а что еше нада?

Автор: bilbobagginz 12.3.2012, 21:11
Цитата(Zerstroer @  12.3.2012,  19:48 Найти цитируемый пост)
И ВСЁ???!!

можно "по-умному": написать драйвер, который будет это устройство ловить, и писать "туляля", время от времени делать диагностику, проверять статус, и т.д. и т.п. вопрос нужды и свободного времени.
в принципе, посл. порт - устройство "последовательное", т.е. символьное.
работа - посылаешь команды (символы), получаешь результат.
для настройки таймингов и т.д. пишут драйвер.
после узнавание подсистемой USB он настроит тебе устойство оптимально по спекам, и т.д.
желательно реализовывать все по принципу read/write/ioctl

Автор: 500mhz 12.3.2012, 21:56
для настройки есть setserial

Автор: Zerstroer 13.3.2012, 11:20
jhonyxakep, спасибо за подкинутый minicom
500mhz, спасибо за примерчик с echo
bilbobagginz, спасибо за проявленное внимание к вопросу.
Как раз именно драйвер устройства я писать и планирую. Но, чуток попозже. Нужно освоиться с COM портом вообще, так как отродясь с железками не работал. 
Это будет отдельная тема.
Вопрос.
Чем отличается драйвер устройства от библиотеки, предназначенной для работы с этим устройством? Планирую написание программы, для опроса определенных параметров с устройства, реализовывать собираюсь в виде библиотеки. Спрашиваю, потому-что делаю это впервые.

Автор: 500mhz 13.3.2012, 12:09
Вопрос, а нужен ли именно драйвер?
Вообще библиотека это загружаемый модуль в адресное пространство процесса и соответственно имеет те же самые привилегии что и процесс.
А драйвер (в линюксе называется LKM - loadable kernel module) работает в пространстве кернела и соответственно имеет наивысшие привилегии, так что получить кернел паник при ошибке - запросто.
В вашем случае думаю достаточно просто библиотеки так как драйвера СОМ портов уже присутствуют в системе.

Автор: Zerstroer 13.3.2012, 12:56
500mhz, вы правы, буду реализовывать в виде библиотеки - в драйвере никакой острой необходимости нет.
Сейчас балуюсь с com-портом. Тестирую соединением напрямую 2-го и 3-го контакта порта.
Кстати, узнал, что для работы нужно было добавить пользователя в группу dialout.
Программка CuteCom - всё делает правильно: всё, что отправляю на input - возвращает в output.
Как аналогичные действия произвести с помощью echo/cat?
Сейчас действия такие:
0. Закорачиваю pin 2 и pin 3 на COM порте.
1. Открываю параллельно 2 консоли. 
2. В первой пишу cat /dev/ttyUSB0
3. Во второй консоли пишу: echo "h" > /dev/ttyUSB0
4. Проверяю первую консоль - ничего не происходит, ничего не ловится. А хотелось бы, что бы поймалось.

Автор: 500mhz 13.3.2012, 13:48
проводок чтоль припаяли?

Автор: Zerstroer 13.3.2012, 14:12
Цитата(500mhz @  13.3.2012,  11:48 Найти цитируемый пост)
проводок чтоль припаяли? 

Да. Медной склепочкой два контакта соединил. 

Автор: 500mhz 13.3.2012, 14:29
Ну так а зачем вам echo / cat ? Если CuteCom работает.

Автор: Zerstroer 13.3.2012, 14:52
Цитата(500mhz @  13.3.2012,  12:29 Найти цитируемый пост)
Ну так а зачем вам echo / cat ? Если CuteCom работает. 


Причины 3:
1. Самообразование (прим: читать - шило в заднице)
2. На случай войны (если вдруг иксы не подымутся и пользоваться только базовой системой придется, без minicom и cutecom)
3. Через echo/cat вроде бы общеизвестный и очевидный способ. Хочется его все таки проверить самостоятельно.

Автор: 500mhz 13.3.2012, 15:09
ну фиг знает что там echo/cat
попробуй echo отправить а в CuteCom поймать или наоборот )

Автор: rsm 13.3.2012, 17:09
Цитата(Zerstroer @  13.3.2012,  14:56 Найти цитируемый пост)
Проверяю первую консоль - ничего не происходит, ничего не ловится. А хотелось бы, что бы поймалось

В этом случае проблема обычно в том, что для приёма/передачи данных требуется программное либо аппаратное управление потоком. В последнем случае используются сигналы CTS/RTS, установку/снятие которых нужно обеспечить аппаратно. Вообще, есть великий мануал по RS-232: http://digilander.libero.it/robang/rubrica/serial.htm (http://linuxland.itam.nsc.ru/misc/other19/index.html). Он покрывает почти 100% всех возникающих вопросов. И не стоит обращать внимание, что мануалу уже 13 лет - API работы с RS-232 нисколько не изменился smile

Автор: 500mhz 13.3.2012, 18:32
я так думаю что просто при echo /cat у нас 2 процесса и они между собой не синхронизируют посылку и прием вот и все

Автор: Zerstroer 13.3.2012, 21:41
В общем, вопрос можно закрывать.
Итог обсуждения:
в Debian для удобной и простой работы с Com-портом штатными средствами хорошо подходит - cutecom.

Всем еще раз спасибо.
Вдохновлен.

Автор: jhonyxakep 14.3.2012, 12:17
Кстати насчет драйвера и модуля.

Все пишется на си обычными функциями файлового ввода и вывода. Практически парой кликов мыши такую программу можно превратить в сокетное приложение, или заставить работать через пайп. Рекомендую поковырять все-таки язычок, и попробовать работать через него.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)