st-ten-1/src/components/serial_label_printer.py

57 lines
2.3 KiB
Python
Raw Normal View History

2022-06-01 16:37:19 +00:00
import sys
2022-07-18 10:32:05 +00:00
if "--sim-serial" in sys.argv:
2022-06-29 11:04:31 +00:00
from components.dummies.serial import serial
2022-06-01 16:37:19 +00:00
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):
2022-09-13 11:36:22 +00:00
self.port = self.config[self.name]["port"]
2022-06-29 09:02:58 +00:00
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())
2022-09-13 11:36:22 +00:00
self.read_timeout = float(self.config[self.name].get("read_timeout", 1))
self.write_timeout = float(self.config[self.name].get("write_timeout", 1))
self.inter_byte_timeout = self.config[self.name].get("inter_byte_timeout", None)
if self.inter_byte_timeout is not None:
self.inter_byte_timeout = float(self.inter_byte_timeout)
2022-06-01 16:37:19 +00:00
@Component.reconfig_on_error
2022-07-25 13:36:42 +00:00
def print_label(self, template, context=None):
if context is None:
context = {}
2022-06-01 16:37:19 +00:00
# LOAD LABEL TEMPLATE
2022-09-06 13:15:01 +00:00
with open(f"config/label_templates/{str(template)}", "r", errors="surrogateescape") as f:
2022-06-01 16:37:19 +00:00
label = f.read()
# LABEL PRINT
2022-07-25 13:36:42 +00:00
label = label.format(**context)
2022-06-01 16:37:19 +00:00
try:
conn = serial.Serial(
2022-09-13 11:36:22 +00:00
self.port,
2022-06-01 16:37:19 +00:00
baudrate=self.baudrate,
stopbits=self.stopbits,
parity=self.parity,
bytesize=self.bytesize,
2022-09-13 11:36:22 +00:00
timeout=self.read_timeout,
write_timeout=self.write_timeout,
inter_byte_timeout=self.inter_byte_timeout,
2022-06-01 16:37:19 +00:00
)
2022-07-25 13:36:42 +00:00
conn.write(label.encode(errors="surrogateescape"))
2022-06-01 16:37:19 +00:00
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)
)