Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Очистить буфер порта [D7, WinXP]


Shamansky ©   (2005-02-13 21:57:00) 

Доброго времени суток, возника проблема: работаю с компортом, на него приходят данные, но их надо считывать только после конкретного символа. Специально создаю поток, который слушает порт на поступление DCB.EvtChar='U', на его поступление реагирует нормально, но проблема в следующем: с порта считывается все, что приходило до этого символа, как очистить буфер по поступлению символа не могу разобраться, очистка буфера вместе с символом 'U' не критично, необходимо считать следующие 18 символов.


Marser   (2005-02-15 11:39:00) [1]


> Shamansky   (14.02.05 16:11) [4]

Сначала лучше убить поток, а затем уж закрывать порт.


Shamansky   (2005-02-14 16:11:00) [2]

Так я это уже нашел и ставлю в качестве символа-события - последний символ посылки, а потом уже чищу буфер.
Слушайте в процессе возникла еще одна проблема: чтение идет в отдельном потоке и  при попытке закрыть порт и потом освободить поток система очень сильно задумывается, причем приложение не значится как зависшее, а процессор занят на все 100%. Порт открываю в асинхронном режиме.


ECM   (2005-02-14 15:15:00) [3]

При определенных настройках порта - есть риск при PurgeComm потерять не только то, что было до спец. символа - но и после...
ИМХО: Лучше вычитывать все во внутренний буфер - а затем
последовательно разгребать...


Marser   (2005-02-14 12:15:00) [4]

purgecomm(handle,PURGE_RXCLEAR)

Прибытие символа это либо событие deChar waitcommevent, либо в ClearCommError одно из полей выходной струтуры типа COMSTAT

>tesseract
Перед такими советами желательно сверяться с хелпом


tesseract   (2005-02-14 11:12:00) [5]

смотри PURGE_COM()


Наверх

Титульная страница Поиск, карта сайта Написать письмо