Untitled

 avatar
unknown
python
a year ago
1.1 kB
4
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