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