API de comunicação SERIAL da SUN (Javacomm)
Dica de como trabalhar com a API JavaComm, para enviar mensagens a portas seriais
1) Baixar a API:
Você encontra a API disponível no site:
http://java.sun.com/products/javacomm/index.jsp
Basta baixar a API e realizar os procedimentos de instalação. Após baixar a API, descompactá-la, você
terá:
o Copiar o arquivo win32com.dll para o diretório C:\JavaSDK\BIN (isto é, o diretório onde o
J2SDK foi instalado no seu PC).
o Copiar o arquivo comm.jar para o diretório C:\JavaSDK\BIN\LIB.
o Copiar o arquivo javax.comm.properties para o diretório C:\JavaSDK\BIN\LIB.
o Em seguida configure o CLASSPATH para que ele reconheça o arquivo comm.jar.
RECONHECENDO AS PORTAS
//....Enumeration listaDePortas;
listaDePortas = CommPortIdentifier.getPortIdentifiers();
//...
//..
int i = 0; portas = new String[10];
while (listaDePortas.hasMoreElements()) {
CommPortIdentifier ips = (CommPortIdentifier)listaDePortas.nextElement(); portas[i] = ips.getName();
i++;
}
//..
ABRINDO AS PORTAS
O método getPortIdentifier(String porta) da classe CommPortIdentifier retorna um identificador da porta escolhida. Precisamos instanciar um objeto para receber esse identificador:CommIdentifier cp = CommPortIdentifier.getPortIdentifier(minhaPortaEscolhida);
Em seguida criamos uma instância da classe SerialPort utilizando o identificador. Note que uma conversão deverá ser feita. A porta só pode ser instanciada através desse “casting” e ao mesmo tempo abrimos a porta para comunicação:
SerialPort porta = (SerialPort)cp.open("SComm",timeout);
O método open() tem como parâmetros o nome da classe principal (faça isso para não gerar conflitos) e o valor desejado para timeout. Em seguida, precisamos atribuir fluxos de entrada e saída. Basta utilizar as classes Abstratas OutputStream e InputStream, já que a classe SerialPort implementa os métodos de entrada e saída dessas classes para comunicação serial. Para ler dados na porta serial:
InputStream entrada = porta.getInputStream();
E para escrever dados na porta serial:
OutputStream saida = porta.getOutputStream();
Em seguida precisamos configurar os parâmetros de comunicação serial, para isso utilizamos o método setSerialPortParams:
porta.setSerialPortParams(baudrate, porta.DATABITS_8, porta.STOPBITS_2, porta.PARITY_NONE);
ENVIANDO DADOS
Depois de configurar a porta para comunicar e definido o fluxo de saída, podemos comunicar os dados. Isso é bem simples:
String msg = “Olá Mundo!”;saida.write(msg.getBytes());
Thread.sleep(100);
saida.flush();
RECEBENDO DADOS
porta.addEventListener(this);porta.notifyOnDataAvailable(true);
public void serialEvent(SerialPortEvent ev){
switch (ev.getEventType()) {
//…
case SerialPortEvent.DATA_AVAILABLE: byte[] bufferLeitura = new byte[20];
try { while ( entrada.available() > 0 ) { nodeBytes = entrada.read(bufferLeitura);
}
String Dadoslidos = new String(bufferLeitura);
if (bufferLeitura.length == 0) {
System.out.println("Nada lido!");
} else
if (bufferLeitura.length == 1 ){
System.out.println("Apenas um byte foi lido!");
} else {
System.out.println(Dadoslidos);
}
} catch (Exception e) {
System.out.println("Erro durante a leitura: " + e );
}
System.out.println("n.o de bytes lidos : " + nodeBytes ); break; }
}
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo