Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
15-1235981006
БарЛог
2009-03-02 11:03
2009.05.03
Может ли скрипт узнать, для какой страницы его вызывают?


2-1237554328
StriderMan
2009-03-20 16:05
2009.05.03
Действия над группой объектов


2-1237207108
Дмитрий
2009-03-16 15:38
2009.05.03
CheckListBox с Columns = 2 без Horizontal Scroll


15-1236029401
Юрий
2009-03-03 00:30
2009.05.03
С днем рождения ! 3 марта 2009 вторник


15-1235991795
alex_r
2009-03-02 14:03
2009.05.03
calligraphic pen




   Наверх