【发布时间】:2018-03-15 22:41:40
【问题描述】:
我正在使用组件 TComPort 通过带有 Delphi Berlin 10.1 的 COM 端口读取/写入 RFID 阅读器设备
我是这样写命令的:
procedure TForm1.Button4Click(Sender: TObject);
begin
ComPort1.WriteStr(#$5A#$FE#$01#$00#$0D#$0A);
end;
这就是我从设备读取响应的方式:
procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: string);
var
str2:String;
I:Integer;
begin
for I:=1 to length(str) do
begin
str2 := str2+IntToHex(Byte(str[I]),2)+' ';
end;
memo1.lines.add(str2);
end;
响应为D5 D5 03 00 82 D2 04 58 01 0D 0A
但是,如何将该十六进制转换为人类可读的字符串,例如 1234?
【问题讨论】:
-
您能否解释一下我们将如何以 1234 结束该十六进制值? Calc.exe 报告十进制的 1234 是 $4D2。
-
1234 是十六进制的 $04D2。如果第 6 对是 lsb,第 7 对是 msb,那么剩下的就可以算出来了。
-
ISTM 认为末尾的
0D 0A可能是 CR+LF,但我不知道其他字节是什么意思。 -
你肯定有协议描述。
OD 0A是 CR LF,它通常终止一条消息。 -
我从分析仪输出中添加了一张图片