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]
-------------------------------------------------------------------------

Responder a