-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlrc-gilbarco.py
More file actions
73 lines (68 loc) · 2.51 KB
/
lrc-gilbarco.py
File metadata and controls
73 lines (68 loc) · 2.51 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import binascii
# lrc para:
# recepção de comandos gilbarco
#loop = "FFF6E0F9E9E0E3E8E2E0E4E0FAE4E2E0E7E9E5E6E0F4E7E9E9E2F5E0E5E0E3F6E1F9E0E0E0E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E4E5E6E3F5E0E0E0E0F6E2F9E0E0E0E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E4E5E6E3F5E0E0E0E0"
#loop = "FFF6E0F9E0E0E0E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E0E0E0E0F5E040E0E0F6E1F9E0E0E0E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E0E0E0E0F5E0E0E0E0F6E1F9E0E0E0E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E0E0E0E0F5E0E0E0E0"
#loop = "FFF6E0F9E2E1E5E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E0E0E0E0F5E0E0E0E0F6E1F9E0E0E0E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E0E0E0E0F5E0E0E0E0F6E1F9E0E0E0E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E0E0E0E0F5E0E0E0E0"
#loop = "FFE5F2F4F8E0F8E0E0E9E9E9FB"
#loop = "FFE3F1F4F6E0F8E0E3E0E0E0"
#loop = "FFF6E0F9E1E6E2E4E1E0E0E0FAE4E4E8E5E1E0E0E0F4E1E1E1E1F5E0E0E0E0F6E1F9E0E0E0E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E0E0E0E0F5E0E0E0E0F6E2F9E0E0E0E0E0E0E0E0FAE0E0E0E0E0E0E0E0F4E0E0E0E0F5E0E0E0E0"
#loop = "FFE9FEE0E1E0FB"
#loop = "ffe5f4f6e0f7e0e0e0e2fb"
loop = "FFF3F8EBE3E0E0E0F6E2F4F7E9E6E7E4F9E7E9E0E2E0E0FAE0E0E0E1E0E0FBECF0"
loop = "FFF3F8EBE1E0E0E0F6E0F4F7E9E9E8E3F9E4E2E8E2E1FAE0E0E0E5E0E0FBE8F0"
loop = loop.lower()
buf = binascii.a2b_hex(loop)
lrc = 0
for b in buf:
lrc += b
lrc = lrc & 0xff
lrc = lrc ^ 0xff
lrc += 1
send = 0xe0 | (lrc & 0x0f)
print("hex lrc=%x, send=%x" % (lrc, send))
# checksum para:
# recepção de comandos estendidos
#rx = "BAB0B3B2B0B1B0B0B0B0B1B1B1B1B1C1C18d8a" #ok c1c1
#rx = "BAB0B3B1B0B1B0B0B0B0B1B0B0B1B1C3C28D8A" #ok c3c2
#rx = "BAB0B3B2B0B1B0B0B0B0B1B0B0B1B0C2C38D8A" #ok c2c3
#rx = "BAB0C2B2B0B0B1B0B0B6B3B0B1B0B9B2B3B9B6B0B0B2B2B8B4B0B8B0B6B1B2C5B88D8A" #ok c5b8
#rx = "BAB1B0B1B0B0B9B0B1B0B0B0B0B4B4B3B1B7B6B7B7B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B7B48D8A" #ok b7b4
#rx = "BAB0B8B1B0B0B9B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0C4C68D8A" #ok c4c6
rx = "BAB1B0B1B0B0B9B0B1B0B0B0B0B4B4B3B2B2B8B9B1B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0C1B78D8A" #ok c1b7
rx = rx[:-8]
tx = ""
loop = rx
#loop = tx
loop = loop.lower()
buf = binascii.a2b_hex(loop)
w = 0
cks = 0
for i in range(0, len(buf)):
b = buf[i] & ~(1<<7)
if b == 0x3a:
continue
if b & (1<<6):
b = (b - 1 + 0xa) & ~(1<<6)
b &= 0x0f
if i % 2 == 0:
w <<= 4
w += b
cks += w
w = 0
else:
w = b;
cks = ~cks + 1
b0 = (cks >> 4) & 0x0f
b1 = cks & 0x0f
if b0 < 0 or b0 > 9:
b0 = (b0 - 0xa + 1) + (1<<6)
else:
b0 += 0x30
if b1 < 0 or b1 > 9:
b1 = (b1 - 0xa + 1) + (1<<6)
else:
b1 += 0x30
b0 += (1<<7)
b1 += (1<<7)
print("hex cks=%x, send0=%x, send1=%x" % (cks, b0, b1))