我通过 .NET 的 SerialPort 类通过串行与设备进行通信,并且根据第三方设备规范要求,我需要计算“块检查字符”。我被告知的唯一信息是,这是一个异或运算 (XOR)并且必须对所有角色执行。
那么,如果我有字符串“Bob,001”,将如何计算 BCC?
最有可能的是基于字符的异或。您需要获取它们的样本进行验证,但大多数校验和通常最终为 0。
因此,对于 XOR 校验和,您将获得数据包:
Bob,001X
其中 X 是校验和,当您将所有这些字符异或在一起时,很可能会得到 0。
因此,要计算出 X,您只需对“Bob,001”中的所有字符进行异或即可。这是因为对于任何 N,N xor N 始终为 0。
现在,如果您只允许使用字母数字,则 X 可能是两个十六进制字符。这就是为什么您需要示例数据(以便我们可以计算出来)或正确的规格(应由设备制造商提供)。
What is您所指的实际设备?网络上可能有信息显示如何做到这一点。
基于更新:
它是 Amadeus Hospitality PMS 设备。他们所说的并不是所有字符都必须执行。不包括 STX 和 ETX。
您需要获取一些示例数据来确认,但它可能是类似以下的数据流:
Running
Data ChkSum
====== =======
STX 02
B 42 42
o 6f 2d
b 62 4f
, 2c 63
0 30 53
0 30 63
1 31 52
4 52 00
ETX 03
校验和的位置可能会有所不同,事实上,它的计算也可能会有所不同,尽管这种情况的可能性要小得多。我认为如果没有供应商提供的样本数据或进一步信息,我们就无法做更多的事情。在互联网上粗略搜索没有发现任何技术细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)