Ol� O Luiz Bastos est� com toda a raz�o, passei por isso tamb�m quando desenvolvi um TAS (Terminal de alto servi�o), contudo, o problema que ele colocou JAVAX.COMM N�O FUNCIONA COM COMUNICA��O BI DIRECIONAL COM A IMPRESSORA tamb�m est� correto, por�m, esse problema n�o se repete quando, o javax.comm, � utilizado com modens.
Desabafo : Essas manobras s� s�o encontradas no Windows! � impressionante. valeu F�bio Alexandre Rodrigues -----Mensagem original----- De: Luiz Bastos [mailto:[EMAIL PROTECTED]] Enviada em: ter�a-feira, 19 de novembro de 2002 1:56 Para: [EMAIL PROTECTED] Assunto: Re: RES: RES: [java-list] DLL em Java Ol� O que vou escrever abaixo me custou sangue, suor e lagrimas. Use com carinho as muitas horas que vai ganhar n�o perdendo o tempo que eu perdi at� descobrir isto. 1) No win2000 sempre, repito SEMPRE ser� preciso usar uma DLL para fazer comunica��o bidirecional com a impressora. N�o creio que seu cliente v� aceitar um sistema que mande imprimir um item no cupom fiscal e n�o consiga saber se foi impresso ou n�o, se a impressora est� ligada ou n�o, se tem papel ou n�o, se houve erro ou n�o. Itens n�o impressos no cupom fiscal precisam ser cancelados. E o pr�prio cupom fiscal precisa ser cancelado. 2) Com Java.io se pode enviar dados para a impressora, mas n�o se consegue ler os bytes de status e de erro. Experimente ler o byte de status da porta LPT1 com Java.io, se conseguir me avise. 3) Com Java.Print Service se poderia imprimir o cupom graficamente, mas o Java n�o consegue acessar aquelas estruturas do Windows que fornecem o status. Assim vai obter uma impress�o bonita, demorada e vai continuar precisando de um intermedi�rio para saber o status. Nesta hora pode ser que sinta saudades do VB (do Delphi ou do C++) 4) A solu��o que todos tentam � usar javax.comm. Por�m, ai vai a informa��o que vale muito mais do que um bifinho: Ser� preciso da DLL por causa da frase que vou escrever abaixo em letras mai�scula porque alguns aqui talvez n�o saibam: JAVAX.COMM N�O FUNCIONA COM COMUNICA��O BI DIRECIONAL COM A IMPRESSORA. � um bug da DLL win32com.dll que a Sun n�o conserta no Windows porque o acesso �s portas de comunica��o funciona de forma diferente nos Windows Pokemon (95, 98, SE, ME) e nos Windows NT/2K/XP. Nos pokemons se pode acessar as portas diretamente. Nos Windows NT, 2K, XP � preciso de um device driver para acessar a impressora. Este device driver deve ser chamado pela DLL (e precisa ser instalado por um administrador) 5) Estude bastante como funciona a impress�o no windows. Saiba tamb�m como � o protocolo 1284 6) Normalmente se escreve a DLL com intelig�ncia suficiente para saber se qual sistema operacional est� em uso para chamar a fun��o certa em cada caso. 7a) Com pokemons se acessa as portas diretamente mais ou menos assim usando C (e com o endere�o da porta hardcodeado que � uma grossa asneira): // Exemplo somente para fins de explica��o, jamais faria assim if (inportb(0x379) & 0x10) { outportb(0x378, 'A'); // Escreve o char 'A' na impressora outportb(0x37a, inportb(0x37a) | 0x01); Sleep(1); // Wait 1ms outportb(0x37a, inportb(0x37a) & 0xfe); } Sendo as fun��es inport e outport dadas por: #define BIT0 0x01 // N�o usado #define BIT1 0x02 // N�o usado #define BIT2 0x04 // N�o usado #define BIT3 0x08 // Error #define BIT4 0x10 // Slct out #define BIT5 0x20 // Paper End #define BIT6 0x40 // Ack #define BIT7 0x80 // Busy BYTE inportb(UINT portid) { unsigned char value; __asm mov edx, portid __asm in al, dx __asm mov value, al return value; } void outportb(UINT portid, BYTE value) { __asm mov edx, portid __asm mov al, value __asm out dx, al } 7b) Os fabricantes as vezes j� fornecem o device driver para o winNT/2K/XP. Se isto n�o acontecer a coisa fica muito mais complicada. Se n�o sabe fazer devices drivers no WinNt/2k/XP melhor pagar para quem sabe. Vai perder muito tempo at� aprender coisa que � fun��o de especialista. 8) Usar a DLL do fabricante da impressora se ela atender ao exposto acima. Ou criar uma DLL com VC++ ou DC++ ou CBuilder ou Delphi. Com VB n�o sei se vai funcionar 100%. 9) Chamar a DLL usando JNI. 10) Criar uma l�gica, uma esp�cie de protocolo para negociar a impress�o do cupom e ter certeza que imprimiu corretamente. 11) Se prepare para uma certa demora entre o Java e a DLL pois passar de um para outro exige alguns malabarismos que foge ao escopo deste help 12) Vender caro pois tudo isto exige muitas horas de estudo e escova��o de bits 13) Esta � a solu��o, mas se � uma lojinha que n�o pode pagar uma solu��o de verdade, use Java.io para imprimir o cupom e ponha um bot�o de confirma��o para o operador clicar OK ou Cancela (se a impress�o falhou) �ltima observa��o: Cupons fiscais em geral s�o impressos item a item e s�o cancelados item a item, assim � a lei. Ent�o na verdade o OK deveria ser item a item. � poss�vel o operador fazer isto, mas vai cometer erros. Eu mesmo j� escrevi software que imprimia o cupom inteiro e cancelava o cupom inteiro. Procure ver como a fiscaliza��o vai atuar no caso da lojinha caso v� partir para a gambiarra descrita em 13 Se algu�m discorda que se apresente. []s Luca ----- Original Message ----- From: "Mauro" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, November 18, 2002 8:42 AM Subject: Re: RES: RES: [java-list] DLL em Java > Isso mesmo! > > Eu "quase" executei um projetinho pra lojinha que ia usar impressoara > fiscal. O "consultor" da lojinha, que ia me contratar, queria fazer uma > redezinha com rwindows 2000, SQL Server e VB. E eu estava tentando > convenc�-lo de fazer com Linux, Mysql e Java, que diferen�a :-). (n�o foi > por isto que o projeto n�o saiu, t�). > > Por isso dei uma olhada na documenta��o da impressora fiscal. Se fosse pra > fazer em VB, eu ia usar a DLL mesmo, m. por m. ... > > Mas se desse pra fazer em Java eu ia ter o prazer de implementar a > comunica��o em Java, e disfrutar dos benef�cios de ter um sistema rodando > sem MS, ou seja, um sistema que ia ser instalado, adaptado e esquecido, > porque n�o ia precisar de manuten��o. Al�m disso o "consultor" n�o ia > precisar temer a Pol�cia Federal, porque as vers�es dos produtos da M$ que > ele costuma usar n�o s�o registradas. > > > Wagner Roberto Sorio writes: > > > Pelo que entendi vc est� sugerindo que eu ignore a DLL e passe diretamente > > comandos para porta da Impressora ? > > > > WAGNER ROBERTO SORIO > > Analista de Sistemas > > Depto. Inform�tica > > Via��o Itapemirim - SP > >> > >> Wagner, > >> > >> A explica��o do F�bio t� muito boa, mas como deu pra ver envolve algum > >> trabalho. > >> > >> Se quer minha sugest�o, pega (tamb�m no site do fabricante) o protocolo e > >> os > >> comandos que a impressora fiscal reconhece e implementa uma biblioteca que > >> > >> converse com a impressora. Eu j� dei uma olhada neste protocolo e n�o � > >> nenhum bixo. > >> > >> Creio que isto vai ser muito mais �til. E de quebra desamarra a aplica��o > >> do > >> tiobill :-), o que � um belo objetivo. > --- > Mauro Ramos Martini > [EMAIL PROTECTED] > counter.li.org#225287 > Visite o site www.politicabrasil.com.br > > > ------------------------------ LISTA SOUJAVA ---------------------------- > http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP > d�vidas mais comuns: http://www.soujava.org.br/faq.htm > regras da lista: http://www.soujava.org.br/regras.htm > historico: http://www.mail-archive.com/java-list%40soujava.org.br > para sair da lista: envie email para [EMAIL PROTECTED] > ------------------------------------------------------------------------- > > > Esta mensagem foi verificada pelo E-mail Protegido Terra. > Scan engine: VirusScan / Atualizado em 13/11/2002 / Vers�o: 1.3.13 > Proteja o seu e-mail Terra: http://www.emailprotegido.terra.com.br/ > ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP d�vidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] ------------------------------------------------------------------------- ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP d�vidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------
