PJL Kommandos
Printer Job Language (PJL) Kommandos zur Steuerung von (HP) Druckern
Diese Kurzreferenz ist Teil von Carstens Homepage.
Allgemeine Einführung zur PJL KommandoübermittlungDie Bedeutung einiger Spezialzeichen ist in dieser kleinen Tabelle erläutert:
[..] | optionale Angaben, die OHNE die eckigen Klammern übergeben werden |
<..> | Steuerzeichen, wie zum Beispiel Carriage Return (CR), Linefeed (LF) oder ESC (ESC) |
Auf der Homepage von HP gibt es mittlerweile eine Möglichkeit die gesamte PJL Kommandoreferenz herunterzuladen. Dies sollte man tun, falls man beabsichtigt Programme zu entwickeln. PJL Kommandoreferenz von HP herunterladen.
Diese Aufstellung von Kommandos der sog. Printer Job Language (PJL) ist natürlich nicht vollständig, aber umfaßt die wichtigsten bzw. interessantesten Kommandos. Immerhin kann man mit Hilfe dieser Beschreibung die Defaulteinstellungen des Druckers verändern, zum Beispiel Postscript Fehlerseiten ausschalten, die Papiergröße einstellen oder gar den Papierschacht wählen.. Weitere Möglichkeiten sind ein echtes Accounting nach gedruckten Seiten, Abfrage von Eigenschaften des Druckers und genauer Fehlerstati.
Das folgende Beispiel soll zeigen wie man die unten aufgeführten PJL Kommandos an den Drucker schickt. Jedes PJL Kommando muß mit einer UEL (Universal Exit Language) Sequenz gestartet und beendet werden. Außer im folgenden Beispiel ist diese Sequenz in den folgenden Beispielen nicht mehr erwähnt muß aber dennoch immer mitgesendet werden. Konvention im folgenden Text: Ausgaben des Druckers werden grün dargestellt. Eingaben des Benutzers erscheinen in Rot. Zusätzlich sind diese Texte in einem Font mit festem Zeichenabstand dargestellt.
echo -e "\33%-12345X@PJL\n@PJL USTATUS DEVICE=ON\n\33%-12345X" | cat >/dev/lp0 # Schalte unaufgeforderte Statusmeldungen des Druckers ein # Nun öffnen wir zum Beispiel das Gehäuse... cat /dev/lp0 @PJL USTATUS DEVICE CODE=40021 DISPLAY="00 OFFLINE" ONLINE=FALSE # Nun schliessen wir die Klappe wieder! cat /dev/lp0 @PJL USTATUS DEVICE CODE=10001 DISPLAY="00 ONLINE" ONLINE=TRUE
Wie man sieht ist in "Code" der Fehler codiert. Eine Tabelle Code -> Fehlerstring ist in Vorbereitung...
Im folgenden kommt eine Auflistung der wichtigsten PJL Kommandos mit Beispielen.
Printer Job Language
Universal Exit Language (UEL)
Beendet das Arbeiten mit der derzeitigen Druckersprache und gibt die Kontrolle zurück an PJL. Jeder Druckjob sollte mit diesem Befehl beginnen und enden.
<ESC>%-12345X
Enter Language
Veranlaßt PJL in die angegebene Druckersprache (Personality) zu wechseln. Danach werden bis zum verlassen der Druckersprache über ein UEL mit nachfolgender Neuauswahl einer Druckersprache die anderen normalerweise vom Drucker unterstützen Druckersprachen nicht mehr verstanden!
@PJL ENTER LANGUAGE = Personality [<CR>]<LF> z. B.: @PJL ENTER LANGUAGE = PCL [<CR>]<LF> @PJL ENTER LANGUAGE = POSTSCRIPT [<CR>]<LF>
Job Separation
Job (Start)
Gibt den Beginn eines Druckjobs an. Dies setzt den Druckjob-Seitenzähler zurück. Die Angabe eines Namens für den Druckjob, sowie die Angabe der ersten und letzten zu druckenden Seite ist möglich. Dieser Befehl wird auch dazu benutzt, ein Passwort (Zahl von 0 bis 65535) für PJL-Sicherheit anzugeben.
@PJL JOB [NAME ="Jobname"] [START = erste Seite] [END = letzte Seite] [PASSWORD = Zahl] [<CR>]<LF>
End-Of-Job
Markiert das Ende des Druckjobs. Der Druckjob-Seitenzähler wird zurückgesetzt.
@PJL EOJ [NAME = "Jobname"] [<CR>]<LF>
Environment
Das ist eine der zentralen PJL Funktionen um Grundeinstellungen des Druckers auch über Ein-/Ausschalten hinaus zu verändern.
Initialize
Setzt die derzeitigen und default PJL-Variablen in die Grundeinstellung zurück.
@PJL INITALIZE [<CR>]<LF>
Reset
Setzt die derzeitigen PJL-Variablen auf Default-Werte.
@PJL RESET [<CR>]<LF>
Default
Setzt den Default-Wert für eine Umgebungsvariable. Der Wert wird dauerhaft bis zum Erneuten Ändern gesichert.
@PJL DEFAULT [LPARM: Personality | IPARM: Port] Variable = Wert
[<CR>]<LF>
Set
Setzt eine Umgebungsvariable für die Dauer eines PJL Druckjobs
@PJL SET [LPARM: Personality | IPARM: Port] Variable = Wert [<CR>]<LF>
Da dies eigentlich eines der wichtigsten Kommandos ist folgenden am Ende der Seite ein paar Beispiele zur Verwendung des Kommandos.
PJL Status Readback
Inquire
Fordert den derzeitigen Wert einer Umgebungsvariable vom Drucker an.
@PJL INQUIRE [LPARM: Personality | IPARM: Port] Variable [<CR>]<LF>
Antwort des Druckers
@PJL INQUIRE [LPARM: Personality | IPARM: Port] Variable <CR><LF> Wert <CR><LF> <FF>
Dinquire
Fordert den Default-Wert einer Umgebungsvariable vom Drucker an.
@PJL DINQUIRE [LPARM: Personality | IPARM: Port] Variable [<CR>]<LF>
Antwort des Druckers
@PJL DINQUIRE [LPAIRM: Personality | IPARM: Port] Variable <CR><LF> Wert <CR><LF> <FF>
Info
Fordert eine bestimmte Kategorie von Druckerinformationen an.
@PJL INFO Kategorie [<CR>]<LF>
z. B.:
@PJL INFO ID [<CR>]<LF> @PJL INFO CONFIG [<CR>]<LF> @PJL INFO MEMORY [<CR>]<LF> @PJL INFO PAGECOUNT [<CR>]<LF> @PJL INFO STATUS [<CR>]<LF> @PJL INFO VARIABLES [<CR>]<LF> @PJL INFO USTATUS [<CR>]<LF>
Antwort des Druckers
@PJL INFO Kategorie <CR><LF> [eine oder mehrere Zeilen Informationen] <CR><LF> <FF>
Echo
Gibt den Text an den Hostrechner zurück.
@PJL ECHO [<Text>] [<CR>]<LF>
Antwort des Druckers
@PJL ECHO [<Text>] <CR><LF> <FF>
Ustatus
Erlaubt dem Drucker unaufgefordert Statusmeldungen zu senden.
@PJL USTATUS Variable = Wert [<CR>]<LF>
Antwort des Druckers
@PJL USTATUS Variable <CR><LF> [eine oder mehrere Zeilen Informationen] <CR><LF> <FF>
Ustatusoff
Schaltet die unaufgeforderten Statusmeldungen ab.
@PJL USTATUSOFF [<CR>]<LF>
Device Attendance
Operator Message
Zeigt die angegebene Mitteilung auf dem Drucker-Display (so vorhanden) an und macht den Drucker off-line.
@PJL OPMSG DISPLAY = "Mitteilung" [<CR>]<LF>
Ready Message
Gibt eine Mitteilung an, die das 00 BEREIT auf dem Drucker-Display ersetzt. Beeinflußt nicht den on-line Zustand.
@PJL RDYMSG DISPLAY = "Mitteilung" [<CR>]<LF>
Status Message
Zeigt die angegebene Mitteilung auf dem Drucker-Display an und macht den Drucker off-line. Sendet die gedrückte Taste, die den Drucker wieder on-line gemacht hat, an den Hostrechner zurück.
@PJL STMSG DISPLAY = "Mitteilung" [<CR>]<LF>
Antwort des Druckers
@PJL STMSG DISPLAY = "Mitteilung"<CR><LF> Taste <CR><LF> <FF>
Comment
Gestattet die Verwendung einer Kommentarzeile in PJL.
@PJL COMMENT Kommentar... [<CR>]<LF>
Beispiele
Ein Beispiel für die Benutzung der PJL Kommandos.
Anzeige der momentanen Einstellungen (Druckervariablen)
Um sich eine sehr umfangreiche Liste von Einstellungen wie Druckersprache,
Personality (Druckersprache: z.B. Auto, PCL, PS), Postscript Fehlerseiten und
vielen weiteren Einstellungen des Druckers vom Drucker abzuholen kann man den Drucker wie
folgt nach diesen Werten befragen. Diese Werte kann man auch fast immer
dauerhaft über das Ausschalten hinaus verändern.
Will man einen Wert verändern so sucht man sich ihn aus der mit
cat /dev/lp0
ausgegebenen Liste heraus.
So eine Ausgabe sieht beispielsweise so aus (Farbige Anzeige erforderlich): Druckerausgaben und Benutzereingaben am Prompt.
echo -e "\33%-12345X@PJL\n@PJL INFO VARIABLES\n\33%-12345X" | cat >/dev/lp0 cat /dev/lp0 @PJL INFO VARIABLES LANG=GERMAN [13 ENUMERATED] ENGLISH FRENCH GERMAN ITALIAN SPANISH SWEDISH DANISH NORWEGIAN DUTCH FINNISH PORTUGUESE TURKISH POLISH COPIES=1 [2 RANGE] 1 999 PAPER=A4 [14 ENUMERATED] LETTER LEGAL A4 EXECUTIVE COM10 MONARCH C5 DL JISB5 B5 A5 CUSTOM JPOST JPOSTD ORIENTATION=PORTRAIT [2 ENUMERATED] PORTRAIT LANDSCAPE FORMLINES=60 [2 RANGE] 5 128 MANUALFEED=OFF [2 ENUMERATED] OFF ON RET=MEDIUM [4 ENUMERATED] OFF LIGHT MEDIUM DARK PAGEPROTECT=AUTO [2 ENUMERATED] AUTO ON RESOLUTION=600 [2 ENUMERATED] 300 600 PERSONALITY=AUTO [3 ENUMERATED] AUTO PCL POSTSCRIPT TIMEOUT=15 [2 RANGE] 5 300 MPTRAY=FIRST [2 ENUMERATED] CASSETTE FIRST AUTOCONT=ON [2 ENUMERATED] OFF ON DENSITY=3 [2 RANGE] 1 5 PASSWORD=DISABLED [2 RANGE] 0 65535 ECONOMODE=OFF [2 ENUMERATED] OFF ON IOBUFFER=AUTO [3 ENUMERATED] AUTO ON OFF IOSIZE=0 [2 RANGE] 0 0 COURIER=REGULAR [2 ENUMERATED] REGULAR DARK WIDEA4=NO [2 ENUMERATED] NO YES REPRINT=AUTO [3 ENUMERATED] OFF ON AUTO TESTPAGE="?" [7 ENUMERATED] SELFTEST CONTSELFTEST PCLTYPELIST PCLDEMOPAGE PSCONFIGPAGE PSTYPEFACELIST PSDEMOPAGE LPARM:PCL FONTSOURCE=I [1 ENUMERATED] I LPARM:PCL FONTNUMBER=0 [2 RANGE] 0 53 LPARM:PCL PITCH=10.00 [2 RANGE] 0.44 99.99 LPARM:PCL PTSIZE=12.00 [2 RANGE] 4.00 999.75 LPARM:PCL SYMSET=PC8 [29 ENUMERATED] PC8 ROMAN8 ISOL1 ISOL2 ISOL5 ISOL6 PC775 PC8DN PC850 PC852 PC8TK PC1004 WINL1 WINL2 WINL5 WINBALT DESKTOP PSTEXT LEGAL ISO4 ISO6 ISO11 ISO15 ISO17 ISO21 ISO60 ISO69 WIN30 MCTEXT LPARM:POSTSCRIPT PRTPSERRS=OFF [2 ENUMERATED] OFF ON LPARM:POSTSCRIPT JAMRECOVERY=OFF [2 ENUMERATED] OFF ON
Ergebnis ist die sehr umfangreiche Liste von Einstellungen. Um Beispielsweise die Ausgabe von Postscript Druckerfehlern (Der momentane Status OFF ist oben hervorgehoben) dauerhaft zu aktivieren ist jetzt folgendes Kommando am Prompt erforderlich:
echo -e "\33%-12345X@PJL\n@PJL DEFAULT LPARM:POSTSCRIPT PRTPSERRS=ON\n\33%-12345X" | cat >/dev/lp0
Nach dieser Veränderung werden Fehlermeldungen des im Drucker eingebauten Postscript Interpreters auf einer extra Fehlerseite ausgedruckt. Mit der Stellung PRTPSERRS=OFF werden sie verworfen.
Die erfolgreiche Aktivierung kann mit dem gleichen Info Kommando wie oben überprüft werden.