st-ten-1/src/components/serial_label_printer.py
matteo porta e309021671 ?tecna?
2022-06-08 16:46:47 +02:00

46 lines
1.7 KiB
Python

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["label_printer"]["address"]
self.baudrate = int(self.config["label_printer"]["baudrate"])
self.stopbits = getattr(serial, self.config["label_printer"].get("stopbits", "stopbits_one").upper())
self.parity = getattr(serial, self.config["label_printer"].get("parity", "parity_none").upper())
self.bytesize = getattr(serial, self.config["label_printer"].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)
)