2017-01-20 85 views
0

我有一个支票打印机,我想通过COM端口和经营德尔福7连接。COM端口命令CRC XOR

我有与串行端口监视器中提取一个命令:

STX “PIRI(781” FS NULL ETX “0B”至极是02 50 49 52 49 28 37 38 31 1C 00 03 30 42六角

的手册说以下内容:

CRC(它是ETX后的最后两位数字) - 分组校验和它 通过以下算法计算:执行XOR包含ETX的块的每个 字节通过排除STX。 校验和的数据占用两个字节,是十六进制计算系统中数字的 的符号表示形式。

我试过一个ONLINE CRC计算器,并返回一个1B结果和一个27数字。

  • 怎么办?对于“PIRI(781” FS NULL ETX应该0B
+1

停止使用“在线CRC计算器“,他们都没有实现这种校验和方法,并开始编写代码。 –

+0

@HansPassant我想知道从哪里开始,我必须找到每个符号的字节,然后进行异或运算吗? – SovereignSun

回答

3

文档错误地识别的检查值作为CRC,它不是,它只是异或的所提到的字节。 50 49 52 49 28 37 38 31 1c 00 03是0b,然后将0b转换为十六进制(大写B,即0B),并得到30 42.

+0

对。 但我该怎么做?我一直在网上计算器保持1B。 – SovereignSun

+0

您只需使用您正在使用的任何语言的排他或操作。在Delphi中简单的“xor”。正如我所说,这不是CRC_。您不能使用在线CRC计算器来计算不是CRC的内容。 –