Bom, to fazendo uns testes aqui da javacomm, usando a porta paralela… tomei por base o tutorial da guj e todos os outros tutoriais que encontrei na net…
eu encontro a porta normalmente, conecto nela, normalmente… entao pego a OutputStream para enviar uma palavra pra porta… quando do o write() no buferr… a palavra é enviada pra porta… mas o programa PARA! simplesmente nao passa da linha que ta o write()…
ja tentei setar varios tipos de configuracao e nada… da o wirte… manda a palavra pra porta, certo… mas para… nao da erro nem nada… simplesmente para…
Hum, portas paralelas têm um problema (ou uma “feature…”) que é o seguinte: existe um sinal de sincronismo (não sei qual é direito, faz duzentos anos que não mexo com portas paralelas - sou do tempo que a gente fazia um spooler manualmente com o DOS…) que se não estiver ativado (por exemplo, com uma impressora conectada e on-line), você não consegue enviar dados para a porta paralela - até faz sentido, porque como é que você vai mandar alguma coisa para uma porta onde não há nada esperando para receber?
Não sei o que você tem espetado na sua porta paralela. Pode ser que o tal sinal não esteja conectado corretamente no cabo. Por via das dúvidas, veja se “dir > prn” (isso se você estiver num Command Prompt do Windows) consegue imprimir alguma coisa.
Vc não disse nada sobre seu programa e menos ainda sobre o sistema operacional. Imagino que usa um sistema operacional de verdade e não um windows pokemon daqueles que se conseguia acessar as portas diretamente (Win98). Além do que o thingol disse, especulo também o seguinte: se seu programa está esperando a resposta do status da porta paralela ou se pretende configura-la como bi-direcional só com javax.comm você não obterá sucesso. Neste caso precisará usar um device driver. Há devices drivers free por aí que podem ser adptados para cada necessidade, mas se você usa uma determinada impressora então procure seu fabricante.
eu fiz os teste no Win98… e meu programa nao precisa de nenhuma leitura da porta… somente escrever mesmo…
mas faz sentido ele PARAR a execucao no momento que estou escrevendo no OUTPUTSTREAM? nem peguei o inputstream…
eu testei varios tipos de configuracao da porta… pra nao esperar dados nem nada… mas todos param no write()
Continuamos sem saber nada sobre sue problema. Como vamos avaliar se falta um flush ou outra coisa qualquer. Coloque o código (entre tags Code e /Code)
windows98 realmente pode ser um problema nao? muitas apis do java as vezes nao tem compatibilidade com win98. de uma lida por ai. e tente no linux, simplesmente rodar.
axel, encontrei um código que envia tambem envia dados pela paralela e nele, a pessoa que o criou guardou a informação em um buffer para depois enviá - la. Para encontrar esse código, vá no site da Sun e digite no Search “parallel port” + java + “chapter 11”.
eu concordo com o Paulo, Rodrigo…
eu pensei nessa solução tambem, enviar tudo de uma vez… mas isto me traria outros problemas…
e mesmo assim, ta muito estranho… nao faz sentido ele parar a thread enqto eu to ESCREVENDO num buffer
até os programas exemplos que vieram na javacomm estao travando no write…
aqui é winxp… alguem ja usou javacomm no winxp?
nao ta enviando NADA pra porta… nem nos exemplos que vieram nela… e ainda trava no write()
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
codigo? nao zerei o pino via codigo nao hehe
foi a mao mesmo…
mas quero dizer que nao funcionou… eu me enganei
realmente se colocar 0 no BUSY (mecanicamente mesmo, nada de soft)
ele nao trava no write… mas tb a porta nao recebe nada… nao chega nada nela