我正在研究需要读取NFC标签ID,然后根据该ID执行一些操作的项目。到目前为止,我能够读取一次(带有标签的对象始终在阅读器上),但是当对象被取下时,我还需要获得一些反馈。我将MFRC522阅读器与RPi和SimpleMFRC522库一起使用。
我曾尝试在其中打乱代码,但没有成功。您有什么方向/想法吗?我有以下代码:
reader = SimpleMFRC522.SimpleMFRC522()
buffor = 0
while continue_reading:
try:
id, text = reader.read()
if(buffor != id):
print id
udp_send(id)
buffor = id
finally:
time.sleep(0.5)
答案 0 :(得分:1)
根据您提供的链接上的代码,它看起来像reader.read
方法块,而没有要读取的ID。而是继续尝试读取,直到看到ID为止。
但是,还有另一种名为reader.read_no_block
的方法,如果没有要读取的ID,它似乎会返回None
,因此您可以改用它。
reader = SimpleMFRC522.SimpleMFRC522()
last_id = None
def exit_event():
print('tag has left the building')
while continue_reading:
id, text = reader.read_no_block()
if id and id != last_id:
# process new tag here
last_id = id
continue
elif not id and last_id:
# if there's no id to read, and last_id is not None,
# then a tag has left the reader
exit_event()
last_id = None
您可能需要进行一些反跳操作,以防止在读者错误地错过标签读取时exit_event
不会被错误调用。