j2ee + applet!

1 resposta
trgpwild

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…

1 Resposta

trgpwild

O erro que aparece está na imagem em anexo…

Criado 12 de junho de 2007
Ultima resposta 13 de jun. de 2007
Respostas 1
Participantes 1