add write example
This commit is contained in:
48
examples/Pico_write.py
Normal file
48
examples/Pico_write.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
from mfrc522 import MFRC522
|
||||||
|
|
||||||
|
|
||||||
|
def uidToString(uid):
|
||||||
|
mystring = ""
|
||||||
|
for i in uid:
|
||||||
|
mystring = "%02X" % i + mystring
|
||||||
|
return mystring
|
||||||
|
|
||||||
|
reader = MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)
|
||||||
|
|
||||||
|
print("")
|
||||||
|
print("Place card before reader to read from address 0x08")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
|
||||||
|
(stat, tag_type) = reader.request(reader.REQIDL)
|
||||||
|
|
||||||
|
if stat == reader.OK:
|
||||||
|
(stat, uid) = reader.SelectTagSN()
|
||||||
|
if stat == reader.OK:
|
||||||
|
print(uid)
|
||||||
|
print("Card detected %s" % uidToString(uid))
|
||||||
|
reader.MFRC522_DumpClassic1K(key, uid)
|
||||||
|
print("Test ! writing sector 2, block 0 (absolute block(8)")
|
||||||
|
print("with [ 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 ]")
|
||||||
|
absoluteBlock=8
|
||||||
|
value=[]
|
||||||
|
for i in range(16):
|
||||||
|
value.append(i)
|
||||||
|
status = reader.auth(reader.AUTHENT1A, absoluteBlock, key, uid)
|
||||||
|
if status == reader.OK:
|
||||||
|
status = reader.write(absoluteBlock,value)
|
||||||
|
if status == reader.OK:
|
||||||
|
reader.MFRC522_DumpClassic1K(key, uid)
|
||||||
|
else:
|
||||||
|
print("unable to write")
|
||||||
|
else:
|
||||||
|
print("Authentication error for writing")
|
||||||
|
break
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("Bye")
|
||||||
|
|
||||||
|
|
||||||
20
mfrc522.py
20
mfrc522.py
@@ -225,7 +225,7 @@ class MFRC522:
|
|||||||
|
|
||||||
if self.DEBUG: print("anticol(1) {}".format(uid))
|
if self.DEBUG: print("anticol(1) {}".format(uid))
|
||||||
if self.PcdSelect(uid,self.PICC_ANTICOLL1) == 0:
|
if self.PcdSelect(uid,self.PICC_ANTICOLL1) == 0:
|
||||||
return (self.ERR,[])
|
return (self.MI_ERR,[])
|
||||||
if self.DEBUG: print("pcdSelect(1) {}".format(uid))
|
if self.DEBUG: print("pcdSelect(1) {}".format(uid))
|
||||||
|
|
||||||
#check if first byte is 0x88
|
#check if first byte is 0x88
|
||||||
@@ -251,7 +251,7 @@ class MFRC522:
|
|||||||
if self.MFRC522_PcdSelect(uid,self.PICC_ANTICOLL3) == 0:
|
if self.MFRC522_PcdSelect(uid,self.PICC_ANTICOLL3) == 0:
|
||||||
return (self.ERR,[])
|
return (self.ERR,[])
|
||||||
if self.DEBUG: print("PcdSelect(3) {}".format(uid))
|
if self.DEBUG: print("PcdSelect(3) {}".format(uid))
|
||||||
valid_uid.extend(uid[0:4])
|
valid_uid.extend(uid[0:5])
|
||||||
return (self.OK , valid_uid)
|
return (self.OK , valid_uid)
|
||||||
|
|
||||||
|
|
||||||
@@ -291,5 +291,19 @@ class MFRC522:
|
|||||||
|
|
||||||
return stat
|
return stat
|
||||||
|
|
||||||
|
def MFRC522_DumpClassic1K(self, key, uid):
|
||||||
|
for i in range(64):
|
||||||
|
status = self.auth(self.AUTHENT1A, i, key, uid)
|
||||||
|
# Check if authenticated
|
||||||
|
print("{:02d}: ".format(i),end="")
|
||||||
|
if status == self.OK:
|
||||||
|
block = self.read(i)
|
||||||
|
if block is None:
|
||||||
|
print("-- ")
|
||||||
|
else:
|
||||||
|
for value in block:
|
||||||
|
print("{:02X} ".format(value),end="")
|
||||||
|
print("")
|
||||||
|
else:
|
||||||
|
print("Authentication error")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user