我正在使用这个库来处理 PN5180 rfid 阅读器:
https://github.com/fservida/pyPN5180
据我了解,包含在一个名为 inventory() 的函数中,该函数返回最多 16 张检测到的卡片的列表。你把它放在一个循环中以便它更新
我希望能够在不同时间测试列表中有多少张卡片以及返回一些 ID
所以我尝试将循环函数放入线程中,但我不知道如何将其更新为全局变量以便在主程序中进行测试。
def ListeningCards():
print("listening to card thread started")
while True:
global cards
cards = PN5180().inventory()
cardcount = len(cards)
th1 = threading.Thread(target = ListeningCards)
th1.start()
#main progam:
while true
#etc
那么我怎样才能实现对 rfid 芯片的持续监听并将其返回到我的主程序中呢?我试过 multithreading 但也许还有其他方法?
回答1
cards
在第一次运行 ListeningCards
循环之前是未定义的。程序开始运行可能需要几毫秒。如果您的主程序在 ListeningCards
有机会第一次设置它之前访问 cards
,那么您将得到一个未定义的变量。
您可能只想在程序顶部设置 cards = 0
或类似的东西,以便它具有默认的 value。