Mais javax.comm  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
marciocamurati
JavaEvangelist
[Avatar]

Membro desde: 29/05/2004 14:54:36
Mensagens: 322
Localização: São Paulo
Offline

E ai galera, ainda estou me matando e não chegando a lugar nenhum, já montei o hardware mas o meu software não envia nada para a porta paralela fazendo com que o led se acenda na verdade o software na hora que chega no .write() fica em standy até eu dar um CTRL+C para para o processo, alguém pode me ajudar ?

Segue o código q estou usando atualmente.




[]s

Marcio Camurati
[WWW] [MSN] [ICQ]
Axel-Foley
Thread.start()

Membro desde: 03/11/2004 23:16:58
Mensagens: 48
Offline

estou exatamente com o mesmo problema:
http://www.guj.com.br/forum/viewtopic.php?t=17234
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Bom, como eu tinha falado em um dos posts, o problema da porta paralela para você controlar leds é que você deve deixar uma das entradas de controle, não de dados, em um determinado nível lógico (não sei se é em 0) para que a porta possa receber bytes (simulando uma impressora on-line e pronta para receber comandos). Para deixar nesse nível lógico você precisa fazer uma pequena ligação no cabo - mas infelizmente não lembro mais qual é o tal sinal, portanto passo esta questão aos universitários.
[WWW]
Axel-Foley
Thread.start()

Membro desde: 03/11/2004 23:16:58
Mensagens: 48
Offline

deu certo!!!!!!!!!!

cara, é exatamente isso que o thingol falou... a javacomm joga pro driver do windows... e o windows espera um sinal da porta indicando que a "impressora esta online"
exatamente como o thingol disse...
o unico trabalho foi descobrir que pino era... e descobrimos que é o pino 11 (o BUSY), foi só mudar o nivel dele (pra 0) que ele parou de travar no write....

vou fazer mais testes aqui, mas parece que agora esta ok

valeuuuuu a todos!!
FightSurf George Maia
JavaChild
[Avatar]

Membro desde: 02/03/2008 16:48:46
Mensagens: 118
Localização: João Pessoa
Offline

Estou com quase o mesmo problema
Estou rodando a plaquinha no linux ubuntu.

Em um programinha do windows que baixei pronto, tudo funciona direitinho.

Quando mando o programa java que eu fiz rodar, os leds ficam acesos nesta sequencia: 01010101, apesar de eu ter mando 00000000 (0 em decimal int).

Na sequência que já estava, o programa fica la no write e depois dispara este erro:

"java.io.IOException: write to parallel port failed"

Só depois da exception lançada, que o que eu realmente mandei acontece: os leds se apagam ou acendem, de acordo com o que enviei no momento.

Alguém pode me ajudar?

Meu código para consulta.

This message was edited 1 time. Last update was at 02/03/2008 23:13:47


George Maia
www.fightsurf.com.br
[WWW] [MSN]
FightSurf George Maia
JavaChild
[Avatar]

Membro desde: 02/03/2008 16:48:46
Mensagens: 118
Localização: João Pessoa
Offline

Para fins de pesquisa e se alguém conseguir resolver esse problema, Por favor escreva aqui.

Pesquisei por alguns dias seguidos sobre a possibilidade de obter comunicação da porta paralela com java com alguns leds conectados diretamente aos pinos do 2 ao 8, como mostra alguns tutoriais na internet, mas especificamente no site do Gabriel Torres, ou do RogerCom.

De nenhuma maneira eu consegui êxito utilizando a api javax.comm sobre o linux para esta comunicação.

Baixei recentemente um programinha windows, feito em delphi, e de acordo com os bits que envio para cada pino da paralela, os leds se acendem e se apagam conforme a minha requisição. O que descarta as soldagens e montagem dos leds no cabo paralelo, tenham feitos de forma errada.

Só que no linux, utilizando a javax.comm, não deu certo ainda.

Pesquisei diversos tutoriais, mandei rodar os exemplos que vem na própria pasta da javacomm api e acontecem o mesmo problema que a minha aplicação feita do 0, usando as apis:

A aplicação começa a ser bem executada, mas quando chega no comando write, da classe OutPutStream, verificando no Debug, percebi que este método é segurado e o comando fica por lá até aproximadamente 1.5 minuto. Quando a aplicação começa a rodar aí, os leds se acendam nesta ordem: 01010101, apesar de eu ter mando 11111111(255) ou 00000000 (0 binário).

após 1 minuto e meio, ainda no método WRITE, uma exception é disparada com os seguintes dizeres:

java.io.IOException: write to parallel port failed

e depois que a exception é mostrada, os bits que realmente mandei para a paralelea são enviados: ou todos os leds se apagam, ou se acendem, conforme o meu comando.

Estive pesquisando estes dias e vi que estes erros perseguem muitos programadores ao redor do mundo, que tentam interfacear este esquema de leds no linux ou no windows com esta api.

Logo acima, parece que o nosso colega conseguiu a solução do problema. Mas pesquisando aqui no fórum do guj, vi que ele logo depois, em outro tópico, avisa que não deu certo e que precisava fazer mais testes.

Enfim, se alguém puder me ajudar a desenvolver esta solução em java puro, no caso, eu optei por utilizar o javax.comm, que se adquire no próprio site da sun, estou aberto a sugestões.

Abraço a todos.

George Maia
www.fightsurf.com.br
[WWW] [MSN]
FightSurf George Maia
JavaChild
[Avatar]

Membro desde: 02/03/2008 16:48:46
Mensagens: 118
Localização: João Pessoa
Offline

Deixarei esta mensagem para fins de pesquisa.
Espero que seja útil no futuro e que poupe tempo de alguém quando for pesquisar sobre javax.comm.

Sobre o controle de envio de bits para a porta paralela, mais especificamente a brincadeira de testar o acender e apagar de leds, conectados diretamente aos pinos do 2 ao 8, com a API do java, dá certo sim.

Depois de dias pesquisando e depois de muita raiva, desisti do Java Comm, fui para o rxtx e depois para o Parport, soluções que saem da visão da Sun ou utilizam códigos feitos em C em um nível mais baixo.. Coisa que eu não estava querendo, mas apelando para isso dar certo. Eu gostaria de desenvolver este projeto em java puro, e agora consegui.

Depois de testar sem nenhum êxito, a solução foi soldar os fios correspondentes aos pinos 11 ao 25. Explicando: O pino 11 corresponde ao sinal "BUSY" da porta paralela. Então quando a minha aplicação iniciava, tudo aquela sequência de bits acendia indicando que o dispositivo estava ocupado. Então o que eu fiz, foi deixar o BUSY = 0, soldando algum fio nele que corresponda ao terra. Fiz com o pino 25, mas poderia ser qualquer um do 18 ao 25.

Com o Busy no terra, fio possível o total envio de bits para o dispositivo que montei, com os leds.

George Maia
www.fightsurf.com.br
[WWW] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Obrigado pela dica. Vai pra minha coleção de "Favoritos".
[WWW]
bibop
Smalltalk

Membro desde: 05/11/2009 10:24:19
Mensagens: 2
Offline

Bom dia FightSurf George Maia,, se tiver como vc enviar os comando ai em java q vc finalizou a comunicaçao com os leds em java ficarei grato.
ricardogueds@hotmail.com
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team