diff --git a/MkpWIFI/main.py b/MkpWIFI/main.py index a246995..4146d90 100644 --- a/MkpWIFI/main.py +++ b/MkpWIFI/main.py @@ -4,22 +4,24 @@ Created on 8 apr 2019 @author: Emanuele Trabattoni ''' -import sys +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): + def __init__(self, configFilePath, LOGGER): try: - self.printer = MarkoPrinter(configFilePath) + 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()) @@ -31,27 +33,18 @@ class MainWindow(PyQt5.QtWidgets.QMainWindow): self.ui.rad_dataOn.setChecked(True) self.ui.prg_inkLevel.setTextVisible(True) - def updateStatusView(self): - connessa = self.printer.connected - self.ui.btn_upload.setEnabled(connessa) - if connessa: - 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 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.timer.start(self.printer.settings["keepalive"]) + self.printer.sendCommand(protocol.deleteMemory()) + self.timer.start(5000) self.timer.timeout.connect(self.keepalive) else: self.timer.stop() @@ -59,11 +52,23 @@ class MainWindow(PyQt5.QtWidgets.QMainWindow): 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(): @@ -72,20 +77,54 @@ class MainWindow(PyQt5.QtWidgets.QMainWindow): else: date = "" descr = str(self.ui.txt_descr.toPlainText()).capitalize() - datastr = str(self.ui.txt_model.text()).upper() + "\r" + \ - date + descr + "\r" - response, statusUpdated = self.printer.upload(descr, datastr) - if statusUpdated: - self.updateStatusView() - self.ui.lbl_stat.setText(response) + 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 = "MkpWIFI/conf.json" - window = MainWindow(configFilePath) + 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_()) diff --git a/MkpWIFI/printer.py b/MkpWIFI/printer.py index fc93d3d..4ef19f6 100644 --- a/MkpWIFI/printer.py +++ b/MkpWIFI/printer.py @@ -150,6 +150,8 @@ class MarkoPrinter: c = self.printSock.recv(1) # disattivo lettura bloccante self.printSock.settimeout(0.5) + # VERIFICARE SE VA BENE + self.reading = False return str(buf, 'ascii') except socket.timeout as t: self.reading = False diff --git a/MkpWIFI/templateStampa/TM1.00I b/MkpWIFI/templateStampa/TM1.00I new file mode 100644 index 0000000..94b646f --- /dev/null +++ b/MkpWIFI/templateStampa/TM1.00I @@ -0,0 +1,4 @@ +X;#=51;g=1;h=MODELLO:P1-0-000000000;A9mmB;~xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx~ +X;#=52;g=1;h=Descrizione:P1-0-014800000;A4mm;~xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx~ +P1r0-035430000;; +P1-0-000000000:h=24