''' Created on 8 apr 2019 @author: Emanuele Trabattoni ''' import sys, logging, os import datetime import PyQt5.QtWidgets from MKPrint_GUI import Ui_MainWindow from printer import MarkoPrinter import protocol class MainWindow(PyQt5.QtWidgets.QMainWindow): def __init__(self, configFilePath, LOGGER): try: self.printer = MarkoPrinter(configFilePath, LOGGER) except FileNotFoundError as e: print("Configuration file error: {}".format(e)) sys.exit(1) PyQt5.QtWidgets.QMainWindow.__init__(self) self.log = LOGGER self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setFixedSize(self.maximumSize()) self.setWindowTitle("Manda Etichette a Marcatrice") self.timer = PyQt5.QtCore.QTimer() self.ui.btn_connect.clicked.connect(self.toggla_connessione) self.ui.btn_upload.clicked.connect(self.upload) self.ui.btn_upload.setEnabled(False) self.ui.rad_dataOn.setChecked(True) self.ui.prg_inkLevel.setTextVisible(True) def toggla_connessione(self): connessa = self.printer.connected if connessa: connessa = self.printer.disconnetti() else: connessa = self.printer.connetti() if connessa: self.ui.btn_connect.setText("DISCONNETTI") self.ui.lbl_stat.setText("Connesso") self.printer.sendCommand(protocol.deleteMemory()) self.timer.start(5000) self.timer.timeout.connect(self.keepalive) else: self.timer.stop() self.ui.lbl_stat.setText("Disconnesso") self.ui.btn_connect.setText("CONNETTI") self.updateStatusView() def updateStatusView(self): connessa = self.printer.connected self.ui.btn_upload.setEnabled(connessa) if connessa: self.ui.lbl_stat.setText("Ready") self.ui.prg_inkLevel.setValue(self.printer.headStatus["iuse"]) self.ui.lcd_printCount.display(str(self.printer.headStatus["labelCnt"])) else: self.ui.prg_inkLevel.setValue(0) self.ui.lcd_printCount.display('0') def keepalive(self): # TODO: usare il primo argomento di keepalive (stato connessione) per aggiornare la ui _, statusUpdated = self.printer.keepalive() if statusUpdated: self.updateStatusView() pass def upload(self): if self.ui.rad_dataOn.isChecked(): date = datetime.datetime.now() date = date.strftime(self.printer.data["dateformat"]) else: date = "" descr = str(self.ui.txt_descr.toPlainText()).capitalize() self.printer.sendCommand(protocol.callPrintImage(imageName='TM1.00I', printMode='11', fieldContent = '{0}\r{1}'.format(self.ui.txt_model.text().upper(),date + descr))) r=self.printer.readResponse('callPrintImage') if protocol.checkResponse('callPrintImage', r): self.log.info("Caricamento Riuscito") self.ui.lbl_stat.setText(self.subChars(r)) else: self.log.error("Caricamento Fallito") def quit(self): pass def subChars(self, s): subDict = {'\x02': "#STX ", '\x03': "#ETX ", '\x1B': "#ESC ", '\r': "#CR ", '\f': "#LF ", '\t': "#TAB ", '\x06': "#ACK ", '\x15': "#NACK " } out = "" for c in s: if c in subDict.keys(): out += subDict[c] else: out += c return out if __name__ == '__main__': app = PyQt5.QtWidgets.QApplication(sys.argv) configFilePath = "conf.json" print(os.getcwd()) # Setup Logger LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) LOGGER.propagate = False FORMATTER = logging.Formatter(("%(asctime)s|%(levelname)-7s|%(funcName)-10s|%(lineno)-3d: %(message)-50s"),\ ("%m-%d %H:%M:%S")) # Console Logging cl= logging.StreamHandler(sys.stdout) cl.setLevel(logging.DEBUG) cl.setFormatter(FORMATTER) LOGGER.addHandler(cl) window = MainWindow(configFilePath, LOGGER) window.show() sys.exit(app.exec_())