import sys if "--sim-serial-label-printer" in sys.argv: import components.dummies.serial as serial else: import serial from PyQt5.QtWidgets import QMessageBox from .component import Component class Serial_Label_Printer(Component): def __init__(self, config=None, name=None): super().__init__(config=config, name=name, threaded=False) def config_changed(self): self.address = self.config[self.name]["address"] self.baudrate = int(self.config[self.name]["baudrate"]) self.stopbits = getattr(serial, self.config[self.name].get("stopbits", "stopbits_one").upper()) self.parity = getattr(serial, self.config[self.name].get("parity", "parity_none").upper()) self.bytesize = getattr(serial, self.config[self.name].get("bytesize", "eightbits").upper()) def print_label(self, template, archived): # LOAD LABEL TEMPLATE with open(f"config/label_templates/{template}.prn") as f: label = f.read() # LABEL PRINT label = label.replace("$PH1", archived.barcode).replace("$PH2", archived.barcode) try: conn = serial.Serial( self.address, baudrate=self.baudrate, stopbits=self.stopbits, parity=self.parity, bytesize=self.bytesize, ) conn.write(bytes(label, encoding="ascii")) conn.close() except serial.serialutil.SerialException as e: QMessageBox.critical( None, "Errore Connessione Stampante", "Non e stato possibile connettersi alla stampante di etichette\nL'etichetta non verra stampata.\n\nErrore:\n" + str(e) )