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