Outra coisa que não entendi, é como utilizar o metodo:
public void serialEvent(SerialPortEvent ev){
...
}
infelizmente ele parece estar meio perdido ae no meio… eu tbm estou com problemas… e meu “acessrio” esta funfando… estou usando um GPS na porta COM e ele esta mandando normalmente os dados… mas no java no metodo… “LerDados” ele não esta recebendo nada… o “system.out.println(pSerial.Dadoslidos);” sempre dá como null!!!
Cara a primeira coisa que eu recomendo você fazer, é um programinha pra listar as portas. Tenta isso pelo menos se você não conseguir torne a postar aqui que a gente dá uma mão.
[quote] meu filho, isso ja esta feito, ele abre as portas e manda… que mais de informa util voce pode me dar?
Ele não recebe, esta com problema nas linhas de codigo no artigo do GUJ!
[/quote]
hahahahahhaah tem pessoas que além de não ajudar só atrapalham, cara quem é você pra me dizer isso.
Se você parasse pra prestar atenção no que você diz você não ia dizer certas asneiras. Então acho que primeiramente você deve prestar atenção antes de falar dos outros. A minha intenção aqui era ajudar mas pelo jeito tem pessoas aqui que sabe de tudo então deixo na mão do dcbasso resolver isso já que ele é o gostosão, e só pra terminar, amigo eu já fiz projetos usando a porta serial e não preciso de ninguem pra me dizer o que é certo ou o que é errado, ao contrarío de você que não sabe e ainda fica atrapalhando, e pra terminar quando eu fiz essas paradas eu dei uma pequena orientada no artigo aqui do guj sobre isso e não vi erro nenhum.
derds…
cara, então vamos parar de “putaria” E ir para o que relamente interessa…
acho que eu a besteira que falei… mas aquele erro de código, “if (leitura…” ou “if (escrita…” aquilo ta certo mesmo?
Por o metodo eh para ler Dados da Porta Serial, e ele faz um if com se esta habilitado para Escrita… entendeu? isso ta certo?
Pessoal, fiquei sabendo que a familia NT tem um certo problema com I/Os portanto vai ae:
Muitas pessoas tem problema para acessar a porta serial do seu PC quando utilizam a Familia Windows NT (Inclui NT/XP e 2000), e por esta razão estou colocando a disposição um tutorial de como resolver tal problema:
Em DOS nós temos a liberdade de acessar dispositivos do sistema (Hardware), mas com a chegada da familia NT perdemos um pouco desta liberdade e devemos utilizar um DRIVER para acessar estes dispositivos, e para tanto, quando falamos de porta serial, muitas vocês pode ser necessário utilizar o driver para acessar/utilizar a porta serial. Este problema pode ser contornado utilizado o UserPort (Baixe aqui).
Instalação:
Extraia os arquivos e copie o arquivo userport.sys para: “c:\Windows\System32\Drivers”, após isto executa o arquivo userport.exe de onde você poderá colocar endereços nos quais você deseja ter um acesso direto. Após fazer a seleção de endereços, basta clicar em RUN, e está tudo pronto, algumas vezes se faz necessário reiniciar o sistema.
Eu pessoalmente não testei, mas um colega meu fez e realmente deu certo! Recomendo fazer uma cópia/Backup do sistema para sua segurança!
No Vista,XP,98,95(esses já testei) é só copiar os arquivos do javacomm2.0
win32com.dll para a pasta \bin (da pasta da maquina virtual)
e os arquivos javax.comm.properties e comm.jar para \lib (idem)
que tá tudo resolvido
Pessoal, estou com o mesmo problema, esta instalado certo a RxTx, pois enviar dados pela serial consigo, só não estou conseguindo receber, e os dados chegam pois fico monitorando pelo TeraTerm o fluxo.
Alguém sabe o que está faltando no código, utilizei o mesmo do tutorial, aquele que contém o método LerDados().
Depois de alterar e fazer varios testes no programa, consegui fazer entrar no evento que não estava entrando. O tipo que está enviando é OUTPUT_BUFFER_EMPTY, alguém sabe o por que :?:
public void serialEvent(SerialPortEvent ev){
Mensagem(“SERIAL EVENTO***”+ev.getEventType()+"\n");
switch (ev.getEventType()) {
case SerialPortEvent.BI:
Mensagem("BI***\n");
break;
case SerialPortEvent.CD:
Mensagem("CD***\n");
break;
case SerialPortEvent.CTS:
Mensagem("CTS***\n");
break;
case SerialPortEvent.DSR:
Mensagem("DSR***\n");
break;
case SerialPortEvent.FE:
Mensagem("FE***\n");
break;
case SerialPortEvent.OE:
Mensagem("OE***\n");
break;
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
Mensagem("EMPTY***\n");
break;
case SerialPortEvent.PE:
Mensagem("PE***\n");
break;
case SerialPortEvent.RI:
Mensagem("RI***\n");
break;
case SerialPortEvent.DATA_AVAILABLE:
Mensagem("EVENTO AVAIABLE***\n");
// we get here if data has been received
try {
if(entrada.available()==0){
Mensagem("SEM DADOS***\n");
return;
}
byte[] readBuffer = new byte[entrada.available()];
String result = new String(readBuffer);
System.out.println("Read: "+result);
} catch (IOException e) {}
break;
}
}
public byte readByteP(){
int temp, TIMEOUT = 2000;
long time=System.currentTimeMillis();
byte valor = 0;
try{
while ((temp=entrada.available())<=0){
if ((System.currentTimeMillis()-time)>TIMEOUT)
return valor;
}
valor = (byte)entrada.read();
}catch(IOException e){
}
return (byte)valor;
Os parametros estão corretos sim.
Teve um momento em que deixei o terminal aberto e uma mensagem chegou, mas foi a unica que apareceu, depois não apareceu mais.
Você sabe se a biblioteca Comm Api pode causar conflito?
Eu li o link que você passou sim, executei todas instruções, mas mesmo assim não consigo receber dados.
Outra coisa, no link que você mandou está JAVAHOME o nome da váriavel, mas aqui esta JAVA_HOME, será que essa diferença pode estar causando essa falha no recebimento?