|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как определить пуст ли буфер 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. Последний раз редактировалось zagma, 12.03.2013 в 20:27. |