-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSL025M.py
More file actions
88 lines (62 loc) · 1.87 KB
/
SL025M.py
File metadata and controls
88 lines (62 loc) · 1.87 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/python
#http://www.stronglink-rfid.com/download/SL025M-User-Manual.pdf
import serial
def SELECT_RFID_CARD_SL025M (port,baudrate,timeout):
ser = serial.Serial(
port=port,
baudrate=baudrate,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=timeout
)
TYPES= {b'\x01' : 'Mifare 1k, 4 byte UID',
b'\x02' : 'Mifare 1k, 7 byte UID',
b'\x03' : 'Mifare UltraLight or NATG203, 7 byte UID',
b'\x04' : 'Mifare 4k, 4 byte UID',
b'\x05' : 'Mifare 4k, 7 byte UID',
b'\x06' : 'Mifare DesFire, 7 byte UID',
b'\x0A' : 'Other'}
lrc = 0
SELECTCMD=bytearray(b'\xBA\x02\x01')
for v in SELECTCMD:
lrc ^= v
ser.write(chr(v))
ser.write(chr(lrc))
values = bytearray()
values.append(ser.read())
if chr(values[len(values)-1]) == b'\xBD':
values.append(ser.read())
length = values[len(values)-1]
RFID = ""
for num in range(0,length):
values.append(ser.read())
string = values[len(values)-1]
if num == 0:
continue
elif num == 1:
if chr(string) == b'\x00':
continue
else:
if chr(string) == b'\x01':
return "ERR","no card present", chr(string).encode("hex")
elif chr(string) == b'\xF0':
return "ERR","checksum", chr(string).encode("hex")
else:
return "ERR","unknown", chr(string).encode("hex")
break
elif num + 2 > length:
lrc = 0
for n in range(0,length+1):
lrc ^= values[n]
if string != lrc:
return "ERR","recv_checksum", chr(string).encode("hex"), chr(lrc).encode("hex")
break
elif num + 3 > length:
type = string
else:
RFID += chr(string).encode("hex")
return "RFID",RFID.upper(),"TYPE",type,TYPES[chr(type)]
else:
return "ERR","port_conn","connecting port", port
print SELECT_RFID_CARD_SL025M ("/dev/ttyUSB0",115200,3)