Rhaban
(Themenstarter)
Anmeldungsdatum: 25. Juni 2016
Beiträge: 465
Wohnort: München
|
Hallo, kB, vielen Dank für Deine schnelle Antwort! Teil 1 Deiner Vorschläge habe ich umgesetzt: Ich habe den OKI-Drucker über die parallele Schnittstelle des Druckers und einen Adapter an einen USB-Anschluss des Computers angeschlossen, dann habe ich den Drucker in den Systemeinstellungen gelöscht, aus- und wieder eingeschaltet und neu eingerichtet. Die alte USB-Verbindung Rechner ― OKI-Drucker habe ich unterbrochen; der MS-DOS-Rechner ist derzeit ausgeschaltet, die parallele Verbindung MS-DOS-Rechner ― OKI-Drucker habe ich noch belassen. Bei der Einrichtung des OKI-Druckers bin ich ganz am Anfang auf Wahlmöglichkeiten gestoßen, die mir leider nicht klar waren. Es steht da ― Manuelle URI
Weitere Netzwerkdrucker
― https
― LPD/LPR-Host oder Drucker
― IPPS
― IPP
― App Socket/HP JetDirect
Lokale Drucker
― Serial Port # 5
― Brother HL-5250DN series
― Brother QL-500
Da meine beiden funktionierenden Brotherdrucker unten schon erwähnt sind, habe ich auf "Serial Port # 5" geklickt. Ich hoffe, das ist richtig so. Ein Versuch zuvor mit "LPD/LPR-Host oder Drucker" hat leider nicht funktioniert. Ich habe dann in den Systemeinstellungen unter „Einrichten” auch die Möglichkeit entdeckt, dem Drucker eine Testseite zu schicken. Das habe ich natürlich versucht; in der Druckerwarteschlange steht nun "Rendering completed". Der Drucker hat aber nichts ausgedruckt. In der Druckerwarteschlange steht "Rendering completed". Ich habe, wie Du geraten hattest,
| sudo /usr/lib/cups/backend/parallel ; echo $?
|
Es wird nichts ausgegeben; der Kontrollwert ist 0. Bei
| sudo /usr/lib/cups/backend/usb ; echo $?
|
kommt
| direct usb://Brother/HL-5250DN%20series?serial=G8J701385 "Brother HL-5250DN series" "Brother HL-5250DN series" "MFG:Brother;CMD:PJL,PCL,PCLXL,POSTSCRIPT;MDL:HL-5250DN series;CLS:PRINTER;" ""
direct usb://Brother/QL-500?serial=K5Z497181 "Brother QL-500" "Brother QL-500" "MFG:Brother;CMD:PT-CBP;MDL:QL-500;CLS:PRINTER;" ""
|
Der Kontrollwert ist auch hier 0. (...) So, jetzt habe ich noch etwas Anderes versucht: Der OKI-Drucker hat drei Schnittstellen: eine Centronicsschnittstelle, eine parallele und eine USB-Schnittstelle. Wenn ich mich recht erinnere, hat die parallele Schnittstelle am Drucker nie funktioniert; der MS-DOS-Rechner hängt an der Centronicsschnittstelle (ist mir auch erst jetzt aufgefallen). Ich habe nun den Linuxrechner via Adapter und entsprechendem Kabel an die Centronicsschnittselle gehängt und wieder den OKI-Rechner neu eingerichtet. Für Dich als Fachmann ist vielleicht der bei der Druckerinstallation (automatisch erzeugte) Eintrag unter „Verbindung” interessant:
| serial:/dev/ttyS4?baud=115200+bits=8+parity=+flow=none
|
Tatsächlich frage ich mich, ob dieser Eintrag nicht von einer seriellen Schnittstelle ausgeht ("serial"). Eine solche habe ich aber weder am Rechner noch am OKI-Drucker. Ich habe nun noch einmal
| sudo /usr/lib/cups/backend/parallel ; echo $?
|
eingegeben; es wird wieder der OKI-Drucker nicht angezeigt, der Kontrollwert ist wieder 0. Viele Grüße! Rhaban
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8625
Wohnort: Münster
|
Rhaban schrieb: […] Der OKI-Drucker hat drei Schnittstellen: eine Centronicsschnittstelle, eine parallele und eine USB-Schnittstelle.
Wenn ich mich recht erinnere, hat die parallele Schnittstelle am Drucker nie funktioniert;
Ich vermute, Du hast irrtümlich den 25-poligen Anschluss als parallele Schnittstelle angesehen. Dies ist jedoch wohl die serielle Schnittstelle. Möglicherweise ist diese durch frühere falsche Beschaltung nun defekt. Handbuch (vorher) lesen hilft. Centronics-Schnittstelle = Parallele Schnittstelle (jedenfalls bei Druckern)
der MS-DOS-Rechner hängt an der Centronicsschnittstelle (ist mir auch erst jetzt aufgefallen). Ich habe nun den Linuxrechner via Adapter und entsprechendem Kabel an die Centronicsschnittselle gehängt und wieder den OKI-Rechner neu eingerichtet.
Für Dich als Fachmann ist vielleicht der bei der Druckerinstallation (automatisch erzeugte) Eintrag unter „Verbindung” interessant:
| serial:/dev/ttyS4?baud=115200+bits=8+parity=+flow=none
|
Tatsächlich frage ich mich, ob dieser Eintrag nicht von einer seriellen Schnittstelle ausgeht ("serial"). Eine solche habe ich aber weder am Rechner noch am OKI-Drucker.
Betreibe den Drucker nach Möglichkeit über die parallele Centronics-Schnittstelle, also Wenn das nicht möglich sein sollte, beschaffe Dir einen Adapter USB ./. Drucker mit 36-poliger Centronics-Steckverbindung
|
Rhaban
(Themenstarter)
Anmeldungsdatum: 25. Juni 2016
Beiträge: 465
Wohnort: München
|
Lieber kB, vielen Dank für Deine Nachricht! Ich hatte den Drucker vom MS-DOS-Rechner an der Centronicsschnittstelle angesteuert; das hat auch stets funktioniert. Du vermeintliche parallele Schnittstelle (und die wohl in Wirklichkeit seriell ist), hatte zu MS-DOS-Zeiten nie funktioniert. Nachdem Du ja von der USB-Verbindung abgeraten hattest, habe ich den Drucker jetzt über die Centronicsschnittstelle an den Linuxrechner gehängt. Hierbei habe nimmt das Druckersignal nun den folgenden Weg: Linuxrechner: USB Adapterkabel: USB ― parallel weiblich Kabel: parallel männlich ― Centronics OKI-Drucker: Centronics Ich habe nun noch einmal versucht, die kleine Datei 011.prn mit
an den Drucker zu senden. Es kommt: „Der Drucker oder die Klasse existiert nicht.”. In den Systemeinstellungen ist die Druckerwarteschlange leer. Gebe ich
ein, kommt als Ergebnis:
| printer Brother_QL-550 is idle. enabled since Di 11 Jul 2017 16:27:56 CEST
printer HL-5250DN-series is idle. enabled since Fr 14 Jul 2017 09:33:35 CEST
printer OKI is idle. enabled since Fr 14 Jul 2017 15:28:41 CEST
Finished page 1.
printer QL-500 is idle. enabled since Fr 14 Jul 2017 09:26:47 CEST
Brother_QL-550 akzeptiert anfragen seit Di 11 Jul 2017 16:27:56 CEST
HL-5250DN-series akzeptiert anfragen seit Fr 14 Jul 2017 09:33:35 CEST
OKI akzeptiert anfragen seit Fr 14 Jul 2017 15:28:41 CEST
QL-500 akzeptiert anfragen seit Fr 14 Jul 2017 09:26:47 CEST
system default destination: HL-5250DN-series
|
Auch wenn jetzt der OKI-Drucker über die Centronicsschnittstelle verbunden ist, druckt der Drucker leider nicht; er druckt übrigens auch nicht die PDF-Datei. Weißt Du noch einen Rat? Viele Grüße Dein Rhaban
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8625
Wohnort: Münster
|
Ich kann die Funktionsfähigkeit Deiner Hardware nicht aus der Ferne abschließend beurteilen, vermute aber, dass am Drucker die serielle und die USB Schnittstelle defekt sind. Die Centronics-Schnittstelle des Druckers funktioniert jedoch lt. Deiner Aussage am MS-DOS-Rechner. Aus meiner Sicht ist diese Schnittstelle daher die sinnvolle Basis für weitere Versuche. Kannst Du die Funktionsfähigkeit der USB-Schnittstelle am Linux-Rechner prüfen, z.B. durch Anschluss eines anderen Gerätes? Kannst Du die Funktionsfähigkeit des USB ./. Centronics Adapters prüfen? Unterstellt, dass sowohl die USB-Schnittstelle am Rechner und der Adapter funktionsfähig sind, liefert Dir sudo /usr/lib/cups/backend/usb eine Liste aller an USB-Schnittstellen erkannten Drucker und lpstat -v eine Liste aller aus Sicht der Software konfigurierten und ansprechbaren Drucker. Was liefert der erste Befehl, wenn der USB ./. Centronics Adapter nicht angesclossen ist, wenn der Adapter am Rechner angeschlossen, aber nicht mit dem Drucker verbunden ist, wenn der Adapter am Rechner angeschlossen und mit dem Drucker verbunden, dieser aber ausgeschaltet ist, wenn der Adapter am Rechner angeschlossen und mit dem Drucker verbunden und dieser eingeschaltet ist?
|
Rhaban
(Themenstarter)
Anmeldungsdatum: 25. Juni 2016
Beiträge: 465
Wohnort: München
|
Hallo, kB, vielen Dank für Deine Nachricht von heute Abend. Ich will, so gut ich kann, alles, Schritt für Schritt, hier nachvollziehen. Auf Seiten des OKI-Druckers verwende ich jetzt nur noch die Centronicsschnittschnelle, das ist am sichersten.
Kannst Du die Funktionsfähigkeit der USB-Schnittstelle am Linux-Rechner prüfen, z.B. durch Anschluss eines anderen Gerätes?
Das geht. Ich habe gerade eben über dieselbe Schnittschnelle eine Datensicherung auf einen USB-Stick gemacht. Kein Problem.
Kannst Du die Funktionsfähigkeit des USB ./. Centronics Adapters prüfen?
Das ist tatsächlich schwierig, weil ich ja Centronics stets nur im Umfeld von MS-DOS verwendet habe; da hatte ich nie USB-Schnittstellen (außer beim Anschluss eines externen Diskettenlaufwerkes). Unterstellt, dass sowohl die USB-Schnittstelle am Rechner und der Adapter funktionsfähig sind, liefert Dir sudo /usr/lib/cups/backend/usb eine Liste aller an USB-Schnittstellen erkannten Drucker und lpstat -v eine Liste aller aus Sicht der Software konfigurierten und ansprechbaren Drucker. | sudo /usr/lib/cups/backend/usb
|
liefert in der jetzigen Situation:
| direct usb://Brother/HL-5250DN%20series?serial=G8J701385 "Brother HL-5250DN series" "Brother HL-5250DN series" "MFG:Brother;CMD:PJL,PCL,PCLXL,POSTSCRIPT;MDL:HL-5250DN series;CLS:PRINTER;" ""
direct usb://OKI%20DATA%20CORP/ML5100FB "OKI DATA CORP ML5100FB" "OKI DATA CORP ML5100FB" "MFG:OKI DATA CORP;CMD:EPSON,IBM;MDL:ML5100FB;CLS:PRINTER;DES:OKI DATA CORPML5100FB;EXTSTS: " ""
direct usb://Brother/QL-500?serial=K5Z497181 "Brother QL-500" "Brother QL-500" "MFG:Brother;CMD:PT-CBP;MDL:QL-500;CLS:PRINTER;" ""
|
... da ist der OKI-Drucker offensichtlich dabei. Und
liefert
| device for Brother_QL-550: usb://Brother/QL-500?serial=K5Z497181
device for HL-5250DN-series: usb://Brother/HL-5250DN%20series?serial=G8J701385
device for OKI: serial:/dev/ttyS4?baud=115200+bits=8+parity=+flow=none
device for QL-500: usb://Brother/QL-500?serial=K5Z497181
|
(Der Etikettendrucker taucht zweimal auf, einmal als QL-500, ein anderes Mal als QL-550. Er funktioniert aber ohne Probleme.)
Was liefert der erste Befehl, wenn der USB ./. Centronics Adapter nicht angeschlossen ist?
Ich habe jetzt die USB-Verbindung am Linuxrechner getrennt. Es kommt:
| direct usb://Brother/HL-5250DN%20series?serial=G8J701385 "Brother HL-5250DN series" "Brother HL-5250DN series" "MFG:Brother;CMD:PJL,PCL,PCLXL,POSTSCRIPT;MDL:HL-5250DN series;CLS:PRINTER;" ""
direct usb://Brother/QL-500?serial=K5Z497181 "Brother QL-500" "Brother QL-500" "MFG:Brother;CMD:PT-CBP;MDL:QL-500;CLS:PRINTER;" ""
|
Der OKI-Drucker ist nicht mehr dabei!
wenn der Adapter am Rechner angeschlossen und mit dem Drucker verbunden, dieser aber ausgeschaltet ist?
Es kommt:
| direct usb://Brother/HL-5250DN%20series?serial=G8J701385 "Brother HL-5250DN series" "Brother HL-5250DN series" "MFG:Brother;CMD:PJL,PCL,PCLXL,POSTSCRIPT;MDL:HL-5250DN series;CLS:PRINTER;" ""
direct usb://Brother/QL-500?serial=K5Z497181 "Brother QL-500" "Brother QL-500" "MFG:Brother;CMD:PT-CBP;MDL:QL-500;CLS:PRINTER;" ""
|
Offenbar ist das das Gleiche wie zuvor. Und nun:
wenn der Adapter am Rechner angeschlossen und mit dem Drucker verbunden und dieser eingeschaltet ist?
| direct usb://Brother/HL-5250DN%20series?serial=G8J701385 "Brother HL-5250DN series" "Brother HL-5250DN series" "MFG:Brother;CMD:PJL,PCL,PCLXL,POSTSCRIPT;MDL:HL-5250DN series;CLS:PRINTER;" ""
direct usb://OKI%20DATA%20CORP/ML5100FB "OKI DATA CORP ML5100FB" "OKI DATA CORP ML5100FB" "MFG:OKI DATA CORP;CMD:EPSON,IBM;MDL:ML5100FB;CLS:PRINTER;DES:OKI DATA CORPML5100FB;EXTSTS: " ""
direct usb://Brother/QL-500?serial=K5Z497181 "Brother QL-500" "Brother QL-500" "MFG:Brother;CMD:PT-CBP;MDL:QL-500;CLS:PRINTER;" ""
|
Jetzt ist der OKI-Drucker wieder dabei. wenn ich die Sache recht interpretiere, ist der OKI-Drucker über den Adapter und über die Centronicsschnittstelle ansprechbar. Für alle Hilfe besten Dank! Wozu rätst Du in dieser Situation? Viele Grüße! Rhaban
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
Verwendet ihr immer noch den gleichen Treiber? Laut Spezifikationen 🇬🇧 unterstützt der OKI ML5100FB Emulation von ESC/P, IBM ProPrinter und IBM AGM. Alternativ ständen also noch zwei Standardtreiber (Generic) für einen Test zur Auswahl:
Der angebotene Windows-Treiber wird auch nur schlicht als „ESC/P Printer Driver“ beschrieben.
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8625
Wohnort: Münster
|
Rhaban schrieb: […] sudo /usr/lib/cups/backend/usb
liefert in der jetzigen Situation:
direct usb://Brother/HL-5250DN%20series?serial=G8J701385 "Brother HL-5250DN series" "Brother HL-5250DN series" "MFG:Brother;CMD:PJL,PCL,PCLXL,POSTSCRIPT;MDL:HL-5250DN series;CLS:PRINTER;" ""
direct usb://OKI%20DATA%20CORP/ML5100FB "OKI DATA CORP ML5100FB" "OKI DATA CORP ML5100FB" "MFG:OKI DATA CORP;CMD:EPSON,IBM;MDL:ML5100FB;CLS:PRINTER;DES:OKI DATA CORPML5100FB;EXTSTS: " ""
direct usb://Brother/QL-500?serial=K5Z497181 "Brother QL-500" "Brother QL-500" "MFG:Brother;CMD:PT-CBP;MDL:QL-500;CLS:PRINTER;" ""
... da ist der OKI-Drucker offensichtlich dabei.
Und
lpstat -v
liefert
device for Brother_QL-550: usb://Brother/QL-500?serial=K5Z497181
device for HL-5250DN-series: usb://Brother/HL-5250DN%20series?serial=G8J701385
device for OKI: serial:/dev/ttyS4?baud=115200+bits=8+parity=+flow=none
device for QL-500: usb://Brother/QL-500?serial=K5Z497181
Du musst jetzt natürlich in der Drucker-Konfiguration den alten Drucker OKI (mit der seriellen Verbindung) löschen und einen neuen Drucker anlegen, der als URL bzw. als device die oben gefundene Verbindung direct usb://OKI%20DATA%20CORP/ML5100FB verwendet. Diese müsste dann auch vom Befehl lpstat -v angezeigt werden.
@mrkramps: Dein Hinweis auf alternative Druckertreiber ist grundsätzlich richtig. Allerdings wird der Druckertreiber beim angestrebten raw-printing-mode (lpr -l …) gar nicht verwendet und wird erst dann Optimierungspotential, wenn die Kommunikation Rechner zu Drucker auf der hardware-nahen Ebene funktioniert. Dazu muss in cups die Warteschlange mit dem richtigen device verbunden werden.
|
Rhaban
(Themenstarter)
Anmeldungsdatum: 25. Juni 2016
Beiträge: 465
Wohnort: München
|
Hallo, kb,
hallo, mrkramps, für Eure Nachrichten vielen Dank! kb, Du schriebst:
Du musst jetzt natürlich in der Drucker-Konfiguration den alten Drucker OKI (mit der seriellen Verbindung) löschen und einen neuen Drucker anlegen, der als URL bzw. als device die oben gefundene Verbindung direct usb://OKI%20DATA%20CORP/ML5100FB verwendet. Diese müsste dann auch vom Befehl lpstat -v angezeigt werden.
Den (seriell eingestellten) OKI-Drucker habe ich gelöscht. Ich habe dann im Installationsprogramm „Drucker neu einrichten” aufgerufen und den OKI-Drucker eingeschaltet. Es erschien dann in der linken Spalte des Installationsprogramms "OKI DATA CORP ML5100FB"; auf diese Angabe habe ich natürlich geklickt. In der rechten Spalte wurde dann eine ganze Anzahl von Möglichkeiten angeboten; ich habe bei den Treibern auf "Oki Microline 192+ Foomatic/oki182 (recommended) geklickt, wobei ich gestehen muss, dass meine Wahl eher willkürlich war. Motiviert hatte mich "Microline" (zu dieser Gruppe gehört ja mein OKI-Drucker). Ich habe dann die Datei 011.prn ―
― mit
| lpr -l -P OKI_DATA_CORP_ML5100FB 011.prn
|
an den Drucker geschickt und der Drucker druckte zum ersten Mal von Linux aus, worüber ich mich natürlich sehr freue. Allerdings hat er auf die gleiche Stelle, wo das „H” von „Hallo!” steht, einen schwarzen halben Block (könnte Zeichen 220 dezimal, DCh, in der alten ASCII-Tabelle sein) gedruckt und hat die Zeichen, die ich eigentlich als Seitenvorschub ans Ende der Datei gesetzt hatte ― \x0C ― in voller Länge als Text ausgedruckt. Es steht also da: "Hallo!\x0C". Ich habe das Druckerinstallationsprogramm noch einmal aufgerufen und habe als Treiber auf "Oki Microline 192+ Foomatic/ibmpro" geklickt. Der Ausdruck sah fast gleich aus, wieder "\x0C" als Text, nur der schwarze Block auf dem „H” war diesmal nicht zu sehen. Ich habe es dann mehrfach mit ganz kleinen Test-Druck-Dateien wie 011.prn versucht; der Drucker ließ sich aber nur dann zum Druck bewegen, wenn ich ihn kurz aus- und wieder eingeschaltet habe. Vermutlich erwartet er einen Papier-Auswurfs-Code (das wäre eigentlich \x0C) oder irgendetwas Anderes; er scheint aber die Druckersteuerungsbefehle nicht in der Form \x1B etc. zu verstehen. Vermutlich habe ich den falschen Treiber ausgewählt. Ich freue mich sehr über den Fortschritt und danke Euch. Könnt Ihr mir bitte einen geeigneten Treiber aus der Kubuntu-OKI-Treiber-Liste empfehlen? Ein schönes Wochenende und viele Grüße! Rhaban
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
Erwartet der Drucker ggf. eine andere Zeichensatzkodierung für die RAW-Eingabe? Linux verwendet standardmäßig UTF-8 und MS-DOS irgendwas mit Code Page 437 oder 850? Die Testdateien mal mit todos konvertieren und schauen, was passiert.
|
Rhaban
(Themenstarter)
Anmeldungsdatum: 25. Juni 2016
Beiträge: 465
Wohnort: München
|
Hallo, mrkramps, Du hattest geschrieben:
Erwartet der Drucker ggf. eine andere Zeichensatzkodierung für die RAW-Eingabe? Linux verwendet standardmäßig UTF-8 und MS-DOS irgendwas mit Code Page 437 oder 850? Die Testdateien mal mit todos konvertieren und schauen, was passiert.
Ich habe todos (und fromdos) installiert und 011.prn mit todos in ein DOS-Format umgewandelt. Dann habe ich mit
| lpr -l -P OKI_DATA_CORP_ML5100FB 011.prn
|
die (nun mit DOS-Zeilenvorschub ausgestattete) Datei an den OKI-Drucker geschickt. Gedruckt wurde:
mithin: Der Befehl 0Ch (hier: \x0C), die Seite wieder aus dem Flachbettdrucker auszuwerfen, wurde wieder als Text "\x0C") ausgedruckt. Eine weitere Merkwürdigkeit (für mich als Laien): Beim ersten Aufruf
| lpr -l -P OKI_DATA_CORP_ML5100FB 011.prn
|
druckt der OKI-Drucker einmal die Zeile
rufe ich denselben Befehl erneut auf, reagiert der Drucker gar nicht mehr. Sehe ich mir die Druckerwarteschlange an, ist sie aber leer. Ich kann den OKI-Drucker nur dann erneut verwenden, wenn ich ihn aus- und wieder einschalte. Gestattet mir bitte die folgenden (laienhaften) Fragen: 1. Gibt es eine Möglichkeit, bei der Installation des OKI-Druckers gar keinen Treiber zu verwenden? 2. Beim Brother-HL5250DN-Drucker kann ich mit "\x1B" (beispielsweise) <ESCAPE> an den Drucker schicken; ich kann problemlos etwa mit "\x1B(11U" den Drucker ― für den gerade aktuellen ― Druckauftrag auf den MS-DOS-Druck-Zeichensatz 11U umstellen. ― Wie kann ich Zeichen, die außerhalb der „normalen” Buchstaben und Zahlen liegen, etwa <ESCAPE>, an den OKI-Drucker schicken? Unter MS-DOS (Witchalpha) war das kein Problem, da habe ich beispielsweise nur Textzeichen, aber auch die Druckersteuerungsbefehle (ohne Treiber, ohne alles) an den OKI-Drucker geschickt und er hat folgsam reagiert. 3. Könnte es sein, dass der bei der Installation ausgewählte Treiber auch den halben schwarzen Block auf dem „H” von „Hallo!”, vermutlich 220d, DCh, beim allerersten gelungenen Ausdruck bewirkt hat? Anders gesagt: Kann man ― auch mit lpr -l ― Daten so an den Drucker schicken, dass wirklich nur die Daten dort ankommen und nichts aus dem Treiber? 4. Gibt es einen Shellbefehl, mit dem man einzelne Zeichen oder eine Druckzeile an den Drucker schicken kann. Das war unter Witchalpha möglich. Wenn ich die Sache für die Shell richtig verstanden habe, kann man mit lpr -l nur ganze (Text-)Dateien an den Drucker schicken. Viele Grüße! Rhaban
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8625
Wohnort: Münster
|
Rhaban schrieb: […] Gedruckt wurde:
mithin: Der Befehl 0Ch (hier: \x0C), die Seite wieder aus dem Flachbettdrucker auszuwerfen, wurde wieder als Text "\x0C") ausgedruckt.
Darauf hatte ich Dich bereits in einem frühen Stadium unserer Diskussion hingewiesen: Im raw-mode müssen die ESC-Sequenzen und sonstige Steuerzeichen bereits von der Software verarbeitet werden, das ist die Aufgabe des Druckertreibers. raw-mode bedeutet: Es wird kein Druckertreiber verwendet, sondern die Daten werden vom Drucksystem unbearbeitet an den Drucker gesendet. Für einen Zeilenvorschub musst Du z.B. die Zeichen Nr. 13 und 10 bzw. hexadezimal 0d und 0a an den Drucker schicken und nicht deren textuelle Beschreibungen \x0D, \x0A. Entsprechen Zeichen Nr. 12 bzw hexadezimal 0c für einen Seitenvorschub.
[…] 1. Gibt es eine Möglichkeit, bei der Installation des OKI-Druckers gar keinen Treiber zu verwenden?
2. Beim Brother-HL5250DN-Drucker kann ich mit "\x1B" (beispielsweise) <ESCAPE> an den Drucker schicken; ich kann problemlos etwa mit "\x1B(11U" den Drucker ― für den gerade aktuellen ― Druckauftrag auf den MS-DOS-Druck-Zeichensatz 11U umstellen. ― Wie kann ich Zeichen, die außerhalb der „normalen” Buchstaben und Zahlen liegen, etwa <ESCAPE>, an den OKI-Drucker schicken? Unter MS-DOS (Witchalpha) war das kein Problem, da habe ich beispielsweise nur Textzeichen, aber auch die Druckersteuerungsbefehle (ohne Treiber, ohne alles) an den OKI-Drucker geschickt und er hat folgsam reagiert.
Dann ist der Brother-Drucker so eingestellt bzw. vom Hersteller so programmiert, dass er diese Umschreibungen für Steuerzeichen interpretiert. Das ist beim OKI-Drucker offenbar anders. Möglicherweise lässt sich der OKI aber durch eine Steuerzeichen-Folge in einen Modus wie beim Brother umschalten.
3. Könnte es sein, dass der bei der Installation ausgewählte Treiber auch den halben schwarzen Block auf dem „H” von „Hallo!”, vermutlich 220d, DCh, beim allerersten gelungenen Ausdruck bewirkt hat? Anders gesagt: Kann man ― auch mit lpr -l ― Daten so an den Drucker schicken, dass wirklich nur die Daten dort ankommen und nichts aus dem Treiber?
4. Gibt es einen Shellbefehl, mit dem man einzelne Zeichen oder eine Druckzeile an den Drucker schicken kann. Das war unter Witchalpha möglich. Wenn ich die Sache für die Shell richtig verstanden habe, kann man mit lpr -l nur ganze (Text-)Dateien an den Drucker schicken.
lpr unter einem Linux-Systems mit CUPS-Drucksystem druckt gar nicht, sondern übergibt die zu druckende Datei an cups, der sie in die angegebene Warteschlange (bei Dir OKI) stellt, die Datei aufbereitet, indem er sie durch eine Kaskade von Filtern schickt (Diese werden vom Druckertreiber bestimmt und beim raw-mode entfällt dieser Schritt!), und schlieslich einem "backend" übergibt, welches den Oktet-Strom an den Drucker sendet.
Das für Deinen OKI zuständige backend ist /usr/lib/cups/backend/usb mit der URL usb://OKI%20DATA%20CORP/ML5100FB. Im Prinzip kann man als root unter Beachtung der Aufruf-Konvention diesem Programm auch direkt eine Druckdatei übergeben; das ist aber extrem umständlich. Der USB-Centronics-Adapter sollte eine Linux-Device-Node angelegt haben, suche mal mit ls -l /dev/lp* nach parallelen Druckerschnittstellen. Als root solltest Du Zeichen auf diese Datei(en) ausgeben können, die an den Drucker geschickt werden.
|
Rhaban
(Themenstarter)
Anmeldungsdatum: 25. Juni 2016
Beiträge: 465
Wohnort: München
|
Hallo! Vielen Dank für Deine lange und ausführliche Nachricht! Ich habe jetzt wahrscheinlich einen Trick gefunden, der es ermöglicht, auch <ESCAPE>-Codes und andere Druckersteuerzeichen an den OKI-Drucker zu schicken. Nämlich, indem ich das, was ich drucken will, nicht als KWrite-Textdatei schreibe, sondern, indem ich die Datei mit
erzeuge, im konkreten Fall also etwa
| echo -e -n ”\x1B\x40Hallo\x0C" > 013.prn
|
Wenn ich mir die so erzeugte Datei unter KWrite ansehe, erscheinen die beiden Steuerungszeichen am Anfang symbolisch als außerhalb der „normalen” ASCII-Codes liegende Zeichen. Freilich darf ich mir die Datei nur ansehen, aber unter KWrite nicht speichern, weil sonst Zeilenvorschübe etc. in die Datei gesetzt würden. Schicke ich diese Datei mit | lpr -l -P OKI_DATA_CORP_ML5100FB 013.prn
|
an den Drucker, druckt er "Hallo" ... und macht einen Seitenvorschub, das heißt: Da es sich um einen Flachbettdrucker handelt, wird das Papier nach vorne wieder hinausgeschoben. Ich freue mich sehr, dass ich so Druckersteuerungscodes an den OKI-Rechner schicken konnte. Zwei Punkte sind aber leider noch nicht geklärt: 1. Wenn ich hinter „Hallo” eine Ausrufezeichen setze ― mithin
| echo -e -n ”\x1B\x40Hallo!\x0C" > 013.prn
|
―, kommt an der Shell eine Fehlermeldung:
| bash: !\x0C: event not found
|
... was ich leider nicht verstehe. 2. Nicht selten lässt sich der OKI-Drucker nur dann zum Drucken bewegen, wenn man ihn aus- und wieder einschaltet. Wenn ich mir (unter „Systemeinstellungen”) die Druckerwarteschlange ansehe, lese ich, dass der Druckauftrag nicht drucken kann, weil der Drucker noch nicht frei sei ... oder die Druckerwarteschlange ist ganz leer. Danke für diese Information:
3. Könnte es sein, dass der bei der Installation ausgewählte Treiber auch den halben schwarzen Block auf dem „H” von „Hallo!”, vermutlich 220d, DCh, beim allerersten gelungenen Ausdruck bewirkt hat? Anders gesagt: Kann man ― auch mit lpr -l ― Daten so an den Drucker schicken, dass wirklich nur die Daten dort ankommen und nichts aus dem Treiber?
Nein. Beim raw-modus wird der Druckertreiber umgangen.
Das versuche ich ja auszunutzen (wie ich das ja auch auf dem Brotherdrucker mache).
Der USB-Centronics-Adapter sollte eine Linux-Device-Node angelegt haben, suche mal mit ls -l /dev/lp* nach parallelen Druckerschnittstellen. Als root solltest Du Zeichen auf diese Datei(en) ausgeben können, die an den Drucker geschickt werden.
Leider konnte ich Verzeichnisse /dev/lp* nicht finden.
Warum willst Du unbedingt im raw-mode drucken? Benutze doch einfach einen der Dir von mrkramps und mir vorgeschlagenen Treiber und lass die Option -l im Druckbefehl lpr weg.
Natürlich gibt es viele Sachen, bei denen ich den Treiber nutze (oder das verwendete Programm ihn nutzt). Ich bin aber dabei, mehrere (alte) Programme von MS-DOS (Witchalpha) auf Linux umzustellen. Da das eigene Programme sind, ist es für mich letztlich einfacher, die Druckersteuerung aus den alten Programmen in die neuen Bash-Shell-Programme zu übernehmen als über irgendein Programm eine Lösung zu suchen. Ein konkretes Beispiel: Ich habe (oder hatte) ein Programm unter MS-DOS, das es mir erlaubt hat, auf Kontoauszügen zeilengenau den Buchungssatz zu drucken. Der OKI-Drucker musste also wissen, wie viele Zeilen er das Kontoauszugsblatt einzuziehen hatte, was er genau dorthin zu drucken hatte und dass er dann das Blatt wieder auszuschieben hatte. Wenn ich die alten Druckerbefehle, z. B.
| movestr($0,27) concat($0,64) print($0)
|
1 : 1 in die Shell übernehmen kann ...
| echo -e -n "\x1B\x40" > 14.prn
|
und die Sache dann mit lpr -l ausdrucken kann, erscheint mir das viel einfacher, vielleicht auch deshalb, weil ich es so gewöhnt bin. Viele Grüße! Rhaban
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8625
Wohnort: Münster
|
Rhaban schrieb: […] erzeuge, im konkreten Fall also etwa
| echo -e -n ”\x1B\x40Hallo\x0C" > 013.prn
|
Wenn ich mir die so erzeugte Datei unter KWrite ansehe, […]
Schicke ich diese Datei mit | lpr -l -P OKI_DATA_CORP_ML5100FB 013.prn
|
an den Drucker, druckt er "Hallo" ... und macht einen Seitenvorschub, das heißt: Da es sich um einen Flachbettdrucker handelt, wird das Papier nach vorne wieder hinausgeschoben. Ich freue mich sehr, dass ich so Druckersteuerungscodes an den OKI-Rechner schicken konnte.
Zwei Punkte sind aber leider noch nicht geklärt: 1. Wenn ich hinter „Hallo” eine Ausrufezeichen setze ― mithin
| echo -e -n ”\x1B\x40Hallo!\x0C" > 013.prn
|
―, kommt an der Shell eine Fehlermeldung:
| bash: !\x0C: event not found
|
... was ich leider nicht verstehe.
2 Fehler: Das einleitende Anführungszeichen darf kein typographisches Anführungszeichen sein, sondern muss das ASCII-Zeichen hex 22 sein. Und: Das Ausrufezeichen ! ist ein spezielles Steuerzeichen für die bash und ruft einen früheren Befehl ab. Versuche ein Leerzeichen nach dem Ausrufezeichen.
2. Nicht selten lässt sich der OKI-Drucker nur dann zum Drucken bewegen, wenn man ihn aus- und wieder einschaltet. Wenn ich mir (unter „Systemeinstellungen”) die Druckerwarteschlange ansehe, lese ich, dass der Druckauftrag nicht drucken kann, weil der Drucker noch nicht frei sei ... oder die Druckerwarteschlange ist ganz leer.
Das Drucksystem wartet auf eine Rückmeldung vom Drucker, dass er fertig ist. Der Drucker wartet auf einen Hinweis vom Rechner, dass der Druckauftrag beendet ist und schickt daher keine Rückmeldung. Du musst dem Drucker einen EOJ-Befehl (End-of-Job) schicken.
|
Rhaban
(Themenstarter)
Anmeldungsdatum: 25. Juni 2016
Beiträge: 465
Wohnort: München
|
Hallo, kB, vielen Dank für Deine Antwort und Deine Hinweise!
2 Fehler: Das einleitende Anführungszeichen darf kein typographisches Anführungszeichen sein, sondern muss das ASCII-Zeichen hex 22 sein.
Und: Das Ausrufezeichen ! ist ein spezielles Steuerzeichen für die bash und ruft einen früheren Befehl ab. Versuche ein Leerzeichen nach dem nach dem Ausrufezeichen.
Das hat geklappt. Danke! Du schreibst weiterhin:
Das Drucksystem wartet auf eine Rückmeldung vom Drucker, dass er fertig ist.
Der Drucker wartet auf einen Hinweis vom Rechner, dass der Druckauftrag beendet ist und schickt daher keine Rückmeldung.
Du musst dem Drucker einen EOJ-Befehl (End-of-Job) schicken.
Gerne. Nur: Wie lautet der End-of-Job-Befehl für meinen OKI-Drucker? In meinen Unterlagen gibt es drei Befehle, die aus meiner Sicht vielleicht in Frage kommen könnten: <ESC>j „Druckende” sowie <ESC>DC3 und <ESC>Qn „Drucker abwählen”. Ich vermute, dass das n die Nummer des Druckers bedeutet, denn es ist bei der Übertragung in Hexcode nur 1B 51 und nicht für n angegeben. Ich habe nun <ESCAPE>j verwendet; als Hexdump (auch hierfür vielen Dank!) sieht die Datei so aus:
| 00000000 1b 40 48 61 6c 6c 6f 21 20 0c 1b 6a |.@Hallo! ..j|
0000000c
|
Das Ergebnis: Einmal drucken geht, ein zweites Mal drucken geht nicht ... außer ich schalte den Drucker aus und wieder ein. Was mache ich falsch? Viele Grüße! Rhaban
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8625
Wohnort: Münster
|
Rhaban schrieb: […] Ich habe nun <ESCAPE>j verwendet; […]
Das Ergebnis: Einmal drucken geht, ein zweites Mal drucken geht nicht
Wenn Du wirklich ohne Druckertreiber per raw-mode den Drucker verwenden willst, und dafür in Kauf nimmst, die Druckdaten selbst aufbereiten zu müssen, wirst Du die Druckersprache ESC/P lernen müssen. Suche nach einem Handbuch über ESC/P; der Erfinder dieser Druckersprache (Epson) ist dafür ein guter Ansprechpartner. Ich möchte mein menschliches Hirn nicht mit diesen kryptischen Zeichenfolgen belasten und benutze lieber einen Druckertreiber, der alle diese Feinheiten kennt. Vielleicht hilft ein Drucker-Init-Befehl (ESC@) am Anfang und Ende des Druckjobs.
|