# ESC/POS Steuerzeichen an Drucker senden



## Horschie (27. Jan 2012)

Hallo,

ich  habe da ein kleines Problem: 

Eine JAVA-Anwendung soll die Kassenschublade eines POS-Druckers öffnen. 

Das Problem: Der Drucker druckt die Geschichte als Text aus...und steuert die Schublade nicht. 

Mein Quelltext:


```
OutputStream fos;
		try
		{
			fos = new FileOutputStream( "\\\\Laden-PC\\StarTSP143" );
			PrintWriter pw = new PrintWriter( fos );

			pw.println("27 112 0 100 200");
			pw.println("27 112 1 100 200");
			pw.println("27 112 48 100 200");
			pw.println("27 112 49 100 200");
			
			pw.close();
		}
		catch (Exception e)
		{
			JOptionPane.showMessageDialog(null, e.toString(), "Fehler", JOptionPane.CANCEL_OPTION);
		}
```

Hierzu noch ein PDF: http://content.epson.de/fileadmin/content/files/RSD/globalPDFs/escpos.pdf
Interessant sind dabei die PDF-Seiten 11, 15

Auf Seite 15 findet man ein Beispiel in VB:

Folgende Zeile müsste also in Java übersetzt werden (da scheitere ich wohl): 
PRINT #1, CHR$(&H1B); CHR$(&H70); CHR$(&H0); CHR$(60); CHR$(120);



Danke 
Christoph


----------



## California (27. Jan 2012)

Naja, Du solltest statt String byte nehmen...


```
byte b = 27; // ist ein Escape
```

und vergiss VB :wuerg:


----------



## irgendjemand2 (27. Jan 2012)

das problem wird am *Writer liegen ... da wie wir alle wissen Writer und Reader nur für text/plain zuständig sind ...
aber im pdf steht das du die byte-werte senden musst ... also musst du auch den low-level OutputStream und ein byte-array verwenden ...

aus deinem code würde dann in etwa das


```
try
{
	OutputStream out = new FileOutputStream( "\\\\Laden-PC\\StarTSP143" );
	byte[] ar1=new byte[]{(byte)27, (byte)112, (byte)0, (byte)100, (byte)200};
	byte[] ar2=new byte[]{(byte)27, (byte)112, (byte)1, (byte)100, (byte)200};
	byte[] ar3=new byte[]{(byte)27, (byte)112, (byte)48, (byte)100, (byte)200];
	byte[] ar4=new byte[]{(byte)27, (byte)112, (byte)49, (byte)100, (byte)200];
	out.write(ar1);
	out.flush();
	out.write(ar2);
	out.flush();
	out.write(ar3);
	out.flush();
	out.write(ar4);
	out.flush();
	out.close();
}
catch(Exception e)
{
	e.printStackTrace();
}
```

die Strings dürfte der drucker wohl kaum verstehen ... vor allem nicht die leerzeichen darin ...


----------



## Horschie (28. Jan 2012)

Hallo,

vielen Dank für die Unterstützung! 

Leider funktioniert die Geschichte immer noch nicht...

Auf jeden Fall druckt er den Kram aber auch nicht mehr als Text aus... 


DAnke
Christoph


----------



## irgendjemand2 (28. Jan 2012)

wenn du probleme bei der umsetzung des PDFs hast *da das mit basic gehalten ist* dann setz dich doch mal dierekt mit dem support in verbindung oder versuch mal google was zu entlocken ...

soweit ich das allerdings deuten konnte werden wirklich die steuer-zeichen als byte-werte verlangt ...
wenn du dann noch irgendwelche strings hinterher schicken musst : [c]OutputStream.write(String.getBytes());[/c]


----------

