2016-08-05 114 views
0

我想發送數據到TCP 105電路。如何解決CRC(循環冗餘校驗)計算?

以下十六進制命令行發送數據123:

7F30001103 313233 45D4

這裏,313233是123十六進制表示和45D4是CRC值。

我在計算CRC後得到這個45D4的問題。在網上搜索了很長時間之後,我得到了不同標準中的其他CRC值。但是這些CRC值不被我的LED顯示電路所接受。

請幫我瞭解如何從7F30001103313233獲得45D4。

在此先感謝。

+0

我用8字節的方法得到'0x9A8F'。你應該計算8字節的CRC還是隻有一個subsdet?即使使用相同的算法,CRC依賴於您正在使用的多項式。 CRC逆轉,這是一個棘手的! –

+0

我已經用0x9A8F測試過,但沒有成功。可能是它的CRC-16。 CRC逆轉將是D445而不是45D4。 –

回答

0

該命令匹配稱爲CRC-16/CMS的算法。

$ reveng -w 16 -s 7f30001103313233d445 
width=16 poly=0x8005 init=0xffff refin=false refout=false xorout=0x0000 ch 
eck=0xaee7 name="CRC-16/CMS" 

這是可能正確的算法,因爲你只給一個碼字(因爲我假設CRC已經字節交換。)

要生成的代碼計算這個CRC,例如參見Mark Adler的crcany工具。

+0

感謝這麼好的回覆Regregex。我希望這會起作用,我會嘗試。 –