Foros del Web » Programación para mayores de 30 ;) » Java »

imprimiendo en Impresora ibm 4610 1NR

Estas en el tema de imprimiendo en Impresora ibm 4610 1NR en el foro de Java en Foros del Web. Hola que tal, me compre una impresora fiscal ibm 4610 1NR, viene en modo entrenamiento y con el manual con los comandos y un pequeño ...
  #1 (permalink)  
Antiguo 20/04/2011, 21:56
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 8 meses
Puntos: 0
imprimiendo en Impresora ibm 4610 1NR

Hola que tal, me compre una impresora fiscal ibm 4610 1NR, viene en modo entrenamiento y con el manual con los comandos y un pequeño ejemplo en pseudocodigo:

Estoy tratando de imprimir algo en java pereo no puedo:

pesudocodigo:

Código:
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
Java:
Código:
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();
		}
	}

}
el código anterior no imprime nada y la impresora tampoco retorna nada, solo devuelve ceros...

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.

Última edición por geminis19; 20/04/2011 a las 22:32
  #2 (permalink)  
Antiguo 21/04/2011, 12:07
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: imprimiendo en Impresora ibm 4610 1NR

Necesito ayuda...
  #3 (permalink)  
Antiguo 21/04/2011, 18:03
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: imprimiendo en Impresora ibm 4610 1NR

up!!!
  #4 (permalink)  
Antiguo 21/04/2011, 19:07
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: imprimiendo en Impresora ibm 4610 1NR

Organize un poco el código, haber si alguien me puede ayudar

Código Javascript:
Ver original
  1. package impresora;
  2. import java.util.List;
  3. import giovynet.nativelink.SerialPort;
  4. import giovynet.serial.Baud;
  5. import giovynet.serial.Com;
  6. import giovynet.serial.Parameters;
  7.  
  8. public class Impresora
  9. {
  10.     Com com;
  11.     Boolean sw=false;
  12.    
  13.     public static void main(String[] args)
  14.     {
  15.         new Impresora();
  16.     }
  17.    
  18.     public Impresora()
  19.     {
  20.         if(openCom("COM1"))
  21.         {
  22.             //Linea Inicio Comentario
  23.             sw=setCommand("60", "");
  24.                
  25.             //Línea Comentario
  26.             sw=setCommand("111", "Hola Mundo");
  27.                
  28.             //Línea Fin Comentario
  29.             sw=setCommand("61", "");
  30.                
  31.             //Línea Fin, con corte boleta
  32.             sw=setCommand("99", "");
  33.                
  34.             if(!sw)
  35.                 System.out.println("Error en el envio de comandos.");
  36.             else
  37.             {
  38.                 System.out.println("Esperando respuesta!!");
  39.                 System.out.println("Respuesta: "+getResponse());
  40.             }
  41.                
  42.             if(!closeCom())
  43.                 System.out.println("Error al cerrar el puerto.");
  44.         }
  45.         else
  46.             System.out.println("Error al abrir el puerto.");
  47.     }
  48.    
  49.     public boolean openCom(String puerto)
  50.     {
  51.         SerialPort serialPort = new SerialPort();
  52.         List<String> portsFree = null;
  53.         try {
  54.             portsFree=serialPort.getFreeSerialPort();
  55.         }
  56.         catch (Exception e){
  57.             return false;
  58.         }
  59.  
  60.         if(portsFree!=null&&portsFree.size()>0)
  61.         {              
  62.             Parameters parameters = null;
  63.             try{
  64.                 parameters = new Parameters();
  65.             }
  66.             catch (Exception e){
  67.                 return false;
  68.             }
  69.            
  70.             parameters.setPort(puerto);
  71.             parameters.setBaudRate(Baud._19200);
  72.             parameters.setByteSize("8");
  73.             parameters.setParity("n");
  74.                
  75.             try{
  76.                 com=new Com(parameters);
  77.                 return true;
  78.             }
  79.             catch(Exception e) {
  80.                 System.out.println(e.getMessage());
  81.                 return false;
  82.             }
  83.         }
  84.         else
  85.             return false;
  86.     }
  87.    
  88.     public boolean closeCom()
  89.     {
  90.         try {
  91.             com.close();
  92.             return true;
  93.         }
  94.         catch (Exception e) {
  95.             return false;
  96.         }
  97.     }
  98.    
  99.     public boolean setCommand(String line, String comand)
  100.     {
  101.         String finalComand="ç"+line+comand+"ê";
  102.         for(int i=0; i<finalComand.toCharArray().length; i++)
  103.         {
  104.             try{
  105.                 com.sendSingleData(finalComand.toCharArray()[i]);
  106.             }catch(Exception e){
  107.                 return false;
  108.             }
  109.         }
  110.        
  111.         return true;
  112.     }
  113.    
  114.     public String getResponse()
  115.     {
  116.         byte bytes=0;
  117.         String response=new String();
  118.                
  119.         while(bytes!=0x0D && bytes!=0x0D)
  120.         {
  121.             try{
  122.                 bytes=(byte)com.receiveSingleChar();
  123.             }catch(Exception e){
  124.                 return "Read Port COM Error";
  125.             }
  126.        
  127.             if(bytes==0x0A)
  128.                 break;
  129.             else
  130.                 response+=bytes;
  131.         }
  132.        
  133.         return response;
  134.     }
  135. }
  #5 (permalink)  
Antiguo 21/04/2011, 19:20
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: imprimiendo en Impresora ibm 4610 1NR

También adjunto el manual, por si alguíen logra entender mejor que yo, y tenga ganas de compartir.

Manual de Programación IBM 4610 1NR y TF6

Este manual vale ORO, pero como a mi no me importa el oro, lo comparto...
  #6 (permalink)  
Antiguo 21/04/2011, 20:12
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: imprimiendo en Impresora ibm 4610 1NR

Hola,

Comencemos revisando las constantes alfanuméricas, ¿en que codificación de caracteres está guardado ese archivo Impresora.java?

Código Java:
Ver original
  1. public boolean setCommand(String line, String comand)
  2.     {
  3.         String finalComand="ç"+line+comand+"ê";

Si ese archivo está almacenado en UTF seguramente no va a funcionar correctamente. Si está en ANSI posiblemente es otro el problema. Asegúrate que el resultado sea el valor del caracter 'ç' en la tabla ASCII que indica el manual.


Código Java:
Ver original
  1. public class Test {
  2.  
  3.   public static void main(String[] args) {
  4.       System.out.println(((int)("ç".toCharArray()[0])));
  5.   }
  6.  
  7. }

Saludos,
  #7 (permalink)  
Antiguo 22/04/2011, 18:28
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: imprimiendo en Impresora ibm 4610 1NR

Hola, cambie la codificación del archivo a ACSII con el notepad++ y se mantiene el mismo comportamiento, ademas probe esto

Código Javascript:
Ver original
  1. public Impresora()
  2.    {
  3.         System.out.println(((int)("ç".toCharArray()[0])));

Lo anterior me retorna el entero 231, entonces este caracter no corresponde al que indica el manual. El manual indica que el caracter ç es el hexadecimal 0x87 el cual al pasarlo a entero es 135.

tendre que mejor mandarle el entero en vez del caracter? probare eso...

Última edición por geminis19; 22/04/2011 a las 18:35
  #8 (permalink)  
Antiguo 22/04/2011, 19:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: imprimiendo en Impresora ibm 4610 1NR

Hola de nuevo, invie el entero inicial y final en vez del caracter, ahora la impresora me responde algo, pero no imprime nada.

Este es el código de retorno:

Los Bytes transformados a enteros
. 48
. 54
. 48
. 54
. 48
. 48
. 48
. 13

Como se logra apreciar el ultimo byte es el 13 en entero, según el manual este byte es porque la impresora esta retornando un error o warning, pero los tres primeros bytes si los junto no aparecen en el manual en la sección de errores.

Esta es la ultima modificación al código, en realidad modifique el metodo que envia el comando.

Código Javascript:
Ver original
  1. import java.util.List;
  2. import giovynet.nativelink.SerialPort;
  3. import giovynet.serial.Baud;
  4. import giovynet.serial.Com;
  5. import giovynet.serial.Parameters;
  6.  
  7. public class Impresora
  8. {
  9.     Com com;
  10.     Boolean sw=false;
  11.    
  12.     public static void main(String[] args)
  13.     {
  14.         new Impresora();
  15.     }
  16.    
  17.     public Impresora()
  18.     {
  19.         if(openCom("COM1"))
  20.         {
  21.             //Linea Inicio Comentario
  22.             sw=setCommand("60", "");
  23.                
  24.             //Linea Comentario
  25.             sw=setCommand("111", "Hola Mundo");
  26.                
  27.             //Linea Fin Comentario
  28.             sw=setCommand("61", "");
  29.                
  30.             //Linea Fin, con corte papel
  31.             sw=setCommand("99", "");
  32.                
  33.             if(!sw)
  34.                 System.out.println("Error en el envio de comandos.");
  35.             else
  36.             {
  37.                 System.out.println("Esperando respuesta!!");
  38.                 System.out.println("Respuesta: "+getResponse());
  39.             }
  40.                
  41.             if(!closeCom())
  42.                 System.out.println("Error al cerrar el puerto.");
  43.         }
  44.         else
  45.             System.out.println("Error al abrir el puerto.");
  46.     }
  47.    
  48.     public boolean openCom(String puerto)
  49.     {
  50.         SerialPort serialPort = new SerialPort();
  51.         List<String> portsFree = null;
  52.         try {
  53.             portsFree=serialPort.getFreeSerialPort();
  54.         }
  55.         catch (Exception e){
  56.             return false;
  57.         }
  58.  
  59.         if(portsFree!=null&&portsFree.size()>0)
  60.         {              
  61.             Parameters parameters = null;
  62.             try{
  63.                 parameters = new Parameters();
  64.             }
  65.             catch (Exception e){
  66.                 return false;
  67.             }
  68.            
  69.             parameters.setPort(puerto);
  70.             parameters.setBaudRate(Baud._19200);
  71.             parameters.setByteSize("8");
  72.             parameters.setParity("n");
  73.                
  74.             try{
  75.                 com=new Com(parameters);
  76.                 return true;
  77.             }
  78.             catch(Exception e) {
  79.                 System.out.println(e.getMessage());
  80.                 return false;
  81.             }
  82.         }
  83.         else
  84.             return false;
  85.     }
  86.    
  87.     public boolean closeCom()
  88.     {
  89.         try {
  90.             com.close();
  91.             return true;
  92.         }
  93.         catch (Exception e) {
  94.             return false;
  95.         }
  96.     }
  97.    
  98.     public boolean setCommand(String line, String comand)
  99.     {
  100.         try{
  101.             com.sendSingleData(135);
  102.         }
  103.         catch (Exception e) {
  104.             return false;
  105.         }
  106.        
  107.         String finalComand=line+comand;
  108.         for(int i=0; i<finalComand.toCharArray().length; i++)
  109.         {
  110.             try{
  111.                 com.sendSingleData(finalComand.toCharArray()[i]);
  112.             }catch(Exception e){
  113.                 return false;
  114.             }
  115.         }
  116.        
  117.         try{
  118.             com.sendSingleData(136);
  119.              return true;
  120.         }
  121.         catch (Exception e) {
  122.             return false;
  123.         }
  124.     }
  125.    
  126.     public String getResponse()
  127.     {
  128.         byte bytes=0;
  129.         String response=new String();
  130.                
  131.         while(bytes!=13 && bytes!=12)
  132.         {
  133.             try{
  134.                 bytes=(byte)com.receiveSingleChar();
  135.             }catch(Exception e){
  136.                 return "Read Port COM Error";
  137.             }
  138.        
  139.             if(bytes==10)
  140.                 break;
  141.             else
  142.                 response+=bytes;
  143.         }
  144.        
  145.         return response;
  146.     }
  147. }

Última edición por geminis19; 22/04/2011 a las 19:50
  #9 (permalink)  
Antiguo 23/04/2011, 00:11
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: imprimiendo en Impresora ibm 4610 1NR

Hola,

No he tenido la oportunidad de usar esa impresora exactamente, pero creo que el problema sigue estando aquí:

Código Java:
Ver original
  1. public boolean setCommand(String line, String comand)

Aunque no tengo ni idea qué es 'line' ni 'command', voy a suponer que 'command' es un comando, es decir, una serie de bytes específicos de la tabla ASCII, que tienen un significado exacto para la impresora; como el caso de 'ç' que deber ser exactamente el ordinal 0x87 en hexadecimal de la tabla ASCII.

Como te pudiste dar cuenta, Java usa conversión de tablas de caracteres y a veces es difícil detectar que tabla está usando exactamente. (Por lo menos para mí). Pero posiblemente puedas cambiar lo siguiente, solo por probar:

Código Java:
Ver original
  1. finalComand.toCharArray()
  2. finalComand.getBytes("ASCII")

El método getBytes() acepta como parámetro un charset o un string con el nombre de un charset, pero devuelve un array de bytes en lugar de un array de chars como lo hace toCharArray. La diferencia creo que va a ser evidente para ti, por lo que te pudiste dar cuenta al intentar mostrar el valor ordinal de ç.

En Java 6 podrías usar:

Código Java:
Ver original
  1. byte[] fc = finalComand.getBytes("ASCII");
  2. for (byte b : fc) {
  3.   // show the value of byte 'b' on the screen
  4.   // send the byte 'b' to the printer
  5. }

Saludos,
  #10 (permalink)  
Antiguo 23/04/2011, 17:06
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: imprimiendo en Impresora ibm 4610 1NR

Hola muchas gracias HackmanC por tu ayuda, me sirvio mucho.

Te cuento que logre imprimir, de echo ya imprime una boleta, informe x, z, comentarios, abrir la caja registradora y varias cosas mas.

Ahora comparto el código para quienes lo necesiten:

Código Javascript:
Ver original
  1. import java.util.List;
  2. import giovynet.nativelink.SerialPort;
  3. import giovynet.serial.Baud;
  4. import giovynet.serial.Com;
  5. import giovynet.serial.Parameters;
  6.  
  7. public class LayoutBoleta
  8. {
  9.     Com com;
  10.     Boolean sw=false;
  11.    
  12.     public static void main(String[] args)
  13.     {
  14.         new LayoutBoleta();
  15.     }
  16.    
  17.     public LayoutBoleta()
  18.     {
  19.         Boolean estadoImpresion=true;
  20.         estadoImpresion=Imprimir("BOL");
  21.         estadoImpresion=Imprimir("X");
  22.         estadoImpresion=Imprimir("Z");
  23.        
  24.         if(estadoImpresion)
  25.             System.out.println("Impresión realizado con exito.");  
  26.         else
  27.             System.out.println("Error al imprimir.");  
  28.     }
  29.    
  30.     public Boolean Imprimir(String tipo)
  31.     {
  32.         if(tipo.equals("X"))
  33.         {
  34.             if(informeX())
  35.                 return true;
  36.             else
  37.                 return false;
  38.         }
  39.         else if(tipo.equals("Z"))
  40.         {
  41.             if(informeZ())
  42.                 return true;
  43.             else
  44.                 return false;
  45.         }
  46.         else if(tipo.equals("BOL"))
  47.         {
  48.             if(imprimirBoleta())
  49.                 return true;
  50.             else
  51.                 return false;
  52.         }
  53.         else
  54.             return false;
  55.     }
  56.    
  57.     public Boolean informeX()
  58.     {
  59.         if(openCom("COM1"))
  60.         {
  61.             //Linea Informe X
  62.             if(setCommand("01", ""))
  63.             {
  64.                 if(closeCom())
  65.                     return true;
  66.                 else
  67.                     return false;
  68.             }
  69.             else
  70.             {
  71.                 closeCom();
  72.                 return false;
  73.             }
  74.         }
  75.         else
  76.            return false;
  77.     }
  78.    
  79.     public Boolean informeZ()
  80.     {
  81.         if(openCom("COM1"))
  82.         {
  83.             //Linea Informe Z
  84.             if(setCommand("021", ""))
  85.             {
  86.                 //Línea Apertura Período de Ventas, Valida modo entrenamiento,
  87.                 //en modo fiscal retorna error en caso de haber pasado 27 horas
  88.                 setCommand("32", "");
  89.                
  90.                 if(closeCom())
  91.                     return true;
  92.                 else
  93.                     return false;
  94.             }
  95.             else
  96.             {
  97.                 closeCom();
  98.                 return false;
  99.             }
  100.         }
  101.         else
  102.            return false;
  103.     }
  104.        
  105.     public Boolean imprimirBoleta()
  106.     {
  107.         if(openCom("COM1"))
  108.         {
  109.            
  110.             //Línea Apertura Período de Ventas, Valida modo entrenamiento,
  111.             //en modo fiscal retorna error error en caso de haber pasado 27 horas
  112.             //sw=setCommand("32", "");
  113.  
  114.             //Linea inicio Boleta
  115.             if(!setCommand("001", ""))
  116.                 return false;
  117.            
  118.             //Línea Inicio Comentario
  119.             if(!setCommand("60", ""))
  120.                 return false;
  121.            
  122.             //Línea Salto de Línea
  123.             if(!setCommand("30", ""))
  124.                 return false;
  125.                
  126.             //Linea Comentario
  127.             if(!setCommand("111", "BOLETA FISCAL"))
  128.                 return false;
  129.            
  130.             //Línea Salto de Línea
  131.             if(!setCommand("30", ""))
  132.                 return false;
  133.            
  134.             //Línea Fin Comentario
  135.             if(!setCommand("61", ""))
  136.                 return false;
  137.            
  138.             //Línea Boleta Caja
  139.             if(!setCommand("12", ""))
  140.                 return false;
  141.            
  142.             //Línea venta Item/*
  143.             long totalBoleta=0;
  144.             for(int i=0; i<2; i++)
  145.             {
  146.                 //Agregando ceros a la izquierda del código            
  147.                 String codigo=formatNumber(13, "123"+i);
  148.                
  149.                 //Agregando ceros a la izquierda de la cantidad
  150.                 String cantidad=formatNumber(6, "100")+"000";
  151.                
  152.                 //Agregando ceros a la izquierda del precio unitario
  153.                 String precioUnitario=formatNumber(9, "200");
  154.                
  155.                 //Agregando ceros a la izquierda del precio total
  156.                 String precioTotal=formatNumber(9, "20000");
  157.                
  158.                 //Sumando el producto al total de la boleta
  159.                 totalBoleta+=20000;
  160.                    
  161.                 //Descripción Producto
  162.                 String descripcion="Producto 0"+i;
  163.                
  164.                 //Linea Agregar Item
  165.                 if(!setCommand("13111", codigo+""+cantidad+""+precioUnitario+""+precioTotal+""+descripcion))
  166.                     return false;
  167.             }
  168.            
  169.             //Linea Descuento Total
  170.             // if(!setCommand("1711", formatNumber(9, "10")))
  171.              // return false;
  172.            
  173.             //Agregando ceros a la izquierda al total de la boleta
  174.             String totalString=formatNumber(10, totalBoleta+"");
  175.            
  176.             //Línea Sub/total
  177.             if(!setCommand("19", totalString))
  178.                 return false;
  179.                
  180.             //Línea Total
  181.             if(!setCommand("20", totalString))
  182.                 return false;
  183.            
  184.             //Linea Formas pagos
  185.             if(!setCommand("2611", "01"+formatNumber(10, "50000")))//Efectivo
  186.                 return false;
  187.            
  188.            //Linea Fin pagos
  189.            if(!setCommand("271", formatNumber(9, "5000"))) //Donación
  190.                return false;
  191.            
  192.             //Línea Inicio Comentario
  193.             if(!setCommand("60", ""))
  194.                 return false;
  195.                
  196.             //Linea Comentario
  197.             if(!setCommand("111", "Rut Cajero(a): 3.333.333-3"))
  198.                 return false;
  199.            
  200.             //Linea Comentario
  201.             if(!setCommand("111", "Nombre Cajero(a): Ernesto Gonzales"))
  202.                 return false;    
  203.            
  204.             //Línea Fin Comentario
  205.             if(!setCommand("61", ""))
  206.                 return false;
  207.            
  208.             //Línea Fin, con corte de papel
  209.             if(!setCommand("99", ""))
  210.                 return false;
  211.            
  212.             //Línea Apertura de Cajón
  213.             if(!setCommand("34", "255255"))
  214.                 return false;
  215.                          
  216.             //Cerrando el puerto COM
  217.             closeCom();
  218.            
  219.             return true;
  220.         }
  221.         else
  222.            return false;
  223.     }
  224.    
  225.     public boolean openCom(String puerto)
  226.     {
  227.         SerialPort serialPort = new SerialPort();
  228.         List<String> portsFree = null;
  229.         try {
  230.             portsFree=serialPort.getFreeSerialPort();
  231.         }
  232.         catch (Exception e){
  233.             return false;
  234.         }
  235.  
  236.         if(portsFree!=null&&portsFree.size()>0)
  237.         {              
  238.             Parameters parameters = null;
  239.             try{
  240.                 parameters = new Parameters();
  241.             }
  242.             catch (Exception e){
  243.                 return false;
  244.             }
  245.            
  246.             parameters.setPort(puerto);
  247.             parameters.setBaudRate(Baud._19200);
  248.             parameters.setByteSize("8");
  249.             parameters.setParity("n");
  250.                
  251.             try{
  252.                 com=new Com(parameters);
  253.                 return true;
  254.             }
  255.             catch(Exception e) {
  256.                 System.out.println(e.getMessage());
  257.                 return false;
  258.             }
  259.         }
  260.         else
  261.             return false;
  262.     }
  263.    
  264.     public boolean closeCom()
  265.     {
  266.         try {
  267.             com.close();
  268.             return true;
  269.         }
  270.         catch (Exception e) {
  271.             return false;
  272.         }
  273.     }
  274.    
  275.     public boolean setCommand(String line, String comand)
  276.     {
  277.         try{
  278.             com.sendSingleData(135);
  279.         }
  280.         catch (Exception e) {
  281.             return false;
  282.         }
  283.        
  284.         String finalComand=line+comand;
  285.         for(int i=0; i<finalComand.toCharArray().length; i++)
  286.         {
  287.             try{
  288.                 com.sendSingleData(finalComand.toCharArray()[i]);
  289.             }catch(Exception e){
  290.                 return false;
  291.             }
  292.         }      
  293.        
  294.         try{
  295.             com.sendSingleData(136);
  296.            
  297.             if(line.equals("1711"))
  298.                 sw=true;
  299.             else
  300.                 sw=false;
  301.            
  302.             return getResponse(sw);
  303.         }
  304.         catch (Exception e) {
  305.             return false;
  306.         }
  307.     }
  308.    
  309.     public Boolean getResponse(Boolean sw)
  310.     {
  311.         byte bytes=0;
  312.         String response=new String();
  313.                
  314.         while(bytes!=13 && bytes!=12)
  315.         {
  316.             try{
  317.                 bytes=(byte)com.receiveSingleChar();
  318.             }catch(Exception e){
  319.                 return false;
  320.             }
  321.        
  322.             if(bytes==10)
  323.                 return true;
  324.             else
  325.                 response+=bytes; //En el objeto response de tipo String se alamace todo el código de retorna de la impresora en formato INT
  326.            
  327.             if(sw)
  328.            System.out.println("bytes: "+bytes);
  329.         }
  330.        
  331.         /**
  332.          * la variable response contiene
  333.          * la respuesta de impresora por el ultimo comando ingresadoo
  334.          * esta variable o objeto debe ser tratado según el manual de usuario
  335.          */
  336.          
  337.         return true;
  338.     }
  339.    
  340.     public String formatNumber(int largo, String number)
  341.     {
  342.         String cerosIzqierda=new String();
  343.         for(int i=0; i<(largo-number.length()); i++)
  344.             cerosIzqierda+="0";
  345.        
  346.         return cerosIzqierda+number;
  347.     }
  348. }

Requisitos:
1. Utilizar la siguiente libreria dll y Jar para acceder al puerto -> Descargar
2. Compilar javac -cp .;GiovynetDriver.jar LayoutBoleta.java
3. Ejecutar java -cp .;GiovynetDriver.jar LayoutBoleta

Nota: Ejecutar este comando una vez emitodo el informe Z
//Tipo 32 : Línea Apertura Período de Venta
setCommand("32", "")

Saludos...

Última edición por geminis19; 12/12/2011 a las 08:11
  #11 (permalink)  
Antiguo 13/09/2012, 16:59
 
Fecha de Ingreso: marzo-2006
Mensajes: 2
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: imprimiendo en Impresora ibm 4610 1NR

Hola me gustaria solicitarte tu ayuda estoy trabajando con un ibm 4610 2cr ya puedo conectarme este impresor tiene la capacidad para imprimir en cheque y el problema que tengo es que no puedo cambiar el area de impresion del cheque. ingnora mi comando
les agradeceria mucho su ayuda.

Etiquetas: ibm, impresora
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:58.