java - txt - ¿Cómo imprimir desde la impresora térmica en Android?
metodo imprimir java (1)
Estoy trabajando en una aplicación para un dispositivo Android que tendrá una impresora integrada en línea. Tengo que interactuar con esta impresora y usarla para imprimir los detalles en el recibo y luego con el corte cortar ese recibo automáticamente. He visto algunos comandos ESC en él, pero no sé cómo ejecutar estos comandos ESC.
Tengo tres problemas principales con respecto a la Impresora de Dispositivo Casio:
1. He usado el código de impresión para la impresora Build in, pero después de imprimirlo no está activado
BuildinEx840 ex840 = new BuildinEx840();
int response = ex840.open();
System.out.println("ex840 open:" + response);
byte[] set = {
''N'', ''A'', ''R'', ''E'', ''S'', ''H'', ''S'', ''H'', ''A'', ''R'', ''M'', ''A'', (byte) 0x0d, (byte) 0x0a
};
try {
ex840.write(set);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
response = ex840.getEndStatus();
System.out.println("getEndStatus:" + response);
response = ex840.initCutter();
ex840.close();
System.out.println("initCutter:" + response);
} catch (Exception e) {
e.printStackTrace();
}
2. No sé cómo enviar comandos ESC a la impresora en Android
Hay varios comandos como a continuación
ESC FF DataPrint,
[code] <1B>H<OC>H,
[Function] Print all the data in the print area collectively.
¿Cómo podemos ejecutar estos comandos ESC en Android programando?
3. No sé cómo imprimir el recibo en el formato requerido
Hay algunos comandos ESC disponibles para proporcionar márgenes desde la izquierda y la derecha y algunos otros comandos. Entonces, ¿cómo puedo imprimir los datos en algún formato y puedo cambiar el tamaño del texto, así como algunas otras configuraciones del texto que se imprimirá?
Cualquier ayuda es apreciada.
Después de trabajar durante los últimos 7 días, obtuve la forma correcta de obtener la impresión y luego corté ese recibo con el cortador. Los comandos ESC son muy importantes para obtener la impresión y otras tareas relacionadas con la impresora. Tenemos que pasar esos CMD de ESC en forma de matriz de bytes a la impresora de línea.
Hay varios comandos como a continuación
ESC FF DataPrint,
[code] <1B>H<OC>H,
[Function] Print all the data in the print area collectively.
Así que simplemente cree una matriz de bytes de este comando y páselo a la impresora.
e.g. byte[] print = {0x1b,0x0c};
ahora pásalo a la impresora. Debe haber algún método como getCmd (), o writeCmd () etc. dependiendo de la impresora.
¿Cómo podemos ejecutar estos comandos ESC en Android programando? A continuación está el código para hacer eso
BuildinEx840 lpd=new BuildinEx840();
lpd.setMulticharMode(LinePrinterDeviceBase.CHARACTERSET_USA);
//initialise Cutter
lpd.initCutter();
LinePrinter lp=new LinePrinter();
lp.open(lpd);
lpd.open();
try{
lpd.init();
}catch(IOException e){
e.printStackTrace();
}
for(int i=0; i<5;i++){
lp.printNormal("Testing the Line Printer");
}
int totalLinefeed=listofItemList.size();
//ESC CMD for line feeds
byte[] lfs=new byte[]{0x1B,''d'', 5};
sendtoExprinter(lpd,lfs);
//ESC CMD for paper cut
lfs=new byte[]{0x1B,''i''};
sendtoExprinter(lpd, lfs);
private void sendtoExprinter(BuildinEx840 dev, byte[] instr) {
try{
dev.write(instr);
}catch(IOException e){
e.printStackTrace();
}
}
ACTUALIZACIÓN: impresión de una imagen a través de la impresora térmica
En algunas impresoras, puede definir la imagen en la memoria no volátil de la impresora y luego imprimir la imagen desde allí a través de ESC cmd 1C 70 01 30 . En algunas de las otras impresoras puede indicar una ruta directa de la imagen al imprimir una imagen a través de una impresora térmica.
En cualquier impresora de línea, tenemos que pasar la CMD ESC por esta printerObj.write (comando); camino. Quiero agradecer a la comunidad SO y un agradecimiento especial a TheBlastOne que me guió por el camino correcto.
Si alguien tiene algún problema para integrar impresoras térmicas, siéntase libre de preguntar.