我正在与一个设备经由经由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

校验的位置可以变化,并且,事实上,它是计算尽管这不太可能可以改变太。我不认为更可以在没有样本数据或从供应商的详细信息来完成。粗略地搜索互联网的结果显示,没有技术细节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top