Moin Moin!
ich wäre nicht auf die Idee gekommen, dem Drucker einfach nur Text auf den Port zu legen. Dachte immer das wäre ein Druckerspezifisches Kaudawelsch von Steuerbefehlen, bis der überhaupt was macht.
Das kommt sehr auf den Drucker an. Die meisten Drucker, die Normalpapier bedrucken, können "einfach so" reingedrückten Text auch "einfach so" drucken. Das stammt noch aus der Zeit vor DOS. (GDI-Krüppel können das natürlich nicht.) Extras wie Fettdruck, Schriften, Grafikmodus etc. gibt es über druckerspezifische Steuersequenzen, mittlerweile aber sehr oft auch über Industrie-Standards wie PCL, Postscript oder ESC/P2. Die Befehlssätze von IBM Proprinter und Epson FX80 werden auch gerne noch genommen.
Spezialdrucker, die z.B. Etiketten drucken, wollen oft tatsächlich erst einmal Steuerzeichen sehen. Die Etikettendrucker, mit denen ich mich nebenbei beruflich beschäftige, brauchen z.B. erst einmal eine Erklärung, wie groß das Etikett ist, an welche Stellen gedruckt werden soll, und was (Text oder Barcode). Dazu gibt es ein ungefähr hundert Seiten starkes Handbuch, in dem im wesentlichen pro Seite ein Steuercode erklärt wird. Bei diesen speziellen Druckern definiert man erstmal ein Layout, danach schiebt man nur noch die Daten in den Drucker, die in dieses Layout gefüllt werden sollen, und die Anzahl der zu druckenden Etiketten.
Sinngemäß also:
1. Start Layout
2. Etikett ist 800 x 600 Zehntelmillimeter groß
3. Feld 1 ist Text fett Schriftart 23 an Position 100,100
4. Feld 2 ist Barcode Typ Codabar Größe 3 an Position 300,100
5. Ende Layout
6. Start Daten
7. Feld 1 ist "Hallo Welt"
8. Feld 2 ist "12345"
9. Ende Daten
10. Drucke 10.000 Stück
Und schon fallen 10.000 Etiketten mit dem Text "Hallo Welt" und einem Barcode "12345" raus.
Danach, ohne ein neues Layout zu definieren:
11. Start Daten
12. Feld 1 ist "Murks"
13. Feld 2 ist "00000"
14. Ende Daten
15. Drucke 5.000 Stück
Und weitere 5.000 Etiketten im selben Layout, aber mit Inhalt "Murks" bzw. "00000" fallen aus dem Drucker.
Man kann auch noch Zähler, Datumsangaben und ähnliches einbauen. Das nutzen wir aber nicht, wir drucken bis auf ein oder zwei Spezialfälle auch immer nur ein Exemplar eines Etiketts.
Wie gesagt, so ticken UNSERE Etikettendrucker. Dein Drucker benimmt sich offensichtlich anders, den Plain Text ohne Steuerzeichen ignorieren unsere Drucker völlig (oder sie fangen an zu quaken, dass der Datenmüll kein gültiger Druckjob ist).
Jetzt druckt er anstandslos - hiphip.. Dank dir :-).
Auch \n\r (Zeilenumbruch) kann er.
Kennst du noch eine Möglichkeit, Umlaute darzustellen 'äöü' ?
Das ist wieder sehr druckerspezifisch. Handbuch lesen hilft definitiv.
Viele Drucker sind, was Umlaute angeht, bei DOS stehen geblieben, sprich CP437, gerne auch als "IBM PC" oder ähnliches bezeichnet. Erst eine Steuersequenz stellt die Zeichentabelle des Druckers auf ISO-8859-1, ISO-8859-15 oder Windows-1252 um. Bei PCL braucht man dazu <ESC> ( 0 N <ESC> ) 0 N
(Hexadezimal: 1B 28 30 4E 1B 29 30 4E), andere Druckersprachen brauchen andere Sequenzen. Manche Drucker können auch einfach nicht umgestellt werden, dann muß man sich die Zeichen außerhalb des ASCII-Bereichs (32 bis 126) selbst umcodieren, sinnigerweise erst unmittelbar vor dem Druck, damit der Rest des Systems nicht mit verdrehten Zeichen arbeiten muß.
Unsere richtig alten Etikettendrucker KENNEN keine Umlaute. Man bekommt ums Verrecken keine Umlaute aus den Kisten, egal was man anstellt. Man kann keinen Grafikmodus einstellen, man kann keine Punkte über zusätzliche Layout-Felder setzen, weil sich Felder nicht überlappen dürfen, man kann keine eigenen Zeichen definieren. So bleibt nur, Umlaute in ae, oe, ue umzuschreiben. Für unsere Zwecke reicht das.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".