Страница 1 из 1
Состояние бита четности СОМ-порта
Добавлено: 08 фев 2006, 12:01
SokolovS
Подскажите, как опросить состояние бита четности полученного байта по каналу RS232?
Дело в том, что передающая сторона использует его в качестве информационного
Точнее, первый байт пачки имеет его выставленным, а другие - сброшенным. С помощью этого бита нужно определить начало пачки...
В любом микроконтроллере распознать это - плевое дело, а как сделать это стандартным портом компьютера - ума не приложу!
Очень надо, а городить приставку на микроконтроллере нежелательно!
Добавлено: 09 фев 2006, 15:42
Eugie
ИМХО, это в общем случае невозможно, т.к. биты четности и стоп-биты должны отсекаться на уровне драйвера. Или, во всяком случае, такая возможность должна поддерживаться опять-таки драйвером. На какой платформе работаете? Если на Win32, см. в сторону Communications Events и в частности CE_RXPARITY.
Добавлено: 10 фев 2006, 17:08
SokolovS
УРА! Я наконец победил этот самый бит четности.
Правда, это не под WIN32, а под операционкой собственного производства.
Думаю, что можно и под виндами его проверить.
А метод прост, как батон

Если выставить фиксацию четности, например в 1, то при приходе байта со значением 0 контроллер генерит сразу два прерывания:
первое - по ошибке четности (6 в статусном регистре), а уж потом - по приходу байта.
Если по прерыванию ошибки четности выставить флажок - то при приеме байта наличие этого флажка говорит о состоянии 9-го разряда. Только после этого нужно флажок не забыть сбросить.
Только лучше отключить FIFO, правда с ним тоже работает, но не уверен, что всегда.
В зависимости от установки фиксации четности в 0 или 1 прерывание по ошибке генерится либо при 1, либо при 0 в принятом бите четности.
Добавлено: 10 фев 2006, 17:17
Eugie
Похоже, эвенты так и работают.
А что за 'операционка собственного производства'? Сами пишете или чужую доводите до ума?

Добавлено: 13 фев 2006, 15:47
SokolovS
Сами написали. Чужую доводить - себе дороже
Зато получилась маленькая - да удаленькая. Так называемая Embedded Real-Time OS.
Добавлено: 15 фев 2006, 14:59
Hawk
Вообще в виндах есть апишная функция SetCommConfig. Где куча параметров в том числе и на счет бита четности. Сам детально не разбирался, ено думаю можно что-нить придумать там