# Ascii Stream senden



## luchs3 (2. September 2009)

Hi,

Ich habe einen Etikettendrucker, der Befehle im Ascii- Format benötigt.
Wenn ich den Testseitenbefehl in eine Datei schreiben lasse, sieht das so aus:
PrinterTest1.prn

```
qCn
M0500
O0220
V0
SC
D
L
D11
PC
SC
1X1100000910000L154001
1X1100000010000L001091
1X1100000880003L151001
1X1100000010003L001088
1X1100000660010L040005
1X1100000120028L005060
1X1100000660060L035005
1X1100000390060L030005
1X1100000120060L035005
1X1100000120061L005060
1X1100000660105L035005
1X1100000390105L035005
1X1100000120105L035005
1X1100000390105L005033
1X1100000120135L005033
1X1100000660150L004005
Q0001
E
```

Wenn ich jedoch einen String an den Port sende, habe ich rein diesen String im Logfile.

Hat da jemand schon Erfahrung damit?


----------



## zeja (2. September 2009)

Ich habe dein Problem jetzt nicht ganz verstanden. Was geht nicht?


----------



## luchs3 (2. September 2009)

Der Drucker wird über Kommandos im Ascii Format gesteuert.
Zum Beispiel dieser Code liefert ein Etikett mit dem Artikel und dem Barcode darunter.

```
<STX> L <CR>
H07 <CR>
D11 <CR>
19110080100002510K OHM 1/4 WATT <CR>
1a6210000000050590PCS <CR>
E
```

Die Frage ist, wie kann ich das an den Drucker senden?


----------



## luchs3 (4. September 2009)

Ich nehme an, das das in unicode geschickt wird und deshalb vom Drucker nicht ausgewertet werden kann.
Hier ist genauer erklärt, was er braucht.
http://www.datamaxcorp.com/_assets/library/pdf/allegro2_operators_manual_a3.pdf

Muss ich dann den String in bytes umformatieren?


----------



## zeja (4. September 2009)

Über den PrintService kannst du dir den Drucker raussuchen und dann dein Byte-Array (ByteArrayInputStream) darauf drucken:

http://www.tutorials.de/forum/java/...pi-string-mit-standarddurcker-ausdrucken.html


----------



## luchs3 (10. September 2009)

Hmm, also ich kann das Ding jetzt einmal ansprechen, und darauf drucken.
Das Schwierigste dabei war bis jetzt der Startbefehl (<STX> ist Ctrl B is 2)
Soweit so gut.
String kann ich auch übergeben, aber Umlaute machen echt Probleme.
hab aus dem Ding bis jetzt noch keinen einzigen Umlaut herausgebracht.
Wenn ich ihm 153 sende, Druckt er das Pfund- Zeichnen. Bei allen anderen, entweder Fragezeichen oder nichts.

Anleitung: http://www.datamaxcorp.com/_assets/library/pdf/allegro2_operators_manual_a3.pdf

Ach ja, das ergibt in der ersten Zeile einen Barcode, und danach die Beschreibung.

```
OutputStream fos = new FileOutputStream( "COM1:" );
PrintWriter pw = new PrintWriter( fos );
String bla = "\u0002L\r\nH07\r\nD11\r\nH07\r\n1F62040001" + bcLine[2] + "3001\r\n19110030001001010K OHM 1/4 WATT\r\nE";
pw.println(bla);
pw.close();
```


----------



## luchs3 (12. September 2009)

keiner eine Idee?


----------



## Thomas Darimont (12. September 2009)

Hallo,

wenn dein Drucker nur Ascii Zeichen verträgt solltest du mal versuchen je ein Zeichen als byte zu schicken...
unter java haben die Zeichen (char) 2 byte wegen Unicode... das gilt auch für die Zeichen von String

deshalb:
write((byte)'a');

Gruß Tom


----------



## luchs3 (12. September 2009)

Dann druckt er die Zahl.
Hier z.B. 97

Wenn ich ihm die Variable als char übergebe z.B. 229 => O mit Tilde funktioniert es, aber nicht bei den Umlauten.
z.B. 148 ,153,142-> Fragezeichen

225 funktioniert wieder (ß)

wobei unter Linux geht das gar nicht.


----------



## Thomas Darimont (13. September 2009)

Hallo,

Ascii Code kennt keine direkten Umlaute...:
http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange

Da musst du ae für Ä etc. verwenden.

Gruß Tom


----------



## luchs3 (13. September 2009)

Aber der Drucker kann es, ich habe bereits Ausdrucke von einer Warenwirtschaft gesehen (läuft auf einem SCO Linux -> uralt und keine Ahnung in was geschrieben).
Es gibt auch eine Tabelle auf Seite 83, 85 im Manual, da wird das mit Hex und Dec im Vergleich angegeben.

Kann man das noch irgendwie anders schicken?


----------

