Python

modbus CheckSum 구하기.

지니 2022. 9. 23. 23:11
반응형

 

예를들어서 포멧이 아래와 같다고 하자.

01 01 03 04 ff 00 06 checkSum(crc-16 ABCD Type)

 

https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/

 

Online Checksum Calculator - SCADACore

SCADACore's Checksum Calculator can be used to verify the checksum algorithm used by field devices. It accepts ASCII or Hex to produce a checksum.

www.scadacore.com

위 사이트에서 구해보면

이렇게 나온다. 그렇다면 파이썬에서는 어떻게 쉽게 구할까?

(파이썬 만세)

from PyCRC.CRC16 import CRC16

def checksum(restOfFrame):
    return CRC16(modbus_flag=True).calculate(restOfFrame.encode())  
    '''
    modbus_flag = true > CRC-16 
    modbus_flag = false > CRC-16-IBM
    '''
print(hex(checksum('01010304ff0006')))

 

이게 끝이다..ㅋㅋ;;; 그냥 PyCRC를 설치해주고 import해서 함수 호출해서 사용하면 끝.. 파이선 만세

반응형