Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python Raspberry Pi GPIO和Wiegand问题_Python 2.7_Raspbian_Raspberry Pi2_Gpio - Fatal编程技术网

Python 2.7 Python Raspberry Pi GPIO和Wiegand问题

Python 2.7 Python Raspberry Pi GPIO和Wiegand问题,python-2.7,raspbian,raspberry-pi2,gpio,Python 2.7,Raspbian,Raspberry Pi2,Gpio,我对Python非常陌生,在过去的几周里我学到了一些东西。这就是我想出来的。我非常高兴,代码大部分时间都在工作。 我用2个GPIO引脚将wiegand格式从读卡器读取到我的Raspberry Pi 2 但是,它并不总是正确扫描。偶尔扫描会挂起存储位,我将不得不fob的读者第二次让它完成。有时它会正确地结束。有时它以完全错误的卡号结束。通常第三次fobbing会得到一组正确的新信息。我曾经尝试过使用PIGPIO的c版本和python版本来理解我的不同之处。我不明白为什么它似乎总是从使用该代码的阅

我对Python非常陌生,在过去的几周里我学到了一些东西。这就是我想出来的。我非常高兴,代码大部分时间都在工作。

我用2个GPIO引脚将wiegand格式从读卡器读取到我的Raspberry Pi 2
但是,它并不总是正确扫描。偶尔扫描会挂起存储位,我将不得不fob的读者第二次让它完成。有时它会正确地结束。有时它以完全错误的卡号结束。通常第三次fobbing会得到一组正确的新信息。我曾经尝试过使用PIGPIO的c版本和python版本来理解我的不同之处。我不明白为什么它似乎总是从使用该代码的阅读器返回一组正确的值。我没有足够的知识来完全理解PIGPIO代码中发生的事情,因此我不确定如何在从读者那里获取信息时在自己的代码中创建这种一致性。

如果有人认为我从读卡器中读取信息的逻辑有问题,是否会立即向他们提示?

记住,我是新来的,所以我需要一点手握这个。 我希望从一个HID 26位读卡器上只捕获26位卡格式。我有3种不同的HID格式FOB/卡,我一直在使用它们进行测试。如果我一个接一个地循环使用同一fob,问题就会发生。有时它会扫描10+次,有时它会立即失败,2或3次扫描都不起作用

from time import sleep
import os
import RPi.GPIO as GPIO
import pifacecad as p
GPIO.setmode(GPIO.BOARD)
#GPIO setup
data0=38
data1=40
GPIO.setup(data0,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(data1,GPIO.IN,pull_up_down=GPIO.PUD_UP)
#Setting up display
cad = p.PiFaceCAD()
cad.lcd.backlight_on()
cad.lcd.clear()
cad.lcd.cursor_off()
cad.lcd.blink_off()
cad.lcd.write("Ready")
#Variables
i=0
dataBits=[]
bitCount=1
fcc="0"
card="0"
Zero="0"
One="1"
hexFilter=[]
hexCard=[]
hexFCC=[]
justRead=0
j=0
k=0
#Main code
while (1):
    #Reading code
    while (bitCount<27):   
        if GPIO.input(data0)==0:
            dataBits.append(Zero)
            print dataBits
            print "Bitcount %d" % bitCount
            bitCount = bitCount+1
            justRead=1
        if GPIO.input(data1)==0:
            dataBits.append(One)
            print dataBits
            print "Bitcount %d" % bitCount
            bitCount = bitCount+1
            justRead=1   
        if justRead ==1:
            if bitCount>26:
    #Transforming our information into usable bits  
    #Rest of the code just handles the information and prints to a screen. 
    #The issue existed before I wrote the rest of the code
从时间导入睡眠
导入操作系统
将RPi.GPIO导入为GPIO
将pifacecad作为p导入
GPIO.setmode(GPIO.BOARD)
#GPIO设置
数据0=38
数据1=40
GPIO.setup(data0,GPIO.IN,pull\u up\u down=GPIO.PUD\u up)
GPIO.setup(data1,GPIO.IN,pull\u up\u down=GPIO.PUD\u up)
#设置显示
cad=p.PiFaceCAD()
cad.lcd.backlight_on()
cad.lcd.clear()
cad.lcd.cursor_off()
cad.lcd.blink_off()
cad.lcd.write(“就绪”)
#变数
i=0
数据位=[]
比特数=1
fcc=“0”
卡片=“0”
Zero=“0”
One=“1”
hexFilter=[]
hexCard=[]
hexFCC=[]
justRead=0
j=0
k=0
#主代码
而(一):
#读取代码
而(26:
#将我们的信息转换成可用的比特
#其余的代码只处理信息并打印到屏幕上。
#在我编写其余代码之前,这个问题就已经存在了
我用一个带电阻的分压电路把5v电压降到3v,我的数据线和Pi都接地

编辑: 在这里解决


上次我研究这个问题时,几年前(2018ish)发现python的速度不够快,无法直接一致地读取weigand。那一次,我在RFID阅读器上安装了arduino,并在arduino上安装了C代码,读取weigand,并将值以ASCII格式通过USB/serial输出

据我所知,使用C从树莓pi中读取weigand应该是可行的。我来到这个页面是因为我想看看是否有人制作了一个python/C库来读取weigand。还没有找到它

编辑:嗯,pigpio看起来可以完成这项工作:


上次我研究这个问题时,几年前(2018ish)发现python的速度不够快,无法直接一致地读取weigand。那一次,我在RFID阅读器上安装了arduino,并在arduino上安装了C代码,读取weigand,并将值以ASCII格式通过USB/serial输出

据我所知,使用C从树莓pi中读取weigand应该是可行的。我来到这个页面是因为我想看看是否有人制作了一个python/C库来读取weigand。还没有找到它

编辑:嗯,pigpio看起来可以完成这项工作:


我看不到任何管理计时/速度的代码。如何避免读取符号(0或1)两次?我当时没有考虑过。我在代码中积极做的任何事情都不能控制它。我不确定wiegand降低和恢复电压的速度有多快。但大多数时候我都得到了正确的值。我会调查一下,看看我是否能够在线提供任何有用的信息。我没有看到任何代码管理时间/速度d、 如何避免读取符号(0或1)两次?我当时没有考虑过。我在代码中积极做的任何事情都不能控制它。我不确定wiegand降低和恢复电压的速度有多快。但大多数时候我都得到了正确的值。我会调查一下,看看我是否能够在线提供任何有用的信息。我能够从Pi的创建者那里得到帮助gpio。在raspberrypi stackexchange上。答案在那里,我编辑了我的问题以显示有效的更改。我制作了一些设备,这些年来一直读取99-100%的正确率。错误检查和超时代码非常陈旧和粗糙,我不再使用它,所以我不建议保留它。谢谢,我会检查我的t out!您可能希望将此信息放在上面的条目中。我可以在raspberrypi stackexchange上从Pigpio的创建者那里获得帮助。答案在那里,我编辑了我的问题以显示有效的更改。我制作了一些设备,多年来一直读取99-100%的正确率。错误检查和超时代码为真的很旧和粗糙,我不再使用它了,所以我不建议把它放在里面。谢谢,我会查出来的!你可能想把这些信息放在上面的条目中。