Показать сообщение отдельно
Старый 20.08.2004, 08:07   #27  
Sirius is offline
Sirius
Участник
 
151 / 10 (1) +
Регистрация: 10.01.2004
Адрес: Новосибирск
у меня вот еще вопрос какой возник.

я вообще первый раз столкнулся с программированием com-порта.
и так сказать опытным путем вроде вычислил способ извлечения полученных данных.

при получении информации на com-порт ActiveX-компонента NetComm (кстати, как я понял - она полный аналог MSComm) генерирует события в следующем порядке:

comEvDSR (изменение в Data Set Ready. DSR=true)

потом одно или несколько событий:

comEvReceive (здесь все также DSR=true)

а после них опять:

comEvDSR (DSR=false).

Так вот, во время первого события comEvDSR и при каждом comEvReceive, я считываю данные, которые находятся в буфере приемки ActiveX'а. После того, как отловлено второе событие comEvDSR считываение данных заканчиваю, и то, что собрал в предыдущих событиях, объявляю результатом.

Вроде бы все работает нормально, но иногда проскакивает следующий глюк:

Обычно, когда срабатывает второе событие comEvDSR, буфер ActiveX с данными пуст. Но, иногда (я не могу понять закономерность) там оказываются данные... :-/

Вообщем, что я не правильно делаю? Может не учитываю какую-нибудь особенность?

PS. Если знаете где сколь-нибудь толково описано как работать с com-портом, дайте пожалуйста ссылочку.