我通过SerialPort类的.NET通过串口与设备进行通信,并根据我需要计算“块检查字符”的第三方设备规范要求。我被告知的唯一信息是它是异或操作(XOR),必须对所有字符执行。
所以,如果我有字符串“Bob,001”,那么如何计算BCC?
答案 0 :(得分:3)
最有可能是基于字符的异或。您需要获取它们的样本以进行验证,但大多数校验和通常最终为0。
因此,对于XOR校验和,您将拥有该数据包:
Bob,001X
其中X是校验和,当你将所有这些字符排在一起时,你很可能得到0。
因此,要计算出X,你只需对“Bob,001”中的所有字符进行异或。这是因为对于任何N,N xor N总是0。
现在可能是X将是两个十六进制字符,如果你被允许拥有的是字母数字。这就是为什么你需要样本数据(所以我们可以解决)或正确的规范(应该由设备制造商提供)。
你所指的实际设备是什么?可能是网上的信息显示了如何操作。
基于更新:
这是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
校验和的位置可能会有所不同,实际上,它的计算方式可能会有所不同,但这种可能性要小得多。如果没有样本数据或来自供应商的进一步信息,我认为不能做更多的事情。粗略搜索互联网没有发现任何技术细节。