-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdecodeRecTest.py
More file actions
51 lines (36 loc) · 8.32 KB
/
decodeRecTest.py
File metadata and controls
51 lines (36 loc) · 8.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from PyCampbellCR1000.pycampbellcr1000.pakbus import PakBus
import json
import datetime
#rec = {'RecFrag': b'\x00\x011\xd3\xec,\x00\x00\x00\x00E\x0bIE\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\r\t\x96\xc3\x10\x9c\xdc\xc3\x0e\xf0\x8b\xc3\r\x02\xb9\xc3\x0cv\x91\xc3\x0f{\xf3\xc3\x1a\xe8\x12\xc3\x0f1\x92\xc3\r\x8c\xcb',
# 'TimeOfRec': datetime.datetime(1990, 1, 3, 6, 9, 16), 'MsgType': 20,
# 'TranNbr': 77, 'NbrOfRecs': 1,
# 'raw': b'\x14M\x00\x02\xf9\x8c\x00\x00\x06\x8b\x00\x011\xd3\xec,\x00\x00\x00\x00E\x0bIE\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\r\t\x96\xc3\x10\x9c\xdc\xc3\x0e\xf0\x8b\xc3\r\x02\xb9\xc3\x0cv\x91\xc3\x0f{\xf3\xc3\x1a\xe8\x12\xc3\x0f1\x92\xc3\r\x8c\xcb',
# 'RecNbr': 1675, 'IsOffset': 0, 'TableDefSig': 63884, 'TableNbr': 2}
rec = {'raw': b'\x14\xee\x00\x05\r\xc3\x00\x00\x06\xec\x00\x011\xd4\x03$\x00\x00\x00\x00E\x15I_\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00', 'TableNbr': 5, 'IsOffset': 0, 'MsgType': 20, 'RecNbr': 1772, 'NbrOfRecs': 1, 'RecFrag': b'\x00\x011\xd4\x03$\x00\x00\x00\x00E\x15I_\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00\xc1\xc8\x00\x00', 'TranNbr': 238, 'TableDefSig': 3523, 'TimeOfRec': datetime.datetime(1990, 1, 4, 20, 0, 3)}
atabledef = {'Header': {'TableSize': 7440, 'TblInterval': [0, 0], 'TableName': 'WO209060_VWP', 'TblTimeInto': [0, 0], 'TimeType': 14},
'Signature': 63884,
'Fields': [ {'Processing': 'Smp', 'Description': 'Smp', 'FieldName': 'battV', 'FieldType': 'FP2', 'Dimension': 1, 'AliasName': [''], 'Units': '', 'BegIdx': 1, 'ReadOnly': 1, 'SubDim': []},
{'Processing': 'Smp', 'Description': 'Smp', 'FieldName': 'pTemp', 'FieldType': 'FP2', 'Dimension': 1, 'AliasName': [''], 'Units': '', 'BegIdx': 1, 'ReadOnly': 1, 'SubDim': []},
{'Processing': 'Smp', 'Description': 'Smp', 'FieldName': 'VWPbUnits', 'FieldType': 'IEEE4B', 'Dimension': 9, 'AliasName': [''], 'Units': 'B', 'BegIdx': 1, 'ReadOnly': 1, 'SubDim': [9]},
{'Processing': 'Smp', 'Description': 'Smp', 'FieldName': 'VWPkPa', 'FieldType': 'IEEE4B', 'Dimension': 9, 'AliasName': [''], 'Units': 'kPa', 'BegIdx': 1, 'ReadOnly': 1, 'SubDim': [9]},
{'Processing': 'Smp', 'Description': '', 'FieldName': 'VWPtherm', 'FieldType': 'IEEE4B', 'Dimension': 1, 'AliasName': [''], 'Units': '°C', 'BegIdx': 1399681024, 'ReadOnly': 1, 'SubDim': [9, 9]}
] }
with open("devices/2700.json", "r") as f:
tabledef = json.load(f)
#print (tabledef[ rec['TableNbr'] -1 ])
defrec = {'TranNbr': 85, 'MsgType': 32, 'raw': b' U\x00\x04\x01WO209060_PBM\x00\x00\x00\x1d\x10\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87battV\x00\x00Smp\x00\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x87pTemp\x00\x00Smp\x00\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x87barokPa\x00\x00Smp\x00kPa\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x89pbmVWPbUnits\x00\x00Smp\x00B\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x89pbmTEPCbUnits\x00\x00Smp\x00B\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x00\x00\x00\x89pbmVWPkPa\x00\x00Smp\x00kPa\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x89pbmTEPCkPa\x00\x00Smp\x00kPa\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x00\x00\x00\x89pbmVWPtherm\x00\x00Smp\x00\xc2\xb0C\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x89pbmHeading_1\x00\x00Smp\x00\xc2\xb0\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x89pbmPitch_1\x00\x00Smp\x00\xc2\xb0\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x89pbmRoll_1\x00\x00Smp\x00\xc2\xb0\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x89pbmVWPbUnits\x00\x00Smp\x00B\x00Smp\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x89pbmTEPCbUnits\x00\x00Smp\x00B\x00Smp\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x00\x00\x00\x89pbmVWPkPa\x00\x00Smp\x00kPa\x00Smp\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x89pbmTEPCkPa\x00\x00Smp\x00kPa\x00Smp\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x00\x00\x00\x89pbmVWPtherm\x00\x00Smp\x00\xc2\xb0C\x00Smp\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x89pbmHeading_2\x00\x00Smp\x00\xc2\xb0\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x89pbmPitch_2\x00\x00Smp\x00\xc2\xb0\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x89pbmRoll_2\x00\x00Smp\x00\xc2\xb0\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x89pbmVWPbUnits\x00\x00Smp\x00B\x00Smp\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x89pbmTEPCbUnits\x00\x00Smp\x00B\x00Smp\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x00\x00\x00\x89pbmVWPkPa\x00\x00Smp\x00kPa\x00Smp\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x89pbmTEPCkPa\x00\x00Smp\x00kPa\x00Smp\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x0c\x00\x00\x00\x00\x89pbmVWPtherm\x00\x00Smp\x00\xc2\xb0C\x00Smp\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x89pbmHeading_3\x00\x00Smp\x00\xc2\xb0\x00Smp\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00'}
datarec = {'TranNbr': 86, 'NbrOfRecs': 1, 'RecNbr': 41, 'raw': b'\x14V\x00\x04\x97\x1e\x00\x00\x00)\x00\x011\xd5K\xf8\x00\x00\x00\x00E\tI:#\xe3\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x0f\xb3\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x0f{\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\r\xb2\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\rU\xcb\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff', 'TimeOfRec': datetime.datetime(1990, 1, 4, 11, 33, 50), 'TableDefSig': 38686, 'TableNbr': 4, 'MsgType': 20, 'RecFrag': b'\x00\x011\xd5K\xf8\x00\x00\x00\x00E\tI:#\xe3\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x0f\xb3\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x0f{\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\r\xb2\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\rU\xcb\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff', 'IsOffset': 0}
pb= PakBus(None)
defrec = pb.unpack_oneway_tabledef(defrec)
print (defrec)
tdef = pb.parse_tabledef(defrec['Tabledef'])
print (tdef)
exit()
print(defrec)
rec = pb.unpack_oneway_data_message(rec)
print(rec)
frag = pb.parse_oneway_data(rec, tabledef)
for r in frag['Records']:
print (r)
for k,v in r['Fields'].items():
print (k,v)