0

私はecrソフトウェアに取り組んでいます。

このソフトウェアは、com ポートを持つハードウェアと通信します。

Delphi でプログラミングしており、TComPort と TDataPacket コンポーネントを使用しています。

問題があります (tdatapacket がどのように機能するかを理解していないと思います)。

レシートを印刷するには、プロトコル ルールによってフォーマットされた文字列をハードウェアに送信する必要があります。

印刷のプロトコルは次のとおりです。

私:ENQ

ハードウェア: 確認

私: STX + 文字列 + チェックサム (文字列) + ETX

ハードウェア: 確認

私: 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 の値を出力しようとすると、常に空の文字列が表示されます。何が間違っているのでしょうか?

4

1 に答える 1

0

ComPort.Read を使用してみて、必要に応じて解析できるようになったら、読み取ったデータ バッファーを取得します。

于 2013-06-06T16:23:15.117 に答える