Python rfid扫描中的错误标签
我在用Python扫描树莓Pi上的rfid标签时得到了奇怪的结果。 我不是专业人士,所以也许你可以很容易地找出我的错误 这些标签基本上是可以识别的,但似乎我有一些循环。 例如,如果我交替使用tag1和tag2,我将得到类似tag1的两次,然后是tag2的两次。 中断触发器的数量是正确的,但它会随机显示tag1或tag2。似乎有某种缓冲区在新的中断触发器上提供旧id,但并不总是这样 谢谢&对不起,我的英语不好Python rfid扫描中的错误标签,python,raspberry-pi,nfc,rfid,Python,Raspberry Pi,Nfc,Rfid,我在用Python扫描树莓Pi上的rfid标签时得到了奇怪的结果。 我不是专业人士,所以也许你可以很容易地找出我的错误 这些标签基本上是可以识别的,但似乎我有一些循环。 例如,如果我交替使用tag1和tag2,我将得到类似tag1的两次,然后是tag2的两次。 中断触发器的数量是正确的,但它会随机显示tag1或tag2。似乎有某种缓冲区在新的中断触发器上提供旧id,但并不总是这样 谢谢&对不起,我的英语不好 import RPi.GPIO as GPIO import time import s
import RPi.GPIO as GPIO
import time
import serial
import MySQLdb
import sys
import os
from thread import start_new_thread
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
UART = serial.Serial("/dev/ttyAMA0", 9600)
UART.open()
success = 0
def cls():
os.system(['clear', 'cls'][os.name == 'nt'])
cls()
def mysqlex(sqlquery):
global success
db = MySQLdb.connect(host="localhost", user="xxx", passwd="xxx", db="xxx")
cur = db.cursor()
try:
cur.execute(sqlquery)
db.commit()
success = cur.fetchone()
print success
except:
db.rollback()
success = None
print "no success"
cur.close()
db.close()
def led():
GPIO.setup(18, GPIO.OUT)
GPIO.setwarnings(False)
GPIO.output(18, False)
time.sleep(3)
GPIO.output(18, True)
def interrupt(channel):
start = "\x02"
ende = "\x03"
while True:
ID = ""
state = UART.read()
if state == start:
for Counter in range(13):
zeichen = UART.read()
ID += str(zeichen)
# UART.flushInput()
ID = ID.replace(start, "")
ID = ID.replace(ende, "")
print "ID -->", ID
rfid = int(ID, 16)
print "+********************************+"
print rfid
sql = "SELECT * FROM Rfid WHERE rfid_key = ('%s')" % rfid
mysqlex(sql)
if success is not None:
start_new_thread(led, ())
print "Zugang erlaubt +"
print "+********************************+"
print " "
return
else:
print "Zugang verweigert +"
print "+********************************+"
print " "
return
GPIO.add_event_detect(24, GPIO.RISING, callback=interrupt, bouncetime=3000)
def main():
while True:
time.sleep(1)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
sys.exit()
finally:
GPIO.cleanup()
找到了答案
UART.flushInput()
以前
if state == start:
它就像一个符咒。康华莱士,你好,你是谁?你有空吗?我是利伯斯坦·沃尔·米尔,美国国家足球俱乐部董事会是不是把学校列为GPIO的一部分。上升的信号,是不是有点像möglich?