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übermittlung

Die 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.