
10.07.2009, 15:24
|
 |
Прохожий
|
|
Регистрация: 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: Пользуемся тегами!!!
|