Estoy tratando de imprimir algo en java pereo no puedo:
pesudocodigo:
Código:
Java:Apertura_de_Puerto OpenCom_n(19200,8,n,1) Control_de_Flujo(DSR) Fin_Apertura_de_Puerto Envia_Comando(String comando) String respuesta=”” Char byte=0x00 //se construye comando agregándole inicio frame(87H) y fin frame(88H) comando=0x87+comando+0x88 // se envía al puerto RS232 byte a byte Para i=1 hasta largo(comando) EscribePuerto(mid(comando,i,1)) Fin Para // se lee desde el puerto RS232 byte a byte Haga_Mientras(byte <> 0x0D and byte <> 0x0C) { byte = LeePuerto() // lee byte a byte Si (byte==0x0A) Entonces Break; //ACK(el comando fue satisfactorio) Sino respuesta=respuesta+byte //se concatena hasta que llega el fin 0DH(errores,comando 35 y 48) o 0CH(comando 43 en modo descarga) Fin_Si } Fin_Haga_Mientras Fin_Envia_Comando Inicio_de_Boleta String comando=”” comando=”000” Envia_Comando(comando) Fin_Inicio_de_Boleta
Código:
el código anterior no imprime nada y la impresora tampoco retorna nada, solo devuelve ceros...package impresora; import java.util.List; import giovynet.nativelink.SerialPort; import giovynet.serial.Baud; import giovynet.serial.Com; import giovynet.serial.Parameters; public class Impresora { /** * www.giovynet.com * @param args */ public static void main(String[] args) { try { SerialPort serialPort = new SerialPort(); List<String> portsFree; portsFree = serialPort.getFreeSerialPort(); /**** If there are free ports, use the first found. ****/ if(portsFree!=null&&portsFree.size()>0) { for (String free : portsFree) System.out.println("Free port: "+free); /****Open the port.****/ Parameters parameters = new Parameters(); parameters.setPort("COM1"); parameters.setBaudRate(Baud._19200); System.out.println("Open port: COM1"); Com com = new Com(parameters); /****Send data.****/ System.out.println("Send Data Port: COM1"); //Inicio boleta, imprimir un logo String comando="ç001ê"; for(int i=0; i<comando.toCharArray().length; i++) { try{ com.sendSingleData(comando.toCharArray()[i]); }catch(Exception e){ System.out.println("Error=>"+e.getMessage()); } } String respuesta=new String(); byte bytes=0x00; while(bytes!=0x0D && bytes!=0x0C) { bytes=(byte)com.receiveSingleChar(); if(bytes==0x0A) break; else respuesta+=bytes; Thread.currentThread(); Thread.sleep(500); } System.out.println("response: "+respuesta); /****Close the port.****/ System.out.println("Close Port: COM1"); com.close(); } else{ System.out.println("No Free ports!!!"); } } catch (Exception e) { e.printStackTrace(); } } }
La descripción del comando según el manual:
Línea Inicio Boleta ( tipo 00 )
Posición dentro del frame Contenido
ç ( Caracter no imprimible 0x87)
0 ( primer caracter del tipo, no se imprime )
0 ( segundo caracter del tipo, no se imprime )
g
ê ( Caracter no imprimible 0x88)
Notas:
g: indicador de impresión de gráfico (logo) precargado ( 1 byte )
. 0 no imprime
. 1 sí imprime
El gráfico será impreso siempre con 200 DPI ( modo normal )
La IF imprime el encabezado con los datos proporcionados en el comando de seteo de encabezado de
tienda y con el rut y razón social proporcionados en el proceso de inicialización de la IF.