| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > *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, 20:50 |
| а что еше нада? |
| Автор: bilbobagginz 12.3.2012, 21:11 |
можно "по-умному": написать драйвер, который будет это устройство ловить, и писать "туляля", время от времени делать диагностику, проверять статус, и т.д. и т.п. вопрос нужды и свободного времени. в принципе, посл. порт - устройство "последовательное", т.е. символьное. работа - посылаешь команды (символы), получаешь результат. для настройки таймингов и т.д. пишут драйвер. после узнавание подсистемой 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, 14:29 |
| Ну так а зачем вам echo / cat ? Если CuteCom работает. |
| Автор: Zerstroer 13.3.2012, 14:52 |
Причины 3: 1. Самообразование (прим: читать - шило в заднице) 2. На случай войны (если вдруг иксы не подымутся и пользоваться только базовой системой придется, без minicom и cutecom) 3. Через echo/cat вроде бы общеизвестный и очевидный способ. Хочется его все таки проверить самостоятельно. |
| Автор: 500mhz 13.3.2012, 15:09 |
| ну фиг знает что там echo/cat попробуй echo отправить а в CuteCom поймать или наоборот ) |
| Автор: 500mhz 13.3.2012, 18:32 |
| я так думаю что просто при echo /cat у нас 2 процесса и они между собой не синхронизируют посылку и прием вот и все |
| Автор: Zerstroer 13.3.2012, 21:41 |
| В общем, вопрос можно закрывать. Итог обсуждения: в Debian для удобной и простой работы с Com-портом штатными средствами хорошо подходит - cutecom. Всем еще раз спасибо. Вдохновлен. |
| Автор: jhonyxakep 14.3.2012, 12:17 |
| Кстати насчет драйвера и модуля. Все пишется на си обычными функциями файлового ввода и вывода. Практически парой кликов мыши такую программу можно превратить в сокетное приложение, или заставить работать через пайп. Рекомендую поковырять все-таки язычок, и попробовать работать через него. |