Показать сообщение отдельно
  #7  
Старый 10.07.2009, 15:24
Аватар для mihos
mihos mihos вне форума
Прохожий
 
Регистрация: 26.06.2009
Сообщения: 6
Репутация: 10
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   hCom, Errors, Bytes: Cardinal;
   DCB:TDCB;
   TheStruct:TCOMSTAT;
   buffer:string;
   buff4: array [0..3] of Byte;
   buff8: array [0..7] of Byte;
   pch : pchar;
   s : string;
begin

   hCom:=CreateFile('COM1',GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
   if hCom=INVALID_HANDLE_VALUE then begin
       //не удалось открыть
       ShowMessage('фиг');
       exit;
   end;

   SetupComm(hCom,1600,1600);

   GetCommState(hCom,DCB);

   with DCB do begin //настроить нужным образом
       BaudRate:=CBR_9600;
       ByteSize:=8;
       Parity:=NOPARITY;
       StopBits:=ONESTOPBIT;
   end;

   if not SetCommState(hCom,DCB) then begin
       //Порт не настроен. yнельзя работать
       ShowMessage('Порт не настроен');

       CloseHandle(hCom);
       exit;
   end;

   buff4[0]:=$0000;
   buff4[1]:=$0055;
   buff4[2]:=$0017;
   buff4[3]:=$005F;

  // buff:='000H 055H 017H 05FH';
   WriteFile(
       hCom,
       buff4,
       Length(buff4),
       Bytes,
       nil
       );

   ClearCommError(hCom,Errors,@TheStruct);

   if TheStruct.cbInQue>0 then begin //что-то пришло

       //SetLength(buffer,TheStruct.cbInQue);

       ReadFile(
           hCom,
           buff8,
           TheStruct.cbInQue,
           Bytes,
           nil
           );
      {
       Тут, если в отладчике посмотреть, buff8 имеет значение      (0,100,0,0,2,0,184,44)
       Это (я)уверен, что 1 тонна. Как в инструкции сказано, 2-ой,3-ий и 4-ый байт - это вес. Как мне её в строку или integer вытащить?          
       }
 
end;
   CloseHandle(hCom);

end;
Admin: Пользуемся тегами!!!
__________________
Работа: http://www.efrlab.ru
Дом: http://www.mihos.ru
Ответить с цитированием