Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.03;
Скачать: CL | DM;

Вниз

Состояние буфера СОМ порта   Найти похожие ветки 

 
Darvin   (2009-03-18 11:06) [0]

Здравтвуйте!
Я работаю с СОМ портом с помощью функций CreateFile, ReadFile, WriteFile. Хотелось бы перед чтением данных из порта узнать количество байт в очереди СОМ порта. С помощью какой функции это можно сделать?


 
Slym ©   (2009-03-18 11:42) [1]

ClearCommError(HANDLE,err,Stat)?


 
Darvin   (2009-03-18 11:51) [2]

>Slym
Получается, я перед чтением должен проверить так:

ClearCommError(HANDLE,err,Stat);
if Stat.cbInQue > N then  // N - необходимое кол-во байт для чтения
 ReadFile(HANDLE,Buffer, N, NRead, Nil);

И это будет прочитано без задержек на таймауты так , как N байт уже есть во входном буфере?


 
Slym ©   (2009-03-18 11:55) [3]

Darvin   (18.03.09 11:51) [2]
все что в буфере прочитается без усыпления потока...


 
Slym ©   (2009-03-18 11:56) [4]

Darvin   (18.03.09 11:51) [2]
и вообще чтото не здоровое ты замыслил... Какая цель?


 
Darvin   (2009-03-18 11:59) [5]

вычитать всеь буфер и при этом не висеть в таймаутах при чтении


 
Slym ©   (2009-03-18 12:02) [6]

Darvin   (18.03.09 11:59) [5]
это средство... а цель не обозначена... может менее ректально мона сделать


 
Darvin   (2009-03-18 13:09) [7]

чтение из устройства.. запросный протокол... я должен после запроса вычитать данные... количество байт ответа может быть разным... я должен вычитать ответ одной процедурой чтения, желательно без таймаутов


 
Сергей М. ©   (2009-03-18 13:21) [8]


> вычитать ответ одной процедурой чтения


В смысле одним-единственным вызовом ReadFile ?


 
Darvin   (2009-03-18 13:25) [9]

да


 
Slym ©   (2009-03-18 14:27) [10]

а зачем?
все протоколы основаны на таймаутах ограничителях или на предвыставленной длинне ответа...
одним-единственным вызовом ReadFile - это лечение не в том месте


 
Darvin   (2009-03-18 14:36) [11]

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


 
Сергей М. ©   (2009-03-18 14:51) [12]


> хотелось бы без задержек


О каких "задержках" ты говоришь ?
О блокировании вызывающего потока на время выполнения ReadFile ?

Ну так ничто же не мешает задействовать неблокирующий асинхронный режим ввод/вывода  ..


 
Darvin   (2009-03-18 14:55) [13]

>Ну так ничто же не мешает задействовать неблокирующий асинхронный режим ввод/вывода  ..
Отсюда можно подробнее, если можно ссылочку


 
Сергей М. ©   (2009-03-18 14:58) [14]

см. стандартную справку по CreateFile и флагу FILE_FLAG_OVERLAPPED


 
Darvin   (2009-03-18 15:06) [15]

спасибо, буду копать


 
Slym ©   (2009-03-18 18:40) [16]

Darvin   (18.03.09 14:36) [11]
псевдореального

?????????
тупо смотреть сколько в буфере? - это не реалтайм...
сирано паток будет спать, когда системе вздумается... почему бы не поспать в ожидании данных  с порта?



Страницы: 1 вся ветка

Текущий архив: 2009.05.03;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
15-1236085055
Mephisto
2009-03-03 15:57
2009.05.03
Services


2-1237375660
ply
2009-03-18 14:27
2009.05.03
MessageBox без звука. Как?


2-1237724218
DDR2
2009-03-22 15:16
2009.05.03
Заблокировать Enter


2-1237280245
Mozgan
2009-03-17 11:57
2009.05.03
Два события на одну кнопку


2-1237298818
chubb
2009-03-17 17:06
2009.05.03
запретить два пробела подряд