Главная страница
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.012 c
11-1200042094
=BuckLr=
2008-01-11 12:01
2009.05.03
Нашествие спамеров на форум


2-1237549858
Pavel
2009-03-20 14:50
2009.05.03
Работа с WordDocument


2-1238008511
cyber-pilot
2009-03-25 22:15
2009.05.03
Количество единиц в байте


2-1237842664
alexander-rsh
2009-03-24 00:11
2009.05.03
Удаление папки


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