TDataPacket и TComPort ждут получения пакета
Я работаю над программным обеспечением ECR.
Это программное обеспечение взаимодействует с оборудованием, имеющим COM-порт.
Я программирую на Delphi и использую компоненты TComPort и TDataPacket.
У меня есть проблема (я думаю, или, может быть, я не понимаю, как работает tdatapacket).
Для распечатки квитанции я должен отправить аппаратному оборудованию некоторую строку, отформатированную по правилам протокола.
Протокол для печати это:
Я: ENQ
HW: ACK
Я: STX + строка + контрольная сумма (строка) + ETX
HW: ACK
Я: STX + строка + контрольная сумма (строка) + ETX (закрывающая строка)
HW: ACK и распечатать квитанцию
Я написал этот код:
procedure TForm1.Button4Click(Sender: TObject);
var
snd, ckSum: String;
checkSum : Byte;
begin
if ack = #$06 then
begin
snd := '5/1/0.00//1.000000/SALDO/';
checkSum := calcCheckSum(snd);
ckSum := formatfloat('00',checkSum);
ComPort.WriteStr(#$02 + snd + ckSum + #$03);
end;
end;
и на пакете данных на событие пакета это:
procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: string);
begin
ack := Str;
end;
Но если я пытаюсь напечатать значение ack, у меня всегда есть пустая строка, что я делаю неправильно?
1 ответ
Попробуйте использовать ComPort.Read и получите буфер считанных данных, после того как вы сможете проанализировать его в соответствии со всем, что вам нужно.