2009-05-21 50 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