dumb test
This commit is contained in:
parent
49d390e6df
commit
aa7556e950
@ -135,80 +135,7 @@ class MeterbusSerial(object):
|
|||||||
print("Waiting for input ... ")
|
print("Waiting for input ... ")
|
||||||
c = self.port.read()
|
c = self.port.read()
|
||||||
|
|
||||||
print("State {}, Octet {}".format(state, c))
|
print("State {}, Octet {:02X}".format(state, c))
|
||||||
|
|
||||||
if state == MeterbusResponseStates.START1:
|
|
||||||
if c == 0x68:
|
|
||||||
frameData.append(c)
|
|
||||||
state = MeterbusResponseStates.LENGTH1
|
|
||||||
else:
|
|
||||||
print('Invalid start1 symbol')
|
|
||||||
state = MeterbusResponseStates.ERROR
|
|
||||||
elif state == MeterbusResponseStates.LENGTH1:
|
|
||||||
frameData.append(c)
|
|
||||||
frame['l'] = c
|
|
||||||
expectedUserDataOctets = frame['l'] - 3
|
|
||||||
state = MeterbusResponseStates.LENGTH2
|
|
||||||
elif state == MeterbusResponseStates.LENGTH2:
|
|
||||||
frameData.append(c)
|
|
||||||
if frame['l'] == c:
|
|
||||||
state = MeterbusResponseStates.START2
|
|
||||||
else:
|
|
||||||
print('Invalid length 2 octet')
|
|
||||||
state = MeterbusResponseStates.ERROR
|
|
||||||
elif state == MeterbusResponseStates.START2:
|
|
||||||
frameData.append(c)
|
|
||||||
if c == 0x68:
|
|
||||||
frameData.append(c)
|
|
||||||
state = MeterbusResponseStates.C_FIELD
|
|
||||||
else:
|
|
||||||
print('Invalid start2 symbol')
|
|
||||||
state = MeterbusResponseStates.ERROR
|
|
||||||
elif state == MeterbusResponseStates.C_FIELD:
|
|
||||||
frameData.append(c)
|
|
||||||
frame['c'] = c
|
|
||||||
state = MeterbusResponseStates.A_FIELD
|
|
||||||
elif state == MeterbusResponseStates.A_FIELD:
|
|
||||||
frameData.append(c)
|
|
||||||
frame['a'] = c
|
|
||||||
state = MeterbusResponseStates.CI_FIELD
|
|
||||||
elif state == MeterbusResponseStates.C_FIELD:
|
|
||||||
frameData.append(c)
|
|
||||||
frame['ci'] = c
|
|
||||||
state = MeterbusResponseStates.USERDATA
|
|
||||||
elif state == MeterbusResponseStates.USERDATA:
|
|
||||||
frameData.append(c)
|
|
||||||
frame['userdata'].append(c)
|
|
||||||
expectedUserDataOctets -= 1
|
|
||||||
if expectedUserDataOctets == 0:
|
|
||||||
state = MeterbusResponseStates.CHKSUM
|
|
||||||
elif state == MeterbusResponseStates.CHKSUM:
|
|
||||||
frameData.append(c)
|
|
||||||
responseChksum = c
|
|
||||||
calculatedChksum = (frame['c'] + frame['a'] + frame['ci'] + sum(frame['userdata'])) & 0x00ff
|
|
||||||
if responseChksum != calculatedChksum:
|
|
||||||
print('Invalid checksum {} {}'.format(responseChksum, calculatedChksum))
|
|
||||||
state = MeterbusResponseStates.ERROR
|
|
||||||
else:
|
|
||||||
state = MeterbusResponseStates.STOP
|
|
||||||
elif state == MeterbusResponseStates.STOP:
|
|
||||||
frameData.append(c)
|
|
||||||
if c == 0x16:
|
|
||||||
state = MeterbusResponseStates.DONE
|
|
||||||
else:
|
|
||||||
print('Invalid stop symbol')
|
|
||||||
state = MeterbusResponseStates.ERROR
|
|
||||||
else:
|
|
||||||
print('Invalid state')
|
|
||||||
state = MeterbusResponseStates.ERROR
|
|
||||||
|
|
||||||
print(a2h(frameData))
|
|
||||||
print(hex(frame['c']))
|
|
||||||
print(hex(frame['a']))
|
|
||||||
print(hex(frame['ci']))
|
|
||||||
print(a2h(frame['userdata']))
|
|
||||||
|
|
||||||
return frame
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user