PHP串列埠通訊中計算crc16校驗碼

2021-10-18 21:42:44 字數 494 閱讀 5217

最近使用php開發串列埠通訊業務,在傳送485modbus命令時,基本都要計算crc16校驗碼。網上搜尋了很多文章,很多都計算的不對。本文記錄搜尋到的正確的計算方法。

**如下:

/**

* crc16計算

* 傳入字串格式:001624180101

* 返回值格式:[高8位,低8位]

*/function crc16($string)

else }}

$high8 = str_pad(dechex(floor($crc / 256)), 2, '0', str_pad_left);

$low8 = str_pad(dechex($crc % 256), 2, '0', str_pad_left);

return [$high8, $low8];

}

計算方法返回crc16校驗碼的高8位和低8位結果陣列,在實際開發中,需要根據具體的串列埠協議進行高低位組合。

串列埠通訊中CRC16校驗類的實現

一 crc16簡介 迴圈冗餘碼crc檢驗技術廣泛應用於測控及通訊領域。crc計算可以靠專用的硬體來實現,但是對於低成本的微控制器系統,在沒有硬體支援下實現crc檢驗,關鍵的問題就是如何通過軟體來完成crc計算,也就是crc演算法的問題。下面給出按位元組計算crc16的演算法。二 crc16演算法 其...

CRC16 串列埠校驗

近期對接客戶 利用串列埠通訊,其中要用到crc ibm 8005 校驗方式,網上搜尋好久,就是對不上計算器算出來的結果,最後通過乙個國外的開源crc 自己扣取成功 先貼上 include include include include include include include include ...

Modbus通訊CRC16校驗程式

modbus 通訊協議的crc 冗餘迴圈校驗碼 含2個位元組,即 16 位二進位制數。crc碼由傳送裝置計算,放置於所傳送資訊幀的尾部。接收裝置再重新計算所接收資訊的crc,比較計算得到的crc是否與接收到的crc相符,如果兩者不相符,則認為資料出錯。注意 仔細對比校驗多項式a005和8001的校驗...