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.