Pergunta

Eu tenho um aplicativo que lê dados de uma porta COM usando javax.comm.

O problema que estou tendo é que se o dispositivo que estou lendo de forma inesperada é desconectado eu recebo um erro no console que diz "WaitCommEvent: Erro 5"

Eu olhei ao redor e não consegue encontrar qualquer informação útil sobre isso. Tenho definir toda a notifyOn * métodos para true então eu acho que eu deveria estar recebendo todos os eventos, mas eu não estou pegando este.

A mensagem de erro que é impresso não vem de qualquer lugar no meu código para que ele deve estar no lugar pacote javax.comm. Alguém pode me dizer como lidar com esse erro para que eu possa fechar a porta com corretamente quando ele ocorre?

Obrigado!

Foi útil?

Solução

Se alguém estiver interessado neste, eu encontrei uma solução. Eu estava usando a API javax.comm mas para resolver o problema eu substituí-lo com api rxtx ( http://rxtx.qbang.org/wiki/index.php/Main_Page ). Nenhuma alteração de código foram necessárias, mas agora, quando o dispositivo é desligado recebo um IOException com a mensagem "fluxo de entrada Subjacente retornado zero bytes". Eu lidar com essa mensagem e lançar um novo segmento. No novo port.close thread de chamada () e port.removeEventListener (). Estas duas chamadas deve ser feito em um novo segmento ou o aplicativo irá travar.

Outras dicas

Estamos usando muito tempo em obter javax.comm ao trabalho e descobriu que no nosso caso, era o motorista COM que estava causando os problemas (em vários computadores Windows 7). Se o motorista também é o seu problema e você estiver usando o Windows 7 ou possivelmente Vista (e você está usando um cabo seriel Prolific / LogiLink), então este pode ser a solução :) http://www.akosta.dk/category/technical-notes/

A esperança de obtê-lo para o trabalho!

Esta questão é quase 2 anos de idade, mas talvez um outro precisa de uma solução possível:

Eu tive o mesmo problema com java.comm: "WaitCommEvent: Erro 5" Esta mensagem aparece várias vezes, se a porta COM é desconectada, mas o objeto SerialPort não está fechada.

Minha solução foi fechar o objeto SerialPort se a leitura / escrita da IO córregos do SerialPort lançou uma exceção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top