segunda-feira, 28 de fevereiro de 2011

Classes anônimas

Se um dia você não quiser dá nome a sua classe, estara criando classe anônima. Classes anônmas são classes, que são declaradas, "on-the-fly", ou seja, onde são necessárias, dentro de um bloco de código.
Se sabemos que não vamos precisar dela após, logo não temos necessidade de dar-lhe um nome que permita acesso posterior. Estas classes sempre herdam de uma classe ou implementam uma interface e não possuem seus construtores.



Exemplo:

interface Interface {
    String exibeNome();
}

public class TesteAnonimo {

    public static void main(String[] args) {

        Interface inter = (new Interface() {

            public String exibeNome() {
                return "gilberto masetto";
            }
        });
        System.out.println("Meu nome é: " + inter.exibeNome());
    }
}

segunda-feira, 21 de fevereiro de 2011

Operador de comparação instanceof

O operador instanceof é usado para verificar vairiáveis de referência, pode ser usado para verificar se um objeto é de um tipo específico, por exemplo:

Criar uma classe Veiculo

public class Veiculo {

   String placa;
   String cor;
   String modelo;
   int rodas;
}

Criar um classe Carro

public class Carro extends Veiculo {

    int estepe;
    int limpador;
    int volante;

}

Agora criar um classse Main de teste

public class Main {
   
    public static void main(String[] args) {
        //Instância classe Carro
        Carro c = new Carro();
        //Verifica se c é ums instãncia de veiculo
        if(c instanceof Veiculo){
            System.out.println("entra aqui");
        }
    }
}

Isso significa que você sempre pode testar uma referência de objeto com instanceof

segunda-feira, 14 de fevereiro de 2011

Criando uma conexão com uma portal serial

Criar um projeto com um nome qualquer, e depois criar um classe chamada SerialConnection.

import java.io.InputStream;
import java.io.OutputStream;
import javax.comm.CommDriver;
import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;

/**
 *
 * @author gilberto.masetto
 */
public class SerialConnection {

    private SerialPort porta;
    private InputStream in;
    private OutputStream out;
    public static final int VELOCIDADE_PADRAO = 9600;
    public static final int BITS_DADOS_PADRAO = SerialPort.DATABITS_8;
    public static final int BITS_PARADA_PADRAO = SerialPort.STOPBITS_2;
    public static final int PARIDADE_PADRAO = SerialPort.PARITY_NONE;
    public static final int TIMEOUT_PADRAO = 1000;
    public static final String PORTA_PADRAO_WINDOWS = "COM1";


    //Construtor que inicializa com a porta setada
    public void openCommunication() throws Exception {
        try {
            //Acessa a lib comm.jar que fica dentro do JDK 1.6
            String driverName = "com.sun.comm.Win32Driver";
            //Cria uma instância
            CommDriver commDriver = (CommDriver) Class.forName(driverName).newInstance();
            synchronized (commDriver) {
                //Inicializa o driver e abre e cria a conexão com a porta
                commDriver.initialize();
                porta = (SerialPort) commDriver.getCommPort(PORTA_PADRAO_WINDOWS, CommPortIdentifier.PORT_SERIAL);
            }
            setParameters(VELOCIDADE_PADRAO, BITS_DADOS_PADRAO, BITS_PARADA_PADRAO, PARIDADE_PADRAO);
            //Entrada de dados
            in = porta.getInputStream();
            //Saída de dados
            out = porta.getOutputStream();
        } catch (PortInUseException e) {
            throw new Exception("A porta " + PORTA_PADRAO_WINDOWS + " está em uso", e);
        } catch (Exception e) {
            throw new Exception("Porta não encontrada " + PORTA_PADRAO_WINDOWS, e);
        }
    }

    //Verifica se está conectado
    public boolean isConnected() {
        if (porta != null) {
            return true;
        } else {
            return false;
        }
    }

    //Desconecta
    public void disconect() throws Exception {
        if (isConnected()) {
            closeCommunication();
        }
    }

    public void setParameters(int velocidade, int dados, int parada, int paridade) throws Exception {
        try {
            porta.setSerialPortParams(velocidade, dados, parada, paridade);
        } catch (Exception e) {
            throw new Exception("Operação não suportada", e);
        }
    }

  
    public void closeCommunication() throws Exception {
        try {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
            if (porta != null) {
                porta.close();
            }
        } catch (Exception e) {
            throw new Exception("Erro ao fechar porta", e);
        }
    }
}

sexta-feira, 11 de fevereiro de 2011

Configurar seu computador para leitura de porta serial

Copie e cole os arquivos em :

arquivo:    Comm.jar
destino:    C:\Arquivos de programas\Java\SEU_JRE\lib\ext

arquivo:    Win32com.dll
destino:    C:\Arquivos de programas\Java\SEU_JRE\bin

arquivo:    Javax.comm.properties 
destino:    C:\Arquivos de programas\Java\SEU_JRE\lib

Desenvolvedores colar os arquivos no JRE incluso no JDK