【问题标题】:COM Port Commands CRC XORCOM 端口命令 CRC XOR
【发布时间】:2017-01-20 13:13:33
【问题描述】:

我有一台检查打印机,我想通过COM端口Delphi 7中连接并操作。

我有一个使用串行端口监视器提取的命令:

STX "PIRI(781" FS NULL ETX "0B"02 50 49 52 49 28 37 38 31 1c 00 03 30 42 十六进制

手册说:

CRC(即 ETX 之后的最后两位数字)- 数据包校验和。它 由以下算法计算:对每个执行 XOR 通过排除 STX,包括 ETX 的块的字节。的数据 校验和占用两个字节,是 十六进制计算系统中的数字。

我尝试使用在线 CRC 计算器并返回 1B 结果和 27 数字。

  • 怎么做?对于 "PIRI(781" FS NULL ETX 它应该是 0B

【问题讨论】:

  • 停止使用“在线CRC计算器”,他们都没有实现这个校验和方法,开始写代码。
  • @HansPassant 我试图了解从哪里开始。我必须找到每个符号的字节,然后对其进行异或吗?

标签: delphi serial-port delphi-7


【解决方案1】:

文档错误地将校验值标识为 CRC。它不是。它只是注释字节的异或。 50 49 52 49 28 37 38 31 1c 00 03 的异或是 0b。然后将 0b 转换为十六进制(使用大写 B,即 0B),得到 30 42。

【讨论】:

  • 你是对的。但是我该怎么做呢?我总是在在线计算器中获得 1B。
  • 您只需在所使用的任何语言中使用异或操作即可。只需在 Delphi 中“异或”。正如我所说的这不是CRC。您不能使用在线 CRC 计算器来计算不是 CRC 的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
相关资源
最近更新 更多