Python Modbus CRC 16他のCRC検査説明を検査する
本論文ではcrcmodライブラリの使用を検証する
使用前にインストールしてください:pip install crcmod
CRC 16,mkCrcFunでの設定については下表参照
http://crcmod.sourceforge.net/crcmod.predefined.html#predefined-crc-algorithms
上記のように対応するmkCrcFun入力値を設定すると、コードは次のようになります.
実行結果は次のとおりです.
CRC 16検査:28 D 7増加Modbus CRC 16検査:>>01 03 08 00 01 00 01 00 01 00 01 28 D 7
以上
使用前にインストールしてください:pip install crcmod
CRC 16,mkCrcFunでの設定については下表参照
http://crcmod.sourceforge.net/crcmod.predefined.html#predefined-crc-algorithms
上記のように対応するmkCrcFun入力値を設定すると、コードは次のようになります.
from binascii import *
from crcmod import *
# CRC16-MODBUS
def crc16Add(read):
crc16 =crcmod.mkCrcFun(0x18005,rev=True,initCrc=0xFFFF,xorOut=0x0000)
data = read.replace(" ","")
readcrcout=hex(crc16(unhexlify(data))).upper()
str_list = list(readcrcout)
if len(str_list) == 5:
str_list.insert(2,'0') # 0
crc_data = "".join(str_list)
print(crc_data)
read = read.strip()+' '+crc_data[4:]+' '+crc_data[2:4]
print('CRC16 :',crc_data[4:]+' '+crc_data[2:4])
print(' Modbus CRC16 :>>>',read)
return read
if __name__ == '__main__':
crc16Add("01 03 08 00 01 00 01 00 01 00 01")
実行結果は次のとおりです.
CRC 16検査:28 D 7増加Modbus CRC 16検査:>>01 03 08 00 01 00 01 00 01 00 01 28 D 7
以上