我在做ecr软件。
该软件与具有com端口的硬件进行通信。
我用Delphi语言编程,用的是TComPort和TDataPacket组件。
我有一个问题(我想,或者我可能不理解tdatapacket是如何工作的)。
为了打印收据,我必须向硬件发送一些由协议规则格式化的字符串。
打印的协议如下:
我: ENQ
硬件: ACK
Me: STX + string + checksum(string) + ETX
硬件: ACK
Me: STX + string + checksum(string) + 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的值,我总是有空字符串,我做错了什么?
发布于 2013-06-07 00:23:15
尝试使用ComPort.Read并获取readed data buffer,然后根据需要对其进行解析。
https://stackoverflow.com/questions/16841016
复制相似问题