Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Получение модемных бит RTS/CTS, DTR/DSR по прерванию

17K
31 августа 2006 года
atels
6 / / 31.08.2006
Начну с того, что пишу на С++ прогу работы с одной железкой, обмен осуществляется с использованием сигналов RTS/CTS, DTR/DSR. Как известно ioctl() позволяет извлечь состояния этих сигналов, но только по опросу. Мне необходимо как можно скорее получеть состояния этих сигналов после их изменения. В книге Михаила Гука Аппаратные ср-ва ПК говорится о изменении состяния региста MSR UARTа - регистр состояния модема.
Назначение бит регистра MSR:
Бит 7 - DCD (Data Carrier Detect) - состояние линии DCD.
Бит 6 - Rl(Ring Indicator) - состояние линии Rl.
Бит 5 - DSR(Data Set Ready) - состояние линии DSR.
Бит 4 - CTS(Clear To Send) - состояние линии CTS.
Бит 3 - DDCD(Delta Data Carrier Detect) - изменение состояния DCD.
Бит 2 - TERI(Trailing Edge OfRing Indicator) -спад огибающей Rl (окончание звонка).
Бит 1 - DDSR (Delta Data Set Ready) - изменение состояния DSR.
Бит 0 - DCTS (Delta Clear To Send) - изменение состояния CTS.
Меня в данном случае интересуют биты 0,1,3. Нет ли в системных вызовах функций позволяющих получить сигнал(в смысле SIGALRM или SIGUSR) при изменении состояния этих трех бит регистра.
2
01 сентября 2006 года
squirL
5.6K / / 13.08.2003
[quote=atels]Как известно ioctl() позволяет извлечь состояния этих сигналов, но только по опросу. [/quote]
а вы хотите, чтобы порт вас уведомлял о событии? ИМХО, это невозможно. только проверять состояние нужных битов вручную
16K
02 сентября 2006 года
aragaer
25 / / 28.07.2006
Мне показалось или речь идет о COM-порте?

Глянул Гука - именно COM.

Последовательному порту можно сказать, чтобы он вызывал аппаратное прерывание в случае тех или иных событий:
- Получен байт
- Отправлен байт (трансмиттер пуст)
- Изменен статус линии (ошибка или разрыв)
- Изменен статус модема (CTS, DSR, RI или RLSD)

Как именно это делается ... передо мной вот текст открыт, но прочесть я его сейчас не в силах. Так или иначе - см документацию по биосу и конкретно по асинхронным портам.
17K
06 сентября 2006 года
atels
6 / / 31.08.2006
Смысл в том чтобы на использовать проверку состояния по опросу ioctl. Хочу попробовать создать модуль ядра который будет делать тоже самое, проверку состояния по опросу ioctl, но в режиме ядра должно выполняться быстрее. т.е. мой прикладной процесс сможет раньше отреагировать на него.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог