首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TDataPacket和TComPort一直等待,直到收到数据包

TDataPacket和TComPort一直等待,直到收到数据包
EN

Stack Overflow用户
提问于 2013-05-31 00:09:19
回答 1查看 866关注 0票数 0

我在做ecr软件。

该软件与具有com端口的硬件进行通信。

我用Delphi语言编程,用的是TComPort和TDataPacket组件。

我有一个问题(我想,或者我可能不理解tdatapacket是如何工作的)。

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

打印的协议如下:

我: ENQ

硬件: ACK

Me: STX + string + checksum(string) + ETX

硬件: ACK

Me: STX + string + checksum(string) + ETX (结束字符串)

HW:确认并打印收据

我写了这段代码:

代码语言:javascript
复制
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;

在数据包事件上的数据包上是这样的:

代码语言:javascript
复制
procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: string);
begin
  ack := Str;
end;

但是如果我尝试打印ack的值,我总是有空字符串,我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2013-06-07 00:23:15

尝试使用ComPort.Read并获取readed data buffer,然后根据需要对其进行解析。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16841016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档