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 и получите буфер считанных данных, после того как вы сможете проанализировать его в соответствии со всем, что вам нужно.

Другие вопросы по тегам