超时时间变量,如果条件为

2024-10-04 01:35:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的Python代码,它有一个if条件,检查current_ident是否与上一个ident相同,如果相同,则不打印current_ident

我想做的是在这个检查中添加一个超时,这样只需检查当前和最后一个是否在7秒钟内相同,然后让它打印是否相同。我想可以添加一个全局变量last_read,这样可以节省时间,然后可能使用类似last_read + [timeout] > [current_time]的东西

from nfc import ContactlessFrontend
from time import sleep

ident = '' 

def connected(tag):
    global ident
    current_ident = ''.join('{:02x}'.format(ord(c)) for c in tag.identifier)
    if current_ident != ident:
        print(current_ident)
        ident = current_ident
    return False

clf = ContactlessFrontend('usb')
while True:
    clf.connect(rdwr={'on-connect': connected})
    sleep(1)

Tags: 代码fromimportreadiftimetagconnect
1条回答
网友
1楼 · 发布于 2024-10-04 01:35:13

您应该能够记录时间以及最后一个标识:

from nfc import ContactlessFrontend
from time import sleep
import time

ident = '' 
next_time = None

def connected(tag):
    global ident
    global next_time
    current_ident = ''.join('{:02x}'.format(ord(c)) for c in tag.identifier)
    if current_ident != ident:
        next_time = time.time() + 7
        print(current_ident)  # Brand new ident
        ident = current_ident
    elif time.time() > next_time:
        next_time = time.time() + 7
        print(current_ident)  # Repeated ident allowed
    # else:  # disallow repeated ident
    return False

clf = ContactlessFrontend('usb')
while True:
    clf.connect(rdwr={'on-connect': connected})
    sleep(1)

相关问题 更多 >