计算串行通信块校验字符(BCC)
-
23-08-2019 - |
题
我正在与一个设备经由经由SerialPort类的.NET串行通信,并基于第三方设备规范要求我需要计算一个“块校验字符”。据我所知的唯一信息是,它是一个的异或运算(XOR)并它必须对所有的字符来进行。
所以,如果我有字符串“鲍勃,001”怎么会一个计算BCC?
解决方案
最有可能的是基于字符XOR。你需要让他们的样本来验证,但最校验通常在0结束。
因此,对于XOR校验和,你将有包:
Bob,001X
,其中X是校验和,当你XOR所有这些字符在一起,你会最有可能获得0。
因此,制定出X,在“鲍勃,001”你刚才XOR所有字符。这是由于以下事实:N个XOR N为始终为0,对任意n
现在它可能是X将是两个十六进制字符,如果你要允许有字母数字是。这就是为什么你需要或者样本数据(这样我们就可以做出来),或适当的规范(这应该由设备制造商提供)。
什么的是的你指的是实际的设备?这可能是有示范如何做它在网络上的信息。
<强>基于更新:强>
这是一个Amadeus的款待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
校验的位置可以变化,并且,事实上,它是计算尽管这不太可能可以改变太。我不认为更可以在没有样本数据或从供应商的详细信息来完成。粗略地搜索互联网的结果显示,没有技术细节。
不隶属于 StackOverflow