Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/04/2011, 21:56
geminis19
 
Fecha de Ingreso: febrero-2006
Mensajes: 58
Antigüedad: 18 años, 10 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