2009-05-21 75 views
4

计算块检查字符(BCC)我与设备通过串行通过SerialPort类.NET的通信和基于第三方设备规范要求,我需要计算“块校验字符”。我被告知的唯一信息是它是一个异或操作(XOR),它必须在所有字符上执行。串行通信

所以,如果我有字符串“鲍勃,001”怎么会一个计算BCC?

回答

3

最有可能的是基于字符的XOR。你需要让他们的样本来验证,但最校验通常在0

结束了所以,对于XOR校验和,你会包:

Bob,001X 

,其中X是校验和当你XOR所有这些字符在一起,你会最有可能获得0.1

因此,制定出X,在“鲍勃,001”你刚才XOR所有字符。这就是凭借这样的事实N个XOR N是始终为0,对于任何N.

现在它可能是X将是两个十六进制字符,如果你要允许有字母数字是。这就是为什么您需要样品数据(所以我们可以解决它)或适当的规格(应该由设备制造商提供)。

什么你指的是实际的设备?它可能在网上有信息显示如何做到这一点。

基于更新:

这是一个阿玛迪斯招待费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 

校验的位置可能会有所不同,而事实上,它的计算方法可能有所不同太尽管这样做的可能性很小。如果没有样本数据或供应商的进一步信息,我认为不能做更多的事情。粗略搜索互联网没有提供技术细节。

+0

这是一款Amadeus Hospitality PMS设备。他们并不是说它必须在所有字符上执行。不包括STX和ETX。 – GONeale 2009-05-21 23:22:08