Problemas com Javax.Comm

Estou utilizando a API Java Comm e estou tendo problemas para ler e gravar as informações na porta paralela.

Apenas no modo SPP é permitido enviar alguma coisa para a porta paralela. Nos outros modos (ECP, EPP) tanto para o processo de leitura como escrita é mostrado um erro: javax.comm.UnsupportedCommOperationException

Para a leitura, no modo SPP, dá o erro de “java.io.IOException Unsupported Operation. Output only mode”. Creio que este erro, para o modo SPP esteja correto.

O código da aplicação é praticamente o mesmo mostrado no artigo aqui do GUJ, do Daniel Vasconcelos, “Comunicação Serial Utilizando a API da SUN”.

A modificação que é feita é a substituição de SerialPort para ParallelPort e a configuração da porta que no modo serial tem o método setSerialPortParams é substituido por setMode para portas paralelas.

Na escrita, no modo SPP, quando é enviado alguma coisa, o código é executado até a linha: saida.write (msg.getBytes());

Quando a aplicação chega nesta linha “entra em estado de hibernação”. Não dá mais sinal de vida. No Eclipse, é mostrado que a aplicação ainda permanece em execução, mas não sai desta linha.

Dependendo da máquina, depois de vários minutos é mostrado a mensagem de erro: Dispositivo não conectado.

O tempo que é exibido depende da máquina. Em algumas máquinas, não consegui ver esta mensagem.

Consigo ver quais as portas existentes na máquina e consigo abrir a porta, já o resto…

Qualquer ajuda será bem vinda.

Olá

Suponho que esteja usando Win NT/2000/XP e aqui a API javax.comm não suporta mudança de modo de SPP para outro qualquer. Se você olhar no código fonte vai ver isto. Trata-se de um antigo bug da javax.comm no Windows que a Sun se recusa a consertar (já consertou no Solaris). Na verdade não é muito fácil consertar, mas é possível e a Sun não faz por birra ou por incompetência.

Para usar as portas paralelas em modo bidirecional para ler as respostas da porta é preciso usar um device driver que vc pode achar no google

Veja também:

http://www.beyondlogic.org/

http://www.beyondlogic.org/porttalk/porttalk.htm

http://www.fapo.com/1284int.htm

http://www.embeddedtronics.com/public/Electronics/minidaq/userport/

[]s
Luca

Luca, muito obrigado pela resposta.

A alternativa que estou vendo agora é “baixar o nível” e programar em C ou em Delphi + Assembly para fazer a comunicação com a porta paralela.

Com certeza os links passados serão de muita utilidade.

Valeu,

[]'s

Bem, consegui fazer a comunicação (leitura/escrita) com a porta paralela, utilizando Delphi + Assembly e transformei em um componente.

Uma sugestão de site para pesquisa sobre porta paralela é: www.rogercom.com (em português)

Gostaria de saber existe uma forma de usar o componente feito em Delphi e utiliza-lo em Java.

[]'s

Mais uma vez, muito obrigado à comunidade de usuários Java.

Olá

Transforme em dll e chame via JNI.

[]s
Luca