Форум: "WinAPI";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизОчистить буфер порта Найти похожие ветки
← →
Shamansky (2005-02-13 21:57) [0]Доброго времени суток, возника проблема: работаю с компортом, на него приходят данные, но их надо считывать только после конкретного символа. Специально создаю поток, который слушает порт на поступление DCB.EvtChar="U", на его поступление реагирует нормально, но проблема в следующем: с порта считывается все, что приходило до этого символа, как очистить буфер по поступлению символа не могу разобраться, очистка буфера вместе с символом "U" не критично, необходимо считать следующие 18 символов.
← →
tesseract (2005-02-14 11:12) [1]смотри PURGE_COM()
← →
Marser © (2005-02-14 12:15) [2]purgecomm(handle,PURGE_RXCLEAR)
Прибытие символа это либо событие deChar waitcommevent, либо в ClearCommError одно из полей выходной струтуры типа COMSTAT
>tesseract
Перед такими советами желательно сверяться с хелпом
← →
ECM © (2005-02-14 15:15) [3]При определенных настройках порта - есть риск при PurgeComm потерять не только то, что было до спец. символа - но и после...
ИМХО: Лучше вычитывать все во внутренний буфер - а затем
последовательно разгребать...
← →
Shamansky (2005-02-14 16:11) [4]Так я это уже нашел и ставлю в качестве символа-события - последний символ посылки, а потом уже чищу буфер.
Слушайте в процессе возникла еще одна проблема: чтение идет в отдельном потоке и при попытке закрыть порт и потом освободить поток система очень сильно задумывается, причем приложение не значится как зависшее, а процессор занят на все 100%. Порт открываю в асинхронном режиме.
← →
Marser © (2005-02-15 11:39) [5]
> Shamansky (14.02.05 16:11) [4]
Сначала лучше убить поток, а затем уж закрывать порт.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c