ValueError: byte must be in range(0, 256)
checksum 계산을 한 후, bytearray에 담으니 생긴 에러이다.
def onSetting(data):
checksum = 4+data['type']+data['param']
checksum = ~checksum
buf = [0x55, 0xAA, 0x04, data['type'], data['param'], checksum]
byteBuff = bytearray(buf)
checksum이 byte의 range에서 벗어나기 때문이다. 저 checksum을 print하면 -16이 나오는데 이를 240으로 즉, unsigned int로 변경해야 한다.
python에서는 따로 unsigned형 int가 없다고 한다.
그래서 비트 계산으로 변환 시켜 주면 된다.
checksum은 1byte int이기 때문에 0xff 만큼 and 연산을 해줬다.
def onSetting(data):
checksum = 4+data['type']+data['param']
checksum = ~checksum
checksum = checksum & 0xff
buf = [0x55, 0xAA, 0x04, data['type'], data['param'], checksum]
byteBuff = bytearray(buf)