Applet Acessando Serial

1 resposta
MarceloFernandes

Fala aeh Pessoal :smiley:

Eu desenvolvi um .class simples que faz acesso a porta serial COM1, já testei com o HyperTerminal do Windows e ele está enviando a String de texto definida por min, agora preciso saber SE é possivel eu colocar esse código em um Applet para que eu possa enviar um String para a COM1 de quem acessar o Applet…

Fiz algumas tentativas mas não consegui, vou liberar o código para que voces possam analisar e entender melhor minha duvida…

Mto Obrigado Pessoal, Abraços :smiley:

package codigobarras;

import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import java.lang.*;
import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;


public class Main {
    
    static public final char STX = 0x02; //inicio de um bloco de mensagem
    static public final char ETX = 0x03; //fim de um bloco de mensagem
    static public final char EOT = 0x04; //fim de uma troca de mensagem
    static public final char ACK = 0x06; //ack normal = ok
    static public final char NAK = 0x15; //não ack
    static public final char FS = 0x1C;  //separador de campos da mensagem
    static public final char GS = 0x1D;  //separador de campos da mensagem
    static public final char US = 0x1F;  //separador de campos da mensagem
    public static boolean encontrada=false;

    public Main() {
    }

    public static void main(String[] args) {
        
        InputStream  datain;
        OutputStream dataout;

        SerialPort	 porta;
        String nomePorta = "COM1";

         porta = getPorta(nomePorta);
         byte msg[]={STX, 'A','C','E','S','S','O','_','C','O','M','C','L','U','I','D','O',ETX,EOT};

         try{
             
             datain = porta.getInputStream();
             dataout = porta.getOutputStream();
             dataout.write(msg);
        }catch(Exception e){
           // Deu pau ao obter portas
           e.printStackTrace();
       }

        
    }
    
    public static SerialPort getPorta(String porta){
         
         SerialPort serialPort = null ;
         CommPortIdentifier portId;
         Enumeration    portList;
         
         //Obtem a lista de portas abaixo (no arquivo javax.comm.properties, vou falar depois)
         portList = CommPortIdentifier.getPortIdentifiers();
         
         while (portList.hasMoreElements()) {
             portId = (CommPortIdentifier) portList.nextElement();
             //Pega só as portas seriais
             if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                 //Esse cara aqui vê se a porta que ele encontrou é a que vc quer!!
                 if (portId.getName().equals(porta)) {
                     System.out.println("Found port " + porta);
                     
                     encontrada = true;
                     
                     try {
                        //SimpleWrite é o nome da aplicação e 2000 o timeout
                         serialPort = (SerialPort)portId.open("TesteConexao", 1000);

                     } catch (PortInUseException e) {
                         System.out.println("Port in use.");
                         
                         continue;
                     }
                     
                     try {
                        //Notificar quando o output está clean
                         serialPort.notifyOnOutputEmpty(true);
                     } catch (Exception e) {
                         System.out.println("Error setting event notification");
                         System.out.println(e.toString());
                         
                     }
                 }
             }
         }
         
         return serialPort;
         
     }

    
}

1 Resposta

T

Você teria de ter um “applet instalador” que copiasse a win32com.dll para o \windows\system32 e o comm.jar e o javax.comm.properties em algum lugar como no jre/lib/ext da JVM do Sun Java Plugin, devidamente assinado. Acho que isso é um negócio chato de fazer.

Outra coisa chata é que se o usuário não tiver direito de administrador sobre a máquina, nada disso do que falei dá para fazer, mesmo assinando a applet.

Criado 14 de julho de 2006
Ultima resposta 14 de jul. de 2006
Respostas 1
Participantes 2