串行通信
问题描述:
计算块检查字符(BCC)我与设备通过串行通过SerialPort类.NET的通信和基于第三方设备规范要求,我需要计算“块校验字符”。我被告知的唯一信息是它是一个异或操作(XOR),它必须在所有字符上执行。串行通信
所以,如果我有字符串“鲍勃,001”怎么会一个计算BCC?
答
最有可能的是基于字符的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
校验的位置可能会有所不同,而事实上,它的计算方法可能有所不同太尽管这样做的可能性很小。如果没有样本数据或供应商的进一步信息,我认为不能做更多的事情。粗略搜索互联网没有提供技术细节。
这是一款Amadeus Hospitality PMS设备。他们并不是说它必须在所有字符上执行。不包括STX和ETX。 – GONeale 2009-05-21 23:22:08