-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpakbus_decoder.py
69 lines (59 loc) · 8.89 KB
/
pakbus_decoder.py
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#msg = """BD 8F FF 8F FE 0F FF 0F FE E6 60 BD BD AF FE 24 D3 0F FE 04 D3 89 7A 00 02 FF FF E9 00 BD BD A4 D3 6F FE 14 D3 0F FE 17 79 00 00 00 00 00 00 00 00 00 00 4F 68 BD BD AF FE 24 D3 1F FE 04 D3 97 79 00 31 C5 37 65 24 00 4F 00 10 30 BD BD A4 D3 6F FE 14 D3 0F FE 1D 7E 00 00 2E 54 44 46 00 00 00 00 00 00 03 CC BB 7B BD BD AF FE 24 D3 1F FE 04 D3 9D 7E 00 00 00 00 00 01 53 74 61 74 75 73 00 00 00 00 01 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8B 4F 53 56 65 72 73 69 6F 6E 00 00 00 00 00 00 00 00 01 00 00 00 20 00 00 00 20 00 00 00 00 8B 4F 53 44 61 74 65 00 00 00 00 00 00 00 00 01 00 00 00 0C 00 00 00 0C 00 00 00 00 86 4F 53 53 69 67 6E 61 74 75 72 65 00 00 00 00 00 00 00 00 01 00 61 6E 65 6C 54 65 6D 70 00 00 00 44 65 67 43 00 00 00 00 00 01 00 00 00 01 00 00 00 00 89 42 61 74 74 65 72 79 00 00 00 56 6F 6C 74 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 89 4C 69 74 68 69 75 6D 42 61 74 74 65 72 79 00 00 00 56 6F 6C 74 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 8B 50 6F 77 65 72 53 6F 75 72 63 65 00 00 00 00 00 00 00 00 01 00 00 00 08 00 00 00 08 00 00 00 00 89 43 68 61 72 67 65 49 6E 70 75 74 00 00 00 56 6F 6C 74 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 8B 43 68 61 72 67 65 53 74 61 74 65 00 00 00 00 00 00 00 00 01 00 00 00 14 00 00 00 14 00 00 00 00 06 4C 6F 77 31 32 56 43 6F 75 6E 74 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 8B 43 6F 6D 70 69 6C 65 52 65 73 75 6C 74 73 00 00 00 00 00 00 00 00 01 00 00 01 00 00 00 01 00 00 00 00 00 86 53 74 61 72 74 55 70 43 6F 64 65 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 50 72 6F 67 45 72 72 6F 72 73 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 06 56 61 72 4F 75 74 4F 66 42 6F 75 6E 64 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 06 53 6B 69 70 70 65 64 53 63 61 6E 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 06 53 6B 69 70 70 65 64 53 79 73 74 65 6D 53 63 61 6E 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 45 72 72 6F 72 43 61 6C 69 62 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 4D 65 6D 6F 72 79 53 69 7A 65 00 00 00 62 79 74 65 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 4D 65 6D 6F 72 79 46 72 65 65 00 00 00 62 79 74 65 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 8B 43 6F 6D 6D BD A4 D3 6F FE 14 D3 0F FE 1D 7E 00 00 2E 54 44 46 00 00 00 00 00 00 03 CC BB 7B BD BD AF FE 24 D3 1F FE 04 D3 9D 7E 00 00 00 00 00 01 53 74 61 74 75 73 00 00 00 00 01 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8B 4F 53 56 65 72 73 69 6F 6E 00 00 00 00 00 00 00 00 01 00 00 00 20 00 00 00 20 00 00 00 00 8B 4F 53 44 61 74 65 00 00 00 00 00 00 00 00 01 00 00 00 0C 00 00 00 0C 00 00 00 00 86 4F 53 53 69 67 6E 61 74 75 72 65 00 00 00 00 00 00 00 00 89 50 61 6E 65 6C 54 65 6D 70 00 00 00 44 65 67 43 00 00 00 00 00 01 00 00 00 01 00 00 00 00 89 42 61 74 74 65 72 79 00 00 00 56 6F 6C 74 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 89 4C 69 74 68 69 75 6D 42 61 74 74 65 72 79 00 00 00 56 6F 6C 74 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 8B 50 6F 77 65 72 53 6F 75 72 63 65 00 00 00 00 00 00 00 00 01 00 00 00 08 00 00 00 08 00 00 00 00 89 43 68 61 72 67 65 49 6E 70 75 74 00 00 00 56 6F 6C 74 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 8B 43 68 61 72 67 65 53 74 61 74 65 00 00 00 00 00 00 00 00 01 00 00 00 14 00 00 00 14 00 00 00 00 06 4C 6F 77 31 32 56 43 6F 75 6E 74 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 8B 43 6F 6D 70 69 6C 65 52 65 73 75 6C 74 73 00 00 00 00 00 00 00 00 01 00 00 01 00 00 00 01 00 00 00 00 00 86 53 74 61 72 74 55 70 43 6F 64 65 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 50 72 6F 67 45 72 72 6F 72 73 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 06 56 61 72 4F 75 74 4F 66 42 6F 75 6E 64 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 06 53 6B 69 70 70 65 64 53 63 61 6E 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 06 53 6B 69 70 70 65 64 53 79 73 74 65 6D 53 63 61 6E 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 45 72 72 6F 72 43 61 6C 69 62 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 4D 65 6D 6F 72 79 53 69 7A 65 00 00 00 62 79 74 65 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 4D 65 6D 6F 72 79 46 72 65 65 00 00 00 62 79 74 65 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 8B 43 BD A4 D3 6F FE 14 D3 0F FE 1D 7E 00 00 2E 54 44 46 00 00 00 00 00 00 03 CC BB 7B BD BD AF FE 24 D3 1F FE 04 D3 9D 7E 00 00 00 00 00 01 53 74 61 74 75 73 00 00 00 00 01 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8B 4F 53 56 65 72 73 69 6F 6E 00 00 00 00 00 00 00 00 01 00 00 00 20 00 00 00 20 00 00 00 00 8B 4F 53 44 61 74 65 00 00 00 00 00 00 00 00 01 00 00 00 0C 00 00 00 0C 00 00 00 00 86 4F 53 53 69 67 6E 61 74 75 72 65 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 86 53 74 61 72 74 55 70 43 6F 64 65 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 50 72 6F 67 45 72 72 6F 72 73 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 06 56 61 72 4F 75 74 4F 66 42 6F 75 6E 64 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 06 53 6B 69 70 70 65 64 53 63 61 6E 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 06 53 6B 69 70 70 65 64 53 79 73 74 65 6D 53 63 61 6E 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 45 72 72 6F 72 43 61 6C 69 62 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 4D 65 6D 6F 72 79 53 69 7A 65 00 00 00 62 79 74 65 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 86 4D 65 6D 6F 72 79 46 72 65 65 00 00 00 62 79 74 65 73 00 00 00 00 00 01 00 00 00 01 00 00 00 00 8B 43 6F"""
msg = """T: 11:56:28.622 ..........#..... BD BD BD BD BD BD 94 D3 0F FE 23 87 BD BD 8F FF
T: 11:56:28.853 .......`. 8F FE 0F FF 0F FE E6 60 BD
T: 11:56:29.644 .....#.. BD 94 D3 0F FE 23 87 BD
R: 11:56:29.644 ........ BD AF FE 04 D3 A2 AF BD
T: 11:56:29.647 ...o..........<. BD A4 D3 6F FE 04 D3 0F FE 09 A6 01 02 00 3C C5
T: 11:56:29.647 B. 42 BD
R: 11:56:29.647 ...$............ BD AF FE 24 D3 0F FE 04 D3 89 A6 00 01 FF FF FD
R: 11:56:29.647 .. 10 BD
T: 11:56:29.667 ...o............ BD A4 D3 6F FE 14 D3 0F FE 17 A5 00 00 00 00 00
T: 11:56:29.667 ......Z. 00 00 00 00 00 A9 5A BD
R: 11:56:29.667 ...$........1..m BD AF FE 24 D3 1F FE 04 D3 97 A5 00 31 CE 82 6D
R: 11:56:29.667 .`....]. 0F 60 C4 80 BC DC 5D BD
T: 11:56:29.775 ...o............ BD A4 D3 6F FE 14 D3 0F FE 09 A9 00 00 05 00 04
T: 11:56:29.775 ........... 97 1E 00 00 00 01 00 00 10 92 BD
R: 11:56:29.775 ...$............ BD AF FE 24 D3 1F FE 04 D3 89 A9 00 00 04 00 00
R: 11:56:29.775 ......1..P....E. 05 AA 80 00 00 00 31 CE 82 50 00 00 00 00 45 0E
R: 11:56:29.775 Ir#............. 49 72 23 E6 FF FF FF FF FF FF FF FF FF FF FF FF
R: 11:56:29.775 ................ FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
R: 11:56:29.775 ......%......... FF FF FF FF C3 0F 25 9A 00 00 00 00 00 00 00 00
R: 11:56:29.775 ................ 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF
R: 11:56:29.775 .............A.. FF FF FF FF FF FF FF FF FF FF FF FF 00 41 8A BD
T: 11:56:29.778 ...o............ BD A4 D3 6F FE 14 D3 0F FE 09 AA 00 00 08 00 04
T: 11:56:29.778 .........V..0S. 97 1E 00 00 05 AA 00 00 00 56 00 00 30 53 BD
R: 11:56:29.778 ...$............ BD AF FE 24 D3 1F FE 04 D3 89 AA 00 00 04 00 00
R: 11:56:29.778 .....V.......... 05 AA 80 00 00 56 FF FF FF FF FF FF FF FF C3 13
R: 11:56:29.778 ................ B9 16 00 00 00 00 00 00 00 00 00 00 00 00 FF FF
R: 11:56:29.778 ................ FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
R: 11:56:29.778 ................ FF FF FF FF FF FF FF FF FF FF FF FF FF FF C3 0E
R: 11:56:29.778 .>.............. C6 3E 00 00 00 00 00 00 00 00 00 00 00 00 FF FF
R: 11:56:29.778 .............f.. FF FF FF FF FF FF FF FF FF FF FF FF 00 66 84 BD
T: 11:56:29.780 ...o............ BD A4 D3 6F FE 14 D3 0F FE 09 AB 00 00 08 00 04
T: 11:56:29.780 ............k8. 97 1E 00 00 05 AA 00 00 00 AC 00 00 6B 38 BD
R: 11:56:29.780 ...$............ BD AF FE 24 D3 1F FE 04 D3 89 AB 00 00 04 00 00
R: 11:56:29.780 ................ 05 AA 80 00 00 AC FF FF FF FF FF FF FF FF FF FF
R: 11:56:29.780 ...........W.... FF FF FF FF FF FF FF FF C3 0E D7 57 FF FF FF FF
R: 11:56:29.780 ............ FF FF FF FF FF FF FF FF 00 B7 12 BD
T: 11:56:30.129 ...?........ BD B4 D3 3F FE 04 D3 0F FE DA BB BD
R: 11:56:30.129 .....>.. BD 8F FE 04 D3 3E 2E BD
""".split('\n')
x = "T: 11:56:28.622 ..........#..... "
msg = " ".join([z[len(x):] for z in msg])
import logging
logging.basicConfig(level=logging.INFO)
import hexdump
import io
from PyCampbellCR1000.pycampbellcr1000.pakdecode import PakBusDecode
class pbByteIo(io.BytesIO):
# pakbus assumes there is a timeout member...
timeout = 1
link = pbByteIo(hexdump.dehex(msg))
pb = PakBusDecode(link)
packet = pb.read()
while packet:
logging.debug ("packet is {}: {}".format(hexdump.dump(packet), packet))
hdr, msg = pb.decode_packet(bytes(packet))
logging.info ('HEAD: {}'.format(hdr))
logging.info (' MSG: {}'.format(msg))
packet = pb.read()