dumb test
This commit is contained in:
parent
49d390e6df
commit
aa7556e950
@ -135,80 +135,7 @@ class MeterbusSerial(object):
|
||||
print("Waiting for input ... ")
|
||||
c = self.port.read()
|
||||
|
||||
print("State {}, Octet {}".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
|
||||
print("State {}, Octet {:02X}".format(state, c))
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user