Bom pessoal, eu estava com um problema pra decidir como fazer para acessar a porta paralela da impressora no momento de uma impressão no cliente. Mas minha aplicação é cliente /servidor certo? Então eu pensei em um applet para acesso local da máquina e portanto da impressora, pois preciso de velocidade pois o dia-a-dia de meu cliente é dinâmico.
Não poderia deixar com que o windows fizesse interface com minha aplicação então resolvi fazer o acesso via RXTX.
Soh que quando eu executo o applet ele me devolve alguns erros…
É possível escrever esse código?
Quero dizer, ele está certo? Ele é possível? ou esses erros são devido à minha impressora não estar conectada?
Digo isso pois os erros que ele me devolve se referem não somente à portInUse, mas também outros como java.lang.Class, sun.applet.AppletPanel e java.lang.Thread
Aqui abaixo vai o código:
package applets;
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.ParallelPort;
import gnu.io.PortInUseException;
import java.io.IOException;
import java.io.OutputStream;
import sun.io.CharToByteUnicode;
import java.applet.Applet;
import java.awt.Graphics;
@SuppressWarnings("serial")
public class PrintApplet extends Applet {
private static OutputStream outputStream;;
private static ParallelPort portaParalela;
private static CommPortIdentifier port;
// CONSTANTS
public static final String PORTA_PARALELA = "LPT1";
@SuppressWarnings("deprecation")
public void paint(Graphics g){
g.drawString("Teste",0,0);
String printerCodes=null;
if (getParameter("texto")==null || getParameter("texto").toString() == "") {
printerCodes = "nulo";
} else {
printerCodes = getParameter("texto");
}
g.drawString("Mensagem: "+printerCodes, 100, 0);
g.drawString("Testando...",100,4);
try {
// get the parallel port connected to the printer
port = CommPortIdentifier.getPortIdentifier(PORTA_PARALELA);
g.drawString("port.name = " + port.getName(),100,8);
// open the parallel port -- open(App name, timeout)
portaParalela = (ParallelPort) port.open("CommTest", 50);
outputStream = portaParalela.getOutputStream();
char[] charArray = printerCodes.toCharArray();
byte[] byteArray = CharToByteUnicode.getConverter("UTF8").convertAll(charArray);
g.drawString("Impressão: "+printerCodes,100,12);
g.drawString("Escreve...",100,16);
outputStream.write(byteArray);
g.drawString("Limpa...",100,20);
outputStream.flush();
g.drawString("Fecha...",100,24);
outputStream.close();
} catch (NoSuchPortException e) {
g.drawString("\nPorta de impressão LPT1 não encontrada : "
+ "NoSuchPortException.\nException:\n" + e + "\n",100,30);
} catch (PortInUseException e) {
g.drawString("\nPorta de impressão LPT1 em uso : "
+ "PortInUseException.\nException:\n" + e + "\n",100,30);
} catch (IOException e) {
g.drawString("\nPorta de impressão LPT1 falhou na impressão : "
+ "IOException.\nException:\n" + e + "\n",100,30);
} catch (Exception e) {
g.drawString("\nFalha ao abrir Porta de impressão LPT1. Erro : "
+ e + "\n",100,30);
} finally {
if (port != null && port.isCurrentlyOwned()) {
portaParalela.close();
}
g.drawString("Acesso ao hardware terminado.\n",100,34);
}
}
}
E muito obrigado para quem puder me ajudar…
