Untitled
unknown
python
a year ago
1.1 kB
15
Indexable
import RPi.GPIO as GPIO
from time import sleep
class WiegandReader:
def __init__(self, d0_pin, d1_pin):
self.D0 = d0_pin
self.D1 = d1_pin
self.buffer = []
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.D0, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(self.D1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(self.D0, GPIO.FALLING, callback=self.read_bit, bouncetime=10)
GPIO.add_event_detect(self.D1, GPIO.FALLING, callback=self.read_bit, bouncetime=10)
def read_bit(self, channel):
if channel == self.D0:
self.buffer.append(0)
else:
self.buffer.append(1)
def get_data(self):
data = ''.join([str(bit) for bit in self.buffer])
self.buffer.clear()
return data
if __name__ == "__main__":
reader = WiegandReader(d0_pin=18, d1_pin=23) # Pinos GPIO
try:
while True:
if reader.buffer:
print(reader.get_data())
sleep(0.1)
except KeyboardInterrupt:
GPIO.cleanup()
Editor is loading...
Leave a Comment