Drucker Character-Sets und Zeichensatztabellen

JavaCat

Ensign
Registriert
Juli 2014
Beiträge
173
Hallo,

ich habe ein schwerwiegendes Problem mit Character-Sets und Drucker-Zeichensatz-Tabellen. Das ist ein heikles Thema, bei dem mir bisher keiner weiterhelfen konnte.

Wir hatten in der Produktion einen alten Oki ML 391. Auf diesem wurden Formulare für die Produktion gedruckt.
In Java habe ich das Formular als ASCII-Text-Datei im Client aufgebaut, und die Textdatei schicke ich an einen Linux-Server. Auf dem Linux-Server läuft ein RMI-Java-Programm, das nimmt die Text-Datei in Empfang und speichert sie auf dem Linux-Server. Danach wird die Text-Datei direkt an den OKI geschickt, und zwar wie folgt: lp -doki_drucker $1

Dadurch sind aber die Umlaute und der senkrechte Strich | total verhaut. Damit das auf dem OKI ML 391 läuft, habe ich im Jahr 2006 eine Übersetzung in das Java-Programm eingebaut:

// ba ist ein Byte-Array
if (ba == -10) ba = (byte) 148; // ö
if (ba == -28) ba = (byte) 132; // ä
if (ba == -4) ba = (byte) 125; // ü
if (ba == -42) ba = (byte) 153; // Ö
if (ba == -60) ba = (byte) 142; // Ä
if (ba == -36) ba = (byte) 154; // Ü
if (ba == -33) ba = (byte) 225; // ß
if (ba == 124) ba = (byte) 179; // |

Danach wurden die Umlaute und der Strich | perfekt gedruckt.

Jetzt ist der OKI ML 391 aber defekt, und die Produktion hat einen OKI ML 4410 gekauft und angeschlossen. Der Ausdruck funktioniert, bis auf die oben genannten Zeichen. Umlaute und der Strich | kommen wieder total verhaut heraus. Ich muss meine Übersetzung also neu definieren. Ich bin mir nur nicht schlüssig, wie ich das machen soll, denn das meiste habe ich wieder vergessen. Eigentlich habe ich alles wieder vergessen.

Erste Frage:

Eingestellt ist das Character Set "Set II" und der Emulations-Mode "EPS-FX". Ist das der normale Epson-Zeichensatz oder der erweiterte Epson-Zeichensatz? Ich gehe davon aus, dass "Set II" der erweiterte Epson-Zeichensatz ist. Seht Ihr das auch so?

Zeichensatz1.jpg
Zeichensatz2.jpg


Zweite Frage:

if (ba == 124) ba = (byte) 179; // |

Hier prüfe ich ab: Wenn Wert 124 vorkommt, dann tausche ihn durch Wert 179.
Was ist die genaue Bezeichnung dieser Werte? Ich kenne den Fachbegriff dafür nicht.

Dritte Frage:

Wie finde ich genau die alten Werte für den neuen OKI ML 4410 Ausdruck heraus? Ich muss dazu den Ausdruck in eine Textdatei umleiten und in einem Editor öffnen, der in der Lage ist, mir diese Werte anzuzeigen. Aber welches Werkzeug nehme ich dafür? Ich weiß leider nicht mehr, wie ich das damals gemacht habe.

Normalerweise müssten doch die Werte, auf die ich abbprüfe, also z.B. -10 für "ö", immer noch die Gleichen sein, aber ich bin mir da nicht sicher. Am Java-Client hat sich jedenfalls nichts geändert, also gehe ich davon aus, dass es die gleichen Werte sind.

Oder anders formuliert: Wie kann ich in einer ASCII-Text-Datei nachsehen, welcher "Wert" für "ö" ausgegeben wird? Mit welchem Werkzeug kann ich das machen?

Vierte Frage:

Ich weiß leider auch nicht mehr, wie ich das Koordinatensystem in der Epson-Zeichensatz-Tabelle lesen soll.

Was ist denn z.B. der "Wert" für den Buchstaben A? Also der "Wert", den ich dann im Java-Programm mit if/else ersetzen würde. A hat die X-Achse 4 und die Y-Achse 1. Aber wie komme ich auf den "Wert", den ich im Programm abfragen kann?

Kennt sich da einer von Euch damit aus? Jasper-Reports habe ich übrigens auch schon versucht, aber das wird als Grafik an den Drucker geschickt und ist viel zu langsam. Daher auch die Lösung über ASCII-Text-Dateien.

Epson1.jpg
Epson2.jpg
 
und warum stellst du den ML4410 nicht auf die passende Codepage ein ?

Im Handbuch stehen viele ... such dir die aus die passend ist für die Eingabe.
Seite B4 und folgende
 
Danke für den Tipp. Das habe ich gemacht, und das hat auch funktioniert. Die Codepages waren das, was ich gesucht hatte. Ich habe im Handbuch immer an der falschen Stelle gesucht.
 
Zurück
Oben