como usar javax.comm na LPT1  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Rodrigo Vieira Pinto
JavaEvangelist
[Avatar]

Membro desde: 15/07/2004 11:05:05
Mensagens: 354
Localização: São Paulo
Offline

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.*;
import java.util.*;
import java.io.*;
import javax.swing.*;

/**
*
* @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!

"Ser o segundo é ser o primeiro dos perdedores" - Ayrton Senna

"Eu vou dá 10 pau!!" - Aracy de Almeida

Nova dupla sertaneja: Waterfall e Procedural. Pra começar, é sertanejo (ARGH!)

"Bem, dizia eu que a aritmética..." - Prof. Girafales

RRaminelli
Thread.start()

Membro desde: 10/11/2004 13:14:25
Mensagens: 29
Offline

Rodrigo Vieira Pinto wrote: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.*;
import java.util.*;
import java.io.*;
import javax.swing.*;

/**
*
* @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 Raminelli
São Paulo - SP
[MSN]
Rodrigo Vieira Pinto
JavaEvangelist
[Avatar]

Membro desde: 15/07/2004 11:05:05
Mensagens: 354
Localização: São Paulo
Offline

valeu xará!!!

"Ser o segundo é ser o primeiro dos perdedores" - Ayrton Senna

"Eu vou dá 10 pau!!" - Aracy de Almeida

Nova dupla sertaneja: Waterfall e Procedural. Pra começar, é sertanejo (ARGH!)

"Bem, dizia eu que a aritmética..." - Prof. Girafales

greaseflog
HelloWorld

Membro desde: 23/01/2008 15:09:23
Mensagens: 13
Offline

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.
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team