0

我正在开发 ecr 软件。

该软件与具有 com 端口的硬件对话。

我在 delphi 中编程,我正在使用 TComPort 和 TDataPacket 组件。

我有一个问题(我想,或者我不明白 tdatapacket 是如何工作的)。

为了打印收据,我必须向硬件发送一些由协议规则格式化的字符串。

打印的协议是这样的:

我:ENQ

硬件:确认

我:STX + 字符串 + 校验和(字符串)+ ETX

硬件:确认

我:STX + 字符串 + 校验和(字符串)+ ETX(结束字符串)

HW:确认并打印收据

我写了这段代码:

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 的值,我总是有空字符串,我做错了什么?

4

1 回答 1

0

尝试使用 ComPort.Read 并获取读取的数据缓冲区,之后您可以根据需要对其进行解析。

于 2013-06-06T16:23:15.117 回答