Для университетского проекта я занимался программированием с python3 для интерфейса с термопринтером (активируется двумя кнопками) и RFID для открытия аудиофайла. Оба работают в отдельных программах, но когда я включил RFID в код с термопринтером, RFID блокирует контакты GPIO.
Я хочу, чтобы принтер печатал разные сообщения в соответствии с считываемыми разными RFID.
Я пытался поиграть с разными утверждениями в коде без преобладания:
import sys, os, time, signal, serial, adafruit_thermal_printer, threading
import RPi.GPIO as GPIO
import mfrc522
from mfrc522 import SimpleMFRC522
uart = serial.Serial("/dev/serial0", baudrate=19200, timeout=3000)
ThermalPrinter = adafruit_thermal_printer.get_printer_class(2.69)
printer = ThermalPrinter(uart)
reader = SimpleMFRC522()
ButtonA=11
ButtonB=13
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(ButtonA, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(ButtonB, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True:
if GPIO.input(ButtonA) == GPIO.HIGH:
print ("ButtonA Pushed")
printer.print("""Le Freak Records
lots of love, Le Freak x
""")
printer.print("This is an image")
printer.feed(2)
time.sleep(1)
if GPIO.input(ButtonB) == GPIO.HIGH:
print ("ButtonB Pushed")
printer.print("Hello World this is B")
printer.feed(2)
time.sleep(1)
(id, text) = reader.read()#reads the rfid card
if (id == 1003469162337):
print(id)
print("Card1 Read")
os.system('mpg321 /home/pi/bubbling_water_1.mp3 &')
if (id == 384229004975):
print ("Card2 Read")