Ola amigos já pesquisei bastante sobre este assunto neste forum e realmente estou precisando de ajuda pois não estou conseguindo resolver um problema.
Estou fazendo o trabalho de conclusão do meu curso de ciencia da computação e resolvi fazer em Java por NÃO dominar esta linguagem e assim poder ter oportunidade de aprender um pouco mais.
Basicamente meu projeto consiste na comunição SERIAL com uma placa que tem um microcontrolador que conversa com a injeção eletronica de automoveis que usam o padrão OBD-II e traduz isto para ASCII jogando pela serial.
A placa esta funcionado perfeitamente, qdo uso o Hyperterminal e digito por exemplo o comando de solicitação de RPM recebo os valores em ASCII.
Estou usando como base o tutorial da JAVACOMM disponivel aqui no GUJ.
Meu problema esta no momento de RECEBER OS DADOS … não consigo receber os dados completos, não tenho nenhuma intimidade com THREADS e estou desconfiado que o problema deve estar por ter multiplos pontos de execução.
Se alguma alma caridosa puder me ajudar ficaria infinitamente feliz… pq tranquei e não consigo evoluir…
MUITISSIMO OBRIGADO POR QQ AJUDA…
Se a parte do codigo que le e escreve na Serial:
String text = campoEnviaComandos.getText();
SerialCom st = new SerialCom();
AreaTextoRecebimento.append(text + newline);
AreaTextoRecebimento.append(“Enviando o comando ->” + text + newline);
SComm sc = new SComm(“COM1”,9600,2000);
if ( st.PortaExiste(“COM1”) == true) {
AreaTextoRecebimento.append(“Porta Existe - Iniciando comunicação!” + newline);
//SComm sc = new SComm(“COM1”,9600,2000);
sc.HabilitarEscrita();
sc.ObterIdDaPorta();
sc.AbrirPorta();
String novaLinha = System.getProperty( “line.separator” );
sc.EnviarUmaString(text + novaLinha);
//jTextArea1.append(“Enviado ATZ” + newline);
sc.FecharCom();
}
// LE A SERIAL
SerialCom st2 = new SerialCom() ;
if ( st2.PortaExiste("COM1") == true) {
//System.out.println("Iniciando Leitura da Serial!");
jTextArea1.append("Iniciando Leitura da Serial!" + newline);
SComm sc2 = new SComm("COM1",9600,1000);
sc2.HabilitarLeitura();
sc2.ObterIdDaPorta();
sc2.AbrirPorta();
sc2.LerDados();
try {
Thread.sleep(3000);
//Thread.wait();
// saida.flush(1;
} catch (Exception e) {
System.exit(1);
}
/*while (disponivel == false) {
try {
wait();
} catch (InterruptedException e) { }
disponivel = false;
notifyAll();
*/
try {
//Thread.sleep(1000);
//wait();
// saida.flush();
} catch (Exception e) {
System.out.println("Erro de exceção");
System.exit(1);
}
//System.out.println("---->>>>"+sc2.retornaDadoLido());
AreaTextoRecebimento.append(sc2.Dadoslidos + newline);
//jTextArea1.append(sc2.Dadoslidos + newline);
//jTextArea1.append("Classe de Teste - uso do metodo de retorno DadosLidos : " + sc2.dadosLidos() + newline);
//jTextArea1.append("Classe de Teste - uso do metodo de retorno ReadData : " + sc2.ReadData + newline);
sc2.FecharCom();
//sc.Comunica(text);
//AreaTextoRecebimento.append("Dados Recebido do Metodo Comunica -> " + sc.Comunica(text));
}