![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
mik19 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 30.11.2007 Репутация: нет Всего: нет |
Доброго всем дня, у меня тоже возникла подобная задача, но мне не просто считать данные нужно, а немного посложнее мне нужно его мониторить, и в случае изменений, послать команду в шел (при определенных условиях). Другими словами мне нужен демон, который будет постоянно мониторить СОМ порт, и при поступлении данных, скажем, посылать в шел ансишный код буквы F.
|
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
самый простой вариант настроить таймаут на чтение и в отдельно потоке постоянно пытаться проичтать из порта
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
select()/poll()/epoll()
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Все эти вещи нужно вводить (DCB, COMMSTATE etc.), но только для Windows, чтобы система разрешила работать с COM портом, как нам надо. В линуксе этих вещей в принципе нет, т.к. порт по сути - папка/файл. Если попробовать не просто через fopen, а через socket поработать, то может быть, там что-то как-то и придется куда-то указывать. Правда, не пробовал. У меня в либе fopen висит...
Просто тайм-аут может не прокатить. Все зависит какой девайс сидит на порте, и по какому протоколу он работает RS-232, 485, т.к. в этом случае могут быть косяки из-за того, что, дисикнт возникает, короче смещение окна чтения. |
||||
|
|||||
Tiffany |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 23.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Вот тут нашла в своей проге кусочек, вроде то, что ты просил (если я прально поняла). Тока он на QT, но не страшно - переделать недолго =)
После этих манипуляций в "buf" будут данные с порта, делай с ними что хошь. А ваще читай man select и man termios (настройки порта) |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
Тут возникла задача.
При возникновении прерыванию от lpt порта передавать данные на com-порт прям из драйвера lpt-шного прерывания. Копаюсь в разных примерах драйверов. ![]() Можно в этом случае безнаказанно stdio.h подключить к драйверу прерывания от lpt? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
нет -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
А может что-нибудь ещё посоветуете?
|
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
Что-то я нашёл.
В ответ на последнюю строку (unsigned int ccflag = *(tty->termios->c_cflag);) мне выдаётся сообщение: /home/man/model2_my/lpt_interrupt/skeleton.c: In function ‘skeleton_kernel_initport’: /home/man/model2_my/lpt_interrupt/skeleton.c:63: error: dereferencing pointer to incomplete type Никто не знает, что с этим делать? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |