Fórum Implementação de impressora fiscal BemaTech [RESOLVIDO] #568014

30/09/2013

0

Sou iniciante em Java, e estou desenvolvendo um sistema para uma instituição de caridade. Este sistema precisa fazer o cadastro de contribuintes (o que ja consegui fazer), e imprimir um recibo (não fiscal) simples, apenas com os dados do contribuinte e o valor que ele contribuiu. Temos aqui uma impressora fiscal "Bematech MP-4000 TH". Busquei no site da Bematech e la tem as 'libs' para conexao com a impressora, adicionei as dll´s na pasta do windows (system32), adicionei o JAR (Bematech.jar) no projeto utilizando o NetBeans, e crei a classe principal utilizando o exemplo do site da Bematech. http://partners.bematech.com.br/suporte/bemafi32/java.htm http://www.bematech.com.br/suporte/bemafi32/index.html?configuracao.htm Porem, como disse, sou iniciante em java e não intendi muito bem, esse codigo sempre da o mesmo retorno, não importa o que eu faça ele não muda. Se impressora esta ligada ou desligada, em uso ou não, ele sempre retorna o seguinte: run: Retorno Impressora MFD: ACK: 0 ST1: 0 ST2: 0 ST3: 0 CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos) Lembrando que essa impressora é ligada em rede, ela não possui conexao usb. o IP dela é 192.168.1.240 e a porta: 9100
package bematech;
import bemajava.*;


public class Principal {

public static void main(String[] args)
  {      

     int iRetorno;
     bemajava.BemaInteger ACK, ST1, ST2, ST3;
     ACK = new bemajava.BemaInteger();
     ST1 = new bemajava.BemaInteger();
     ST2 = new bemajava.BemaInteger();
     ST3 = new bemajava.BemaInteger();
               
     // Habilitando o retorno estendido da impressora MFD
     iRetorno = bemajava.Bematech.HabilitaDesabilitaRetornoEstendidoMFD( "1" );
 
     // Emitindo uma Leitura X
     iRetorno = bemajava.Bematech.LeituraX();
 
     // Pegando o retorno da impressora MFD
     iRetorno = bemajava.Bematech.RetornoImpressoraMFD( ACK, ST1, ST2, ST3 );

     String retorno = "ACK: " + ACK.number;
     retorno += "\nST1: " + ST1.number;
     retorno += "\nST2: " + ST2.number;
     retorno += "\nST3: " + ST3.number;
     System.out.println( "Retorno Impressora MFD: \n" + retorno );       
        

  } 

}
Sera que alguem poderia me dar uma luz? Como obter um retorno desta impressora, se esta ligada, se esta em uso, etc... Vi que ela possui estes retornos, porem não faço a minima ideia de como utiliza-los. Desde já agradeço. João Borges
João Borges

João Borges

Responder

Posts

30/09/2013

Roselito Silva

João, Imprima também o resultado de iRetorno a cada passo seu, para ver que código retornou.
Responder

Gostei + 0

30/09/2013

João Borges

Desde ja quero agradecer a ajuda. Coloquei dessa forma agora:
package bematech;

public class Principal {

public static void main(String[] args)
  {
     int iRetorno;
     bemajava.BemaInteger ACK, ST1, ST2, ST3;

     ACK = new bemajava.BemaInteger();
     ST1 = new bemajava.BemaInteger();
     ST2 = new bemajava.BemaInteger();
     ST3 = new bemajava.BemaInteger();
     
     // Habilitando o retorno estendido da impressora MFD
     iRetorno = bemajava.Bematech.HabilitaDesabilitaRetornoEstendidoMFD( "1" );
     System.out.println( "Retorno linha 17: " + iRetorno );
     
     // Emitindo uma Leitura X
     iRetorno = bemajava.Bematech.LeituraX();
     System.out.println( "Retorno linha 21: " + iRetorno );
     
     // Pegando o retorno da impressora MFD
     iRetorno = bemajava.Bematech.RetornoImpressoraMFD( ACK, ST1, ST2, ST3 );
     System.out.println( "Retorno linha 25: " + iRetorno );
     
     String retorno = "ACK: " + ACK.number;
     retorno += "\nST1: " + ST1.number;
     retorno += "\nST2: " + ST2.number;
     retorno += "\nST3: " + ST3.number;
     System.out.println( "Retorno Impressora MFD: \n" + retorno );       
  }
}
O retorno foi: run: Retorno linha 17: 1 Retorno linha 21: 0 Retorno linha 25: 1 Retorno Impressora MFD: ACK: 0 ST1: 0 ST2: 0 ST3: 0 CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos) Se alguem ja trabalhou com impressoras Bematech, existe algum comando para eu saber se o programa esta localizando ela mesmo? Porque ela esta em rede... dai não faço a minima ideia se o java achou ela, se esta se comunicando com ela, etc... No arquivo BameFI32.ini que esta na pasta System32 esta configurando assim: [Sistema] Porta=DEFAULT Path=C:Status=0 Retorno=0 StatusFuncao=1 ControlePorta=1 ModeloImp=BEMATECH ConfigRede=4 ModoGaveta=0 Log=0 LogDiario=0 CrLfVinculado=0 CrLfGerencial=0 TimeOutGerencial=40 EmulMFD=0 StatusCheque= CalculoIcmsCupom=0 ForceWTSClient=1 RetriesWTSCmd=3 HabilitaRFDImpMFD=0 GerarRFD=0 [ModoRemoto] IP=192.168.1.240 Porta=9100
Responder

Gostei + 0

30/09/2013

Roselito Silva

E a leituraX que você pediu foi executada?
Responder

Gostei + 0

30/09/2013

João Borges

[quote="roselito"]E a leituraX que você pediu foi executada?
Como não sabia o que leituraX fazia, fui pesquisar no site da Bematech o leituraX. http://www.bematech.com.br/suporte/tutorial/index.html?leitura_x.htm E vi que ele não executou a LeituraX. A impressora nem se mexeu.... A impressora esta ligada, conectada a rede, o programa da Bematech que esta instalado no meu pc, consegue localizar a impressora e enviar comandos para ela, porem o meu programa Java, quando executo, a impressora não da nem sinal de vida... não faz nada.
Responder

Gostei + 0

01/10/2013

João Borges

[quote="joaoborgesbr"][quote="roselito"]E a leituraX que você pediu foi executada?
Como não sabia o que leituraX fazia, fui pesquisar no site da Bematech o leituraX. http://www.bematech.com.br/suporte/tutorial/index.html?leitura_x.htm E vi que ele não executou a LeituraX. A impressora nem se mexeu.... A impressora esta ligada, conectada a rede, o programa da Bematech que esta instalado no meu pc, consegue localizar a impressora e enviar comandos para ela, porem o meu programa Java, quando executo, a impressora não da nem sinal de vida... não faz nada.
A todos os amigos do Forum que me ajudaram, quero agradecer. Depois de MUITA luta, finalmente consegui conectar meu programa a impressora; Instalei o "Bematech Virtual Serial Port" atraves do link abaixo: Driver para porta serial virtual - MP-4000 TH. http://partners.bematech.com.br/suporte-recursos/downloads/?did=144 Ele instalou uma porta COM5, nas configurações da porta em "Target Port Settings" coloquei como "Ethernet" e ai foi so colocar o IP e a Porta da impressora. Utilizei o material do link abaixo. Utlizei a DLL MP2032.DLL. http://www.guj.com.br/java/217060-erro-de-retorno-...-bematech-mp-4000-th-resolvido Ai foi só colocar a porta COM5 na classe e finalmente, a impressora respondeu. No link abaixo tem toda documentação da DLL http://partners.bematech.com.br/suporte/mp2032/ Agora é só utilizar as classes do link acima. Muito obrigado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar