Liebe Gemeinde,
ich bin nun an meine Grenzen bzgl. des Codes gekommen und schaffe es zeitlich (berufstätiger Papa von 3 Kiddies ohne Mama) einfach nicht, mich weiter in die Materie einzuarbeiten, vor allem in Hinblick darauf, dass ich wohl nicht wirklich in Python zukünftig Programme erstellen werde.
Ich habe ein lauffähiges Programm mit ca 200 Zeilen, ist mit PyQt5. Das ganze läuft auf meinem Raspberry Pi 3b+ sehr gut und absturzfrei lokal. Netzwerk ist nicht erforderlich. Ich bin mir bewusst, dass der Code nicht optimal geschrieben ist. Folgende Aufgaben lägen an:
Den Code schlank und sauber machen
Eine Meldung, welche das System von Zeit zu Zeit bei einem Ereignis generiert, soll eine bestimmte Aktion (Meldung) im Programm anzeigen. Das Ereignis betrifft den Zustand des Druckers (Papier alle, Farbe alle). Ausdrucken kann ich super aus dem Programm heraus sowohl über Subprocess lp als auch über Cups. Über Flake bekomme ich auch per JSON Info auf Port 5000, leider ist das cups-http-notifier wohl nicht in Python3 geschrieben, jedenfalls komme ich da nicht weiter.
Ich vermute, dass ein Programmierer für die Sache 1 bis 2 Stunden braucht. Als Dank Stelle ich mir 100 Euro vor.
Lieben Dank
Andy
Code Python3 PyQt5 "säubern" und erweitern gegen Honorar
Nachdem ich mich kurz in Python eingelesen habe, löste ich das Problem nun auf folgende Weise:
Das ist noch nicht fertig, aber es funzt soweit erst mal.
Code: Alles auswählen
def druck_test(self):
self.screen = 6
if(self.isLive):
self.camera.stop_preview()
self.isLive = False
f_read = open('/var/log/cups/error_log', 'r')
last_line = f_read.readlines()[-1]
f_read.close()
meldung = (last_line.split(" ", 5)[5])
papier_alle = "No paper tray loaded" in meldung
if (papier_alle is True):
//rumjammern, dass Papier fehlt
// Wenn Papier gewechselt ->
// teste irgendwie, ob alles ok. Logfile schreibt ja nicht in error_log "Alles schick"
else:
self.ui.druck()
def druck(self):
self.screen = 5
....
os.system('/usr/sbin/cupsenable MeinDrucker')
FILE = self.saved+self.lastPhoto
conn = cups.Connection()
conn.printFile(PRINTER, FILE, title='Foto', options={})