Показать сообщение отдельно
  #1  
Старый 12.03.2013, 19:37
zagma zagma вне форума
Прохожий
 
Регистрация: 12.03.2013
Сообщения: 3
Репутация: 10
По умолчанию Как определить пуст ли буфер Com порта

Помогите пожалуйста. Я не совсем ещё разбираюсь в Delphi, "не разбираюсь совсем" тоже подходит. Уверен, что Синтаксис, процедура, параметры и Люцифер синонимы. Но очень пытаюсь разубедиться.
Как определить пустой буфер или там есть данные. Собственно на ком порте заглушка с соединёнными RX-TX. То есть, то что выдал, сразу попадает в буфер назад. На компе запущен монитор ,которым это дело контролируется . Остальные сигналы никак не используются , не участвуют и не предполагается использовать. На трёх проводах будет висеть контроллер , сливающий и принимающий в час по чайной ложке .

Вот эээ... "код" Delphi.

Код:
var

  hFile :THandle; 
  ByteWritten : cardinal;
  temp :string; // это будет отправляться
  namefile:Pchar; // имя файла
  COMStat: TCOMStat; // переменная для определения данных в буфере
  xn: THandle;

myBuff:string[11];  

begin
  temp:='Hello World!'; // строка для записи в файл
  namefile:='COM3';      // Имя файла для создания

  hFile:= CreateFile(namefile,GENERIC_READ or GENERIC_WRITE,
    FILE_SHARE_READ or FILE_SHARE_WRITE,nil,CREATE_ALWAYS,0,0); // Открывается порт 

  WriteFile(hFile, temp[1], Length(temp),ByteWritten, nil); // пишется строка в порт

ClearCommError(hFile,xn,@COMStat); //получаем    состояние    COM в   StatCOM
xn:=COMStat.cbInQue;  // в  cblnQue должно вроде быть количество  байтов в  буфере 

ShowMessage(IntTostr(xn)) ;    // показывается сколько ж там  - фигсдва... НОЛЬ

ReadFile(hFile,MyBuff,SizeOf(MyBuff),ByteReaded,Nil); // А ТУТ ПРЕЛЬСТИВО ВЫЯСНЯЕТСЯ  - ЧТО ВСЯ СТРОКА ТАМ ЛЕЖИТ.

  CloseHandle(hFile); // ипец 

end.
Ответить с цитированием