Fórum Comunicação Serial rs232 em java utilizando NETBEANS Windows7 #391390
26/11/2010
0
EU estou querendo desenvolver programa que faz comunicacao serial com protocolo rs232 no netbeans do windows 7, eu estava tentanto add bibliotecas no NETbeans mais nao consegui tb e nem sei como add-las(se alguem pude ajudar tb nessa parta).
Se alguem puder dar um help!!!!!
abrazz
Joao Pedro
Curtir tópico
+ 0Posts
26/11/2010
Joao Pedro
Gostei + 0
27/11/2010
Joao Pedro
eu estava construindo o programa pra fazer comunicacao serial no netbeans, adicionei uma biblioteca chamada comm.jarquando eu rodo o programa da um erro assim:
Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialParallel in java.library.pathCaught java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySerial(Ljava/util/Vector;Ljava/lang/String;)I while loading driver com.sun.comm.SolarisDriverErro durante o procedimento. STATUSjavax.comm.NoSuchPortExceptionJava Result: 1CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
OBS: eu nao estou usando esse com.sun.comm(SolarisSerial)!!! eu estou usando apenas javax.comm, lembrando que as duas CLASSES faz parte da biblioteca comm.jar
package utilitarios;
import javax.comm.*;import java.io.*;//classe Principalpublic class SComm implements Runnable, SerialPortEventListener{//propriedadesprivate String Porta;public String Dadoslidos;public int nodeBytes;private int baudrate;private int timeout;private CommPortIdentifier cp;private SerialPort porta;private OutputStream saida;private InputStream entrada;private Thread threadLeitura;//indicadoresprivate boolean IDPortaOK; //true porta EXISTEprivate boolean PortaOK;// true porta abertaprivate boolean Leitura;private boolean Escrita;//construtor default paridade : par//baudrate: 9600 bps stopbits: 2 COM 1public SComm(){ Porta = "COM1"; baudrate = 9600; timeout = 1000;};//um Objeto ComObj é passado ao construtor//com detalhes de qual porta abrir//e informações sobre configuraçõespublic SComm( String p , int b , int t ){ this.Porta = p; this.baudrate = b; this.timeout = t;};//habilita escrita de dadospublic void HabilitarEscrita(){ Escrita = true; Leitura = false;}//habilita leitura de dadospublic void HabilitarLeitura(){ Escrita = false; Leitura = true;}//Obtém o ID da PORTApublic void ObterIdDaPorta(){ try { cp = CommPortIdentifier.getPortIdentifier(Porta); if ( cp == null ) { System.out.println("A " + Porta + " nao existe!" ); System.out.println("ERRO!Abortando..." ); IDPortaOK = false; System.exit(1); } IDPortaOK = true; } catch (Exception e) { System.out.println("Erro durante o procedimento. STATUS" + e ); IDPortaOK = false; System.exit(1); } }//Abre a comunicação da portapublic void AbrirPorta(){ try { porta = (SerialPort)cp.open("SComm",timeout); PortaOK = true; System.out.println("Porta aberta com sucesso!"); //configurar parâmetros porta.setSerialPortParams(baudrate, porta.DATABITS_8, porta.STOPBITS_2, porta.PARITY_NONE); } catch (Exception e) { PortaOK = false; System.out.println("Erro ao abrir a porta! STATUS: " + e ); System.exit(1); }}//função que envie um bit para a porta serialpublic void EnviarUmaString(String msg){ if (Escrita==true) { try { saida = porta.getOutputStream(); System.out.println("FLUXO OK!"); } catch (Exception e) { System.out.println("Erro.STATUS: " + e ); } try { System.out.println("Enviando um byte para " + Porta ); System.out.println("Enviando : " + msg ); saida.write(msg.getBytes()); Thread.sleep(100); saida.flush(); } catch (Exception e) { System.out.println("Houve um erro durante o envio. "); System.out.println("STATUS: " + e ); System.exit(1); } } else { System.exit(1); } }//leitura de dados na serialpublic void LerDados(){ if (Escrita == true){ try { entrada = porta.getInputStream(); System.out.println("FLUXO OK!"); } catch (Exception e) { System.out.println("Erro.STATUS: " + e ); System.exit(1); } try { porta.addEventListener(this); System.out.println("SUCESSO. Porta aguardando..."); } catch (Exception e) { System.out.println("Erro ao criar listener: "); System.out.println("STATUS: " + e); System.exit(1); } porta.notifyOnDataAvailable(true); try { threadLeitura = new Thread(this); threadLeitura.start(); } catch (Exception e) { System.out.println("Erro ao iniciar leitura: " + e ); } } }//método RUN da thread de leiturapublic void run(){ try { Thread.sleep(5000); } catch (Exception e) { System.out.println("Erro. Status = " + e ); } }//gerenciador de eventos de leitura na serialpublic void serialEvent(SerialPortEvent ev){switch (ev.getEventType()) {case SerialPortEvent.BI:case SerialPortEvent.OE:case SerialPortEvent.FE:case SerialPortEvent.PE:case SerialPortEvent.CD:case SerialPortEvent.CTS:case SerialPortEvent.DSR:case SerialPortEvent.RI:case SerialPortEvent.OUTPUT_BUFFER_EMPTY:break;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; } }//função que fecha a conexãopublic void FecharCom(){ try { porta.close(); System.out.println("CONEXAO FECHADA>>FIM.."); } catch (Exception e) { System.out.println("ERRO AO FECHAR. STATUS: " + e ); System.exit(0); }}//Acessorespublic String obterPorta() {return Porta; }public int obterBaudrate() {return baudrate; }}
Gostei + 0
03/12/2010
Rodrigo Andrade
Gostei + 0
03/12/2010
Joao Pedro
Eu consegui resolve o problema! agora comunicacao esta funcionando 100%
vlw pela ajuda abraço
Gostei + 0
03/12/2010
Rodrigo Andrade
Gostei + 0
10/12/2010
Dyego Carmo
Gostei + 0
10/12/2010
Dyego Carmo
Gostei + 0
10/12/2010
Joao Pedro
valeu pela dica
abrazz
Gostei + 0
27/12/2010
Dyego Carmo
Fico no aguardo !
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)