@@ -50,15 +50,18 @@ class UsbReader(object):
50
50
51
51
52
52
class Mfrc522Reader (object ):
53
- def __init__ (self , readmode_uid = False ):
53
+ def __init__ (self ):
54
54
import pirc522
55
55
self .device = pirc522 .RFID ()
56
- self .readmode_uid = readmode_uid
57
- self .readCard = self .readCard_normal if self .readmode_uid else self .readCard_legacy
56
+ path = os .path .dirname (os .path .realpath (__file__ ))
57
+ readmode_uid = False
58
+ if os .path .isfile (path + '/../settings/Rfidreader_Rc522_Readmode_UID' ):
59
+ with open (path + '/../settings/Rfidreader_Rc522_Readmode_UID' , 'r' ) as f :
60
+ readmode_uid = f .read ().rstrip ().split (';' , 1 )[0 ] == 'ON'
61
+ self ._read_function = self ._readCard_normal if readmode_uid else self ._readCard_legacy
58
62
59
- def readCard_legacy (self ):
63
+ def _readCard_legacy (self ):
60
64
# Scan for cards
61
- self .device .wait_for_tag ()
62
65
(error , tag_type ) = self .device .request ()
63
66
64
67
if not error :
@@ -72,7 +75,7 @@ class Mfrc522Reader(object):
72
75
logger .debug ("No Device ID found." )
73
76
return None
74
77
75
- def readCard_normal (self ):
78
+ def _readCard_normal (self ):
76
79
# Scan for cards
77
80
uid = self .device .read_id (as_number = True )
78
81
if not uid :
@@ -83,6 +86,11 @@ class Mfrc522Reader(object):
83
86
logger .info (card_id )
84
87
return card_id
85
88
89
+ def readCard (self ):
90
+ # Scan for cards
91
+ self .device .wait_for_tag ()
92
+ return self ._read_function ()
93
+
86
94
@staticmethod
87
95
def cleanup ():
88
96
GPIO .cleanup ()
@@ -201,14 +209,9 @@ class Reader(object):
201
209
else :
202
210
with open (path + '/deviceName.txt' , 'r' ) as f :
203
211
device_name = f .read ().rstrip ().split (';' , 1 )[0 ]
204
- if os .path .isfile (path + '/../settings/Rfidreader_Rc522_Readmode_UID' ):
205
- with open (path + '/../settings/Rfidreader_Rc522_Readmode_UID' , 'r' ) as f :
206
- readmode_uid = f .read ().rstrip ().split (';' , 1 )[0 ] == 'ON'
207
- else :
208
- readmode_uid = False
209
212
210
213
if device_name == 'MFRC522' :
211
- self .reader = Mfrc522Reader (readmode_uid )
214
+ self .reader = Mfrc522Reader ()
212
215
elif device_name == 'RDM6300' :
213
216
# The Rdm6300Reader supports 2 Additional Number Formats which can bee choosen by an optional parameter dictionary:
214
217
# {'numberformat':'card_id_float'} or {'numberformat':'card_id_dec'}
@@ -221,3 +224,6 @@ class Reader(object):
221
224
self .reader = UsbReader (device )
222
225
except IndexError :
223
226
sys .exit ('Could not find the device %s.\n Make sure it is connected' % device_name )
227
+
228
+ def readCard (self ):
229
+ return self .reader .readCard ()
0 commit comments