Como usar javax.comm na LPT1

3 respostas
Rodrigo_Vieira_Pinto

ola pessoal
Alguém sabe como faço para enviar comandos para uma impressora via lpt1? O programa que fiz compila e não gera exceção, mas a impressora não imprime (o programa também não dá aviso de erro).
O código está abaixo:

import javax.comm.<em>;

import java.util.</em>;

import <a href="http://java.io">java.io</a>.<em>;

import javax.swing.</em>;

/**
*

  • @author rodrigo.pinto
    */
    public class Paralela {

    Enumeration listaDePortas;
    
    String portas[];
    
    String codigoImpressao;
    
    OutputStream saida;
    
    ParallelPort portaParalela;
    
    int timeout = 1000;
    
    int baudrate = 57600;
    
    /** Creates a new instance of Paralela */
    
    public Paralela() {
    
    listaDePortas = CommPortIdentifier.getPortIdentifiers();
    
    int i = 0;
    
    portas = new String[4];
    
    while (listaDePortas.hasMoreElements()) {
    
    CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement();
    
    portas[i] = ips.getName();
    
    if (ips.getPortType() == CommPortIdentifier.PORT_PARALLEL)
    
    JOptionPane.showMessageDialog(null, "porta paralela: " + portas[i]);
    
    i++;
    
    }
    
    try{            
         FileReader ptrETQ = new FileReader(new File("C:\\paralela\\ETQ.TXT"));                        
         CommPortIdentifier cp = CommPortIdentifier.getPortIdentifier("LPT1");            
         portaParalela = (ParallelPort)cp.open("Paralela", timeout);           
         portaParalela.setMode(ParallelPort.LPT_MODE_SPP);
         saida = portaParalela.getOutputStream();                                       
         while (true){
             int k = ptrETQ.read();
             if(k == -1) break;                
             System.out.print((char) k);
             saida.write((char) k);
         }
         //saida.flush(); //DEVE SER USADO COM A IMPRESSORA CONECTADA AO PC
         saida.close();
         ptrETQ.close();            
         System.out.println("Mensagem enviada");
     }
     catch (NoSuchPortException nspe){
         JOptionPane.showMessageDialog(null, "Não foi possível encontrar a porta desejada. ERRO " + nspe.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
     
     catch (PortInUseException piue){
         JOptionPane.showMessageDialog(null, "Porta solicitada está em uso.ERRO " + piue.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
      
     catch(IllegalStateException ise){
         JOptionPane.showMessageDialog(null, "Tipo de porta desconhecida.ERRO" + ise.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
     
     catch(UnsupportedCommOperationException ucoe){
         JOptionPane.showMessageDialog(null, "Operação não suportada. ERRO " + ucoe.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
              
     catch (IOException ioe){
         JOptionPane.showMessageDialog(null, "Não foi possível fechar a porta\nou arquivo de impressão não foi encontrado. ERRO " + ioe.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
     
     catch(Exception e){
        JOptionPane.showMessageDialog(null, "Ocorreu um erro inesperado. ERRO " + e.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE); 
        e.printStackTrace();
     }
    

    }

    public static void main (String args[]){
    
    System.out.println(Enviando a mensagem pela paralela);
    
    Paralela p = new Paralela();
    
    System.exit(0);
    
    }
    

}

Espero que alguém possa me ajudar.
valew!

3 Respostas

RRaminelli

Rodrigo Vieira Pinto:
ola pessoal
Alguém sabe como faço para enviar comandos para uma impressora via lpt1? O programa que fiz compila e não gera exceção, mas a impressora não imprime (o programa também não dá aviso de erro).
O código está abaixo:

import javax.comm.<em>;

import java.util.</em>;

import <a href="http://java.io">java.io</a>.<em>;

import javax.swing.</em>;

/**
*

  • @author rodrigo.pinto
    */
    public class Paralela {

    Enumeration listaDePortas;
    
    String portas[];
    
    String codigoImpressao;
    
    OutputStream saida;
    
    ParallelPort portaParalela;
    
    int timeout = 1000;
    
    int baudrate = 57600;
    
    /** Creates a new instance of Paralela */
    
    public Paralela() {
    
    listaDePortas = CommPortIdentifier.getPortIdentifiers();
    
    int i = 0;
    
    portas = new String[4];
    
    while (listaDePortas.hasMoreElements()) {
    
    CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement();
    
    portas[i] = ips.getName();
    
    if (ips.getPortType() == CommPortIdentifier.PORT_PARALLEL)
    
    JOptionPane.showMessageDialog(null, "porta paralela: " + portas[i]);
    
    i++;
    
    }
    
    try{            
         FileReader ptrETQ = new FileReader(new File("C:\\paralela\\ETQ.TXT"));                        
         CommPortIdentifier cp = CommPortIdentifier.getPortIdentifier("LPT1");            
         portaParalela = (ParallelPort)cp.open("Paralela", timeout);           
         portaParalela.setMode(ParallelPort.LPT_MODE_SPP);
         saida = portaParalela.getOutputStream();                                       
         while (true){
             int k = ptrETQ.read();
             if(k == -1) break;                
             System.out.print((char) k);
             saida.write((char) k);
         }
         //saida.flush(); //DEVE SER USADO COM A IMPRESSORA CONECTADA AO PC
         saida.close();
         ptrETQ.close();            
         System.out.println("Mensagem enviada");
     }
     catch (NoSuchPortException nspe){
         JOptionPane.showMessageDialog(null, "Não foi possível encontrar a porta desejada. ERRO " + nspe.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
     
     catch (PortInUseException piue){
         JOptionPane.showMessageDialog(null, "Porta solicitada está em uso.ERRO " + piue.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
      
     catch(IllegalStateException ise){
         JOptionPane.showMessageDialog(null, "Tipo de porta desconhecida.ERRO" + ise.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
     
     catch(UnsupportedCommOperationException ucoe){
         JOptionPane.showMessageDialog(null, "Operação não suportada. ERRO " + ucoe.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
              
     catch (IOException ioe){
         JOptionPane.showMessageDialog(null, "Não foi possível fechar a porta\nou arquivo de impressão não foi encontrado. ERRO " + ioe.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
     }
     
     catch(Exception e){
        JOptionPane.showMessageDialog(null, "Ocorreu um erro inesperado. ERRO " + e.getMessage(), "Mensagem do sistema", JOptionPane.ERROR_MESSAGE); 
        e.printStackTrace();
     }
    

    }

    public static void main (String args[]){
    
    System.out.println(Enviando a mensagem pela paralela);
    
    Paralela p = new Paralela();
    
    System.exit(0);
    
    }
    

}

Espero que alguém possa me ajudar.
valew!

Use esse comando, passando a mensagem que será impressa:

public static void sendLPT1(final String str) {

new Thread() {

public void run() {

try {

FileOutputStream os = new FileOutputStream(LPT1);

PrintStream ps = new PrintStream(os);

ps.print(str);

os.close();

}

catch(Exception e) {

}

}

}.start();

}

Rodrigo Raminelli

Rodrigo_Vieira_Pinto

valeu xará!!!

G

Como faço para imprimir com javax.comm, quando a impressora esta instalada em outro computador, e tbm como faço para mudar o tamanho da fonte na impressão. Pois possuo um nota fiscal que esta mal formatada na tabulação de tamanho.

Criado 10 de novembro de 2004
Ultima resposta 4 de jun. de 2010
Respostas 3
Participantes 3