我必须计算一个校验和,但我对硬件编程很感兴趣......
医生说:
所有串口指令均为12字节指令包格式
将数据包的前 11 个字节(不包括校验和字节)的值相加,然后除以 0x0100(256)。这将创建一个 1 字节的移位。此移位的剩余值是校验和字节。
在字传输期间,先传输高字值,然后传输低字值
命令示例:
0x00 0x05 0x0000 0x0000 0x0000 0x0000 0x00 校验和
- 0x00 : 频道
- 0x05 : 命令
- 0x0000 : 参数 1
- 0x0000:参数2
- 0x0000 : lwExtraData
- 0x0000 : hwExtraData
- 0x00 : 错误代码
- ???: 校验和
我在 python 中有这段代码:
ser = serial.Serial('/dev/ttyUSB0', 115200,parity='N',timeout=1)
ser.open()
ser.write(chr(0x00)) # channel 1 byte (alway the same)
ser.write(chr(0x05)) # command 1 byte
ser.write(chr(0x00)) # param1 2 bytes (byte low)
ser.write(chr(0x00)) # param1 2 bytes (byte hight)
ser.write(chr(0x00)) # param2 2 bytes (byte low)
ser.write(chr(0x00)) # param2 2 bytes (byte hight)
ser.write(chr(0x00)) # lwExtraData 2 bytes (byte low)
ser.write(chr(0x00)) # lwExtraData 2 bytes (byte hight)
ser.write(chr(0x00)) # hwExtraData 2 bytes (byte low)
ser.write(chr(0x00)) # hwExtraData 2 bytes (byte hight)
ser.write(chr(0x00)) # ErrorCode 1 byte
我如何计算我的校验和?如果我总和我有 5 但我怎么能除 ?????