1
對於我們試圖在ntag213(Mifare Ultralight C 180Bytes)上編寫的學校項目,我們無法編寫它。除此之外,圖書館正在閱讀Ultralight C/ntag213正常工作。用mxgxw/MFRC522-python庫和Raspi 2上的MFRC522閱讀器編寫ntag213(Mifare Ultralight C)
相同的設置,庫和硬件在Mifare 1K Tags 1024kB上運行良好。
有沒有人在那裏用MFRC522閱讀器和Mifare Ultralight C標籤(ntag213)在PYTHON中使用這個庫?
鏈接:
https://github.com/mxgxw/MFRC522-python http://cache.nxp.com/documents/data_sheet/NTAG213_215_216.pdf?pspll=1
def MFRC522_Write(self, blockAddr, writeData):
buff = []
buff.append(self.PICC_WRITE)
buff.append(blockAddr)
crc = self.CalulateCRC(buff)
buff.append(crc[0])
buff.append(crc[1])
(status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE, buff)
#because of a timeout in function ToCard, backdata after this is empty!!!!!!!!!
if not(status == self.MI_OK) or not(backLen == 4) or not((backData[0] & 0x0F) == 0x0A):
status = self.MI_ERR
print str(backLen)+" backdata &0x0F == 0x0A "+str(backData[0]&0x0F)
if status == self.MI_OK:
i = 0
buf = []
while i < 16:
buf.append(writeData[i])
i = i + 1
crc = self.CalulateCRC(buf)
buf.append(crc[0])
buf.append(crc[1])
(status, backData, backLen) = self.MFRC522_ToCard(self.PCD_TRANSCEIVE,buf)
if not(status == self.MI_OK) or not(backLen == 4) or not((backData[0] & 0x0F) == 0x0A):
print "Error while writing"
if status == self.MI_OK:
print "Data written"
所以我們正在研究ToCard功能來搜索錯誤:
def MFRC522_ToCard(self,command,sendData):
backData = []
backLen = 0
status = self.MI_ERR
irqEn = 0x00
waitIRq = 0x00
lastBits = None
n = 0
i = 0
if command == self.PCD_AUTHENT:
irqEn = 0x12
waitIRq = 0x10
if command == self.PCD_TRANSCEIVE:
irqEn = 0x77
waitIRq = 0x30
self.Write_MFRC522(self.CommIEnReg, irqEn|0x80)
self.ClearBitMask(self.CommIrqReg, 0x80)
self.SetBitMask(self.FIFOLevelReg, 0x80)
self.Write_MFRC522(self.CommandReg, self.PCD_IDLE);
while(i<len(sendData)):
self.Write_MFRC522(self.FIFODataReg, sendData[i])
i = i+1
self.Write_MFRC522(self.CommandReg, command)
if command == self.PCD_TRANSCEIVE:
self.SetBitMask(self.BitFramingReg, 0x80)
#!!!!!!!!!!!!!!!!!!!!!!!!!!!
# as we saw in the data sheet we figured out that until here everything looks correctly.
# despite of this fact self.Read_MFRC522(self.CommIrqReg) never gets an ACK
#!!!!!!!!!!!!!!!!!!!!!!!!!!!
i = 2000
while True:
n = self.Read_MFRC522(self.CommIrqReg)
i = i - 1
if ~((i!=0) and ~(n&0x01) and ~(n&waitIRq)):
break
self.ClearBitMask(self.BitFramingReg, 0x80)
if i != 0:
if (self.Read_MFRC522(self.ErrorReg) & 0x1B)==0x00:
status = self.MI_OK
if n & irqEn & 0x01:
status = self.MI_NOTAGERR
if command == self.PCD_TRANSCEIVE:
n = self.Read_MFRC522(self.FIFOLevelReg)
lastBits = self.Read_MFRC522(self.ControlReg) & 0x07
if lastBits != 0:
backLen = (n-1)*8 + lastBits
else:
backLen = n*8
if n == 0:
n = 1
if n > self.MAX_LEN:
n = self.MAX_LEN
i = 0
while i<n:
backData.append(self.Read_MFRC522(self.FIFODataReg))
i = i + 1;
else:
status = self.MI_ERR
return (status,backData,backLen)
請找教程,儘量讓你的第一個步驟。當你遇到一些你自己無法解決的問題時,請在這裏問問。 –
你好,謝謝你的回答,但你明白錯了!我們已經完成了整個設置,現在我們使用Raspberry Pi 2B上的MFRC522 Reader和Mifare 1kB標籤現在工作了一段時間(4周),所有工作都正常。因此,從技術上講,我們完成了我們的作業和教程,但是在閱讀小妹妹/ Mifare Ultralight C Tag時出現了一些問題......我們只是想知道是否有人已經這樣做了......沒有足夠的庫或者其他什麼......我只是找到了C++代碼......但是我們需要Python,因爲我們現在正在從mxgxw重寫庫,以便它可以與Ultralight – Tschabadu
一起使用這太棒了!所以,在這裏問一下你會問你要找的人。解釋你有什麼,你嘗試過什麼,你想完成什麼。關鍵是你的問題和答案可能會是別人。沒有任何具體信息,您的問題可能會被關閉。 –