Re:Bematech - Driver para Impressora Fiscal compatível com Java

42 respostas
G

Olá, você pode fornecer o link para download? :smiley:

42 Respostas

bzy

Saiu uma nova versão 5.3.0.0:

http://partners.bematech.com.br/flashnews/

giu

Pessoal, desculpe a ignorância.
Essa DLL é só para softwares escrito em Java para Windows? ou funciona tb em Linux?
Não tem o .so para Linux?

J

Grande coisa. O grande lançamento seria um .jar para comunicação com a impressora, sem a necessidade de .dll ou código nativo.

Luca

Olá

Seria realmente um grande lançamento mas código nativo teria que ter obrigatoriamente em algum lugar. Para isto seria necessário que a Sun embutisse um device driver dentro do javax.comm. Isto não é difícil de fazer mas a Sun brigou com a Microsoft e se recusou. É claro que o fornecimento de device drivers deve ser coisa de fabricante de equipamento. Porém se a Sun tivesse dado uma ajuda facilitaria muito as coisas.

Se no javax.comm tivesse um device driver, os fabricantes de impressoras podiam lançar jars contendo apenas os métodos pertinentes aos seus produtos.

Esta falta de device drivers para impressoras sempre dificultou muito a adoção de Java para automação comercial. E os fabricantes de impressoras no Brasil sempre acharam que as aplicações comerciais tinham que ser feitas em VB.

[]s
Luca (que já sofreu muito com impressoras e até chegou a desenvolver um device driver baseado em um que havia por aí na Internet)

Rodrigo_Manhaes

giu:
Pessoal, desculpe a ignorância.
Essa DLL é só para softwares escrito em Java para Windows? ou funciona tb em Linux?
Não tem o .so para Linux?

Como o amigo acima, peço desculpas pela ignorância de desenvolvedor multiplataforma, mas isso só roda em rWindows?

T

Blz

giu wrote:

Pessoal, desculpe a ignorância.
Essa DLL é só para softwares escrito em Java para Windows? ou funciona tb em Linux?
Não tem o .so para Linux?

Como o amigo acima, peço desculpas pela ignorância de desenvolvedor multiplataforma, mas isso só roda em rWindows?

Arquivos .Dll não são suiportados pelo linux…no caso deveria ser uma biblioteca do linux, como o arquivo de extensão .so, como já foi comentado anteriormente.

t+

maquiavelbona

Last post: 24/10/2006 22:52:50
:?

ken420

pessoal com to um problema com conexao com minha Bematech as classes tao criadas sem erro nenhum porem quando aperto f6 para abrir o cupom ele gera esse erro no java

#   
# An unexpected error has been detected by Java Runtime Environment:   
#   
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d94e573, pid=3564, tid=1892   
#   
# Java VM: Java HotSpot(TM) Client VM (10.0-b23 mixed mode, sharing windows-x86)   
# Problematic frame:   
# V  [jvm.dll+0xde573]   
#   
# An error report file with more information is saved as:   
# C:\Documents and Settings\kenshin\Meus documentos\NetBeansProjects\ViewCaixa\hs_err_pid3564.log   
#   
# If you would like to submit a bug report, please visit:   
#   http://java.sun.com/webapps/bugreport/crash.jsp   
#

algueim me salvaria?

ramilani12

O q saiu neste log?

luistiagos

Interessante… a empresa onde eu trabalho trabalha tbm pra Bematch…

F

Isso vai facilitar a nossa vida e estimular ainda mais as aplicações comerciais…

edd_terceiro

infelizmente. não para quem usa linux.

C

infelizmente. não para quem usa linux.

E como faz quem soh tem linux???

fredferrao

infelizmente. não para quem usa linux.

E como faz quem soh tem linux???

Se mata fazendo via JAVACOMM.

[acrescentando]

Tu pode baixar o projeto FreedomERP, nele ja tem pra Bematech via COMM

O

A um tempinho atras postei isso aqui.

http://www.guj.com.br/posts/list/146429.java#790050

As empresas fabricantes só teria que usar o JAVACOMM assim como o amigo falou. Ou a api RXTX http://www.rxtx.org/

P

boa tarde pessoal.
Alguém tem idéia do preço de uma impressora como essa?

fredferrao

paulo.f.rodriguez:
boa tarde pessoal.
Alguém tem idéia do preço de uma impressora como essa?

1k~2k Acho que ta nessa faixa, sao bem carinhas.

TheKill

fredferrao:

1k~2k Acho que ta nessa faixa, sao bem carinhas.

Breve comentário de um jogador de RPG …
OMG hasuhsauhsau ;D

Voltando ao assunto, sim é mais ou menos este o valor de impressoras fiscal

Andre_Brito

Fora o rolinho de papel que é bem caro também (ainda mais que tem que fazer alguns testes)…

M

Pro cliente é esse preço, pra desenvolvedores vira e mexe a Bematech faz uns preços promocionais, sai por uns 700 reais, proibida de usar em produção.

fredferrao

Pelo menos a Bematech ainda tem o Emulador que da pra testar de boa, mas e para as outras!!??

P

Opa…agora vi vantagem, como chama esse emulador? é grátis?

fredferrao

Emul2100 se nao me engano. baixe ele no site da bematech: http://www.bematech.com.br/suporte/dwn_fisc.asp

Andre_Brito

Sim.
Tanto a Daruma qunato a Bematech tem um suporte nota 10, mas somente a Bematech tem o emulador. Ambas as empresas apresentam manuais de integração ótimos, com todas as funções existentes na dll. Além disso, as funções das impressoras são muito parecidas (claro que algumas oferecem algumas coisas a mais - a Daruma, por exemplo, oferece uma função de criptografia RSA, nada que o Java não cuide).

S

ken420:
pessoal com to um problema com conexao com minha Bematech as classes tao criadas sem erro nenhum porem quando aperto f6 para abrir o cupom ele gera esse erro no java

#   
# An unexpected error has been detected by Java Runtime Environment:   
#   
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d94e573, pid=3564, tid=1892   
#   
# Java VM: Java HotSpot(TM) Client VM (10.0-b23 mixed mode, sharing windows-x86)   
# Problematic frame:   
# V  [jvm.dll+0xde573]   
#   
# An error report file with more information is saved as:   
# C:\Documents and Settings\kenshin\Meus documentos\NetBeansProjects\ViewCaixa\hs_err_pid3564.log   
#   
# If you would like to submit a bug report, please visit:   
#   http://java.sun.com/webapps/bugreport/crash.jsp   
#

algueim me salvaria?

To com o mesmo problema!! Conseguiu solucionar ?

viniciusalvess

Melhor fazer comunicação direta com a impressora, sem depender dessa DLL horrivel deles …Baixe a documentação da impressora e implemente os comandos. demora mais , mais tem controle total do que está fazendo .

viniciusalvess

Existe o Emulador da MP2100 , se for para a implementação e testes funciona perfeito e é gratuito !

J

Isso mesmo, você tem toda razão já que hardwares como impressoras trabalham com comunicação rs232. Não é necessário acesso nativo, já que a máquina virtual te provê a serial.

fredferrao

Ouuuu, se nao quiser sofrer muito mandando bit pra porta serial, pode usar o ACBrMonitor.

O projeto é interessante, e ja suporta varias impressoras e outros equipamentos de Automação Comercial, e bastaria voce implementar a interface com ele, via arquivo txt ou sockets.

Vale a pena dar uma olhada.

http://acbr.sourceforge.net/drupal/?q=node/24

FAQ: http://acbr.sourceforge.net/drupal/?q=node/18

M

Sinceramente não vejo vantagem em fazer comunicação direta… A não ser que que a fabricante da impressora não forneça a biblioteca para a plataforma desejada (Só a título de informação, a Bematech possui uma versão da biblioteca de acesso para Linux).

Falaram sobre ter controle total. Pra que? Se eu quero abrir um cupom fiscal, eu só quero um comando que faça a abertura do cupom fiscal e retorne algo dizendo se houve alguma falha. De que adianta eu implementar isso manualmente tendo controle total, se no final das contas eu vou ter um cupom fiscal igualzinho?

As bibliotecas de acesso tem funções para fazer o download da MFD e gerar alguns arquivos exigidos pelo PAF-ECF. Vai implementar isso na mão pra ver que beleza, não sei nem se é possivel (acho que essa parte não é documentada)

Andre_Brito

Existe o Emulador da MP2100 , se for para a implementação e testes funciona perfeito e é gratuito !
Pois é. Mas pra testar pra homologar é mais interessante usando a impressora física mesmo, não é? Por falar em emulador, alguém nota uma lentidão extrema dele quando usado com Java?

magnomp:
Sinceramente não vejo vantagem em fazer comunicação direta… A não ser que que a fabricante da impressora não forneça a biblioteca para a plataforma desejada (Só a título de informação, a Bematech possui uma versão da biblioteca de acesso para Linux).

Falaram sobre ter controle total. Pra que? Se eu quero abrir um cupom fiscal, eu só quero um comando que faça a abertura do cupom fiscal e retorne algo dizendo se houve alguma falha. De que adianta eu implementar isso manualmente tendo controle total, se no final das contas eu vou ter um cupom fiscal igualzinho?

As bibliotecas de acesso tem funções para fazer o download da MFD e gerar alguns arquivos exigidos pelo PAF-ECF. Vai implementar isso na mão pra ver que beleza, não sei nem se é possivel (acho que essa parte não é documentada)


É… eu concordo com você. Mas me veio uma dúvida: se eu tiver clinetes que usam Bematech, outros Daruma, outros Elgin e outros Sweda, eu teria que escrever uma implementação específica pra cada impressora (se eu não utilizar a dll fornecida pela fabricante)?

fredferrao

Existe o Emulador da MP2100 , se for para a implementação e testes funciona perfeito e é gratuito !
Pois é. Mas pra testar pra homologar é mais interessante usando a impressora física mesmo, não é? Por falar em emulador, alguém nota uma lentidão extrema dele quando usado com Java?

magnomp:
Sinceramente não vejo vantagem em fazer comunicação direta… A não ser que que a fabricante da impressora não forneça a biblioteca para a plataforma desejada (Só a título de informação, a Bematech possui uma versão da biblioteca de acesso para Linux).

Falaram sobre ter controle total. Pra que? Se eu quero abrir um cupom fiscal, eu só quero um comando que faça a abertura do cupom fiscal e retorne algo dizendo se houve alguma falha. De que adianta eu implementar isso manualmente tendo controle total, se no final das contas eu vou ter um cupom fiscal igualzinho?

As bibliotecas de acesso tem funções para fazer o download da MFD e gerar alguns arquivos exigidos pelo PAF-ECF. Vai implementar isso na mão pra ver que beleza, não sei nem se é possivel (acho que essa parte não é documentada)


É… eu concordo com você. Mas me veio uma dúvida: se eu tiver clinetes que usam Bematech, outros Daruma, outros Elgin e outros Sweda, eu teria que escrever uma implementação específica pra cada impressora (se eu não utilizar a dll fornecida pela fabricante)?

Sim, com ou sem DLL tu teria que implementar um pra cada, com algumas excecoes, que se nao me engano a sweda usa a mesma dll da bematech, nao lembro ao certo, mas tem duas ou mais que usam as mesmas chamadas.

M

É… eu concordo com você. Mas me veio uma dúvida: se eu tiver clinetes que usam Bematech, outros Daruma, outros Elgin e outros Sweda, eu teria que escrever uma implementação específica pra cada impressora (se eu não utilizar a dll fornecida pela fabricante)?
Como já disseram, com ou sem dll vc tem que ter uma implementação específica para cada fabricante (e eventualmente você tem que dar tratamentos especificos para modelos diferentes do mesmo fabricante).

Ainda não trabalhei com Sweda, mas a Daruma é muito semelhante à Bematech. Não dá pra usar a mesma implementação nas duas, mas dá pra usar uma como base para a outra. Na verdade, até rola um processo da Bematech contra a Daruma acusando-a de ter copiado a biblioteca

Andre_Brito

É. Eu ia apontar a desvantagem de não usar as dlls fornecidas pelas fabricantes. Mas não cheguei a usar uma impressora diferente da Bematech e da Daruma, então não tenho muito o que dizer. O que eu pude perceber é que a dll essas duas fabricantes possuem praticamente as mesmas chamadas. De qualquer forma, ficaria tudo encapsulado numa classe específica… Mas seria um trabalhão implementar sem as dlls pra cada impressora fiscal.

ocsjwolf

Falando em comunicação direta, alguém já usou o JavaComm ou RXTX ?

juniorsatanas

Falando em comunicação direta, alguém já usou o JavaComm ou RXTX ?

DIEGO E BUXO…

E

Pessoal

boa noite,

Estou desenvolvendo um sistema de emissão de Recibo provisório de serviço na impressora fiscal bermatech MP-4000 TH FI e preciso que o cupom fiscal que é impresso seja modificado para atender as necessidades do meu cliente, porem não encontrei nenhum método que me permita modificar os dados que são impressos no cupom fiscal, exemplo: Ao invés da mensagem “CUPOM FISCAL” gostaria que imprimisse a mensagem “RECIBO PROVISORIO DE SERVIÇO”. Alguém sabe me dizer se isso é possível? Existe algum método genérico?

obrigado!
Elton Welsch

JavaDreams

Tenho vontade de fazer sistemas para trabalhar junto com a Bematech mas tenho o seguinte problema:

Não tenho uma bematech.

Aqui na empresa já vi que alguns clientes nossos usam essa impressora mas eu não sei mexer com ela.

Assim eu teria que comprar uma bematech só para estudar?

Ou será que tem algum simulador dela virtual?

matheuslmota

JavaDreams:
Tenho vontade de fazer sistemas para trabalhar junto com a Bematech mas tenho o seguinte problema:

Não tenho uma bematech.

Aqui na empresa já vi que alguns clientes nossos usam essa impressora mas eu não sei mexer com ela.

Assim eu teria que comprar uma bematech só para estudar?

Ou será que tem algum simulador dela virtual?


http://partners.bematech.com.br/2013/02/edicao-138-novo-emulador-da-mp-4200-th-fi/

JavaDreams

matheuslmota:
JavaDreams:
Tenho vontade de fazer sistemas para trabalhar junto com a Bematech mas tenho o seguinte problema:

Não tenho uma bematech.

Aqui na empresa já vi que alguns clientes nossos usam essa impressora mas eu não sei mexer com ela.

Assim eu teria que comprar uma bematech só para estudar?

Ou será que tem algum simulador dela virtual?


http://partners.bematech.com.br/2013/02/edicao-138-novo-emulador-da-mp-4200-th-fi/

muito obrigado matheus, era exatamente isso que eu estava procurando.
Vai ajudar demais.

Valeu!!!

V

Vejam só o que a Bematech está lançando, em primeira mão…

Prezado parceiro,

Já está disponível em nosso site a versão 5.0.0.0 de nossa BemaFI32.dll, compatível com JAVA.

Isso mesmo! A BemaFI32.dll também é JAVA!

Com o objetivo de integrar as impressoras fiscais Bematech com aplicações de Automação Comercial, desenvolvidas na linguagem de programação Java, compatibilizamos nossa BemaFI32.dll para que seja possível acessá-la através de métodos nativos do Java, utilizando JNI (Java Native Interface).

O JNI permite que um programa escrito em Java possa utilizar bibliotecas escritas em C/C++, assemblies ou outras linguagens de programação.

Criamos uma classe chamada “Bematech.java”, onde disponibilizamos a declaração das funções da BemaFI32.dll. Esta classe está pronta e você poderá adicioná-la ao seu projeto, facilitando e auxiliando no desenvolvimento.

  • Exemplo do conteúdo da classe Bematech.Java:
class Bematech
{
   // Funções de Cupom Fiscal
   public static native int AbreCupom( String CPF_CGC );

   public static native int VendeItem( String cCodigo, String
   cDescricao, String cAliquota, String cTipoQuantidade, String
   cQuantidade, int iCasasDecimais, String cUnitario, String
   cTipoDesconto, String cDesconto );

   public static native int IniciaFechamentoCupom( String
   cAcrescimoDesconto,String cTipoAcrescimoDesconto, String 
   cValorAcrescimoDesconto );

   public static native int EfetuaFormaPagamento( String 
   formaPagamento, String valorFormaPagamento ); 

   public static native int TerminaFechamentoCupom( String 
    cMensagem );

   // Funções de Relatório Fiscal 
   public static native int LeituraX();

   // Funções de Retorno de Informações
   public static native int NumeroCupom(BemaString numeroCupom); 
   .
   .
   .

   static
   {
      System.loadLibrary ("BemaFI32");
   } 
}

Importante: Para poder utilizá-la, é necessário possuir instalado o J2SDK versão 1.4 ou superior e, alem disso, as variáveis de ambiente path, classpath e java_home configuradas corretamente.

Existem mais duas classes que disponibilizamos na Bematech.Java, que são utilizadas para definir as variáveis que serão usadas como referência no retorno de informações da impressora. São elas:

class BemaInteger
{
   public int number;
}

class BemaString
{
   public String buffer;
}

A classe BemaInteger define o tipo de variável que será utilizada para armazenar um valor inteiro e a classe BemaString define o tipo de variável que será utilizada para armazenar uma string de caracteres (ambas retornadas pela impressora).

  • Exemplo de uma função que retorna informação da impressora:

Bematech.NumeroCupom( BemaString COO )

Importante: Os nomes dos atributos (buffer e number) são reservados e não podem ser modificados.

  • Exemplo de um pequeno código utlizando a classe Bematech.Java:
class ECFBematech
{
   public static void main(String[] args)
   {
      int iRetorno;
      BemaInteger ACK, ST1, ST2, ST3;
      ACK = new BemaInteger();
      ST1 = new BemaInteger();
      ST2 = new BemaInteger();

      // Emitindo uma Leitura X
      iRetorno = Bematech.LeituraX();
      System.out.print("Retorno: " + iRetorno);

      // Pegando o retorno da impressora MFD 
      iRetorno = Bematech.RetornoImpressora(ACK,ST1,ST2);
      String retorno = "ACK: " + ACK.number
      retorno += "\nST1: " + ST1.number
      retorno += "\nST2: " + ST2.number
      retorno += "\nST3: " + ST3.number;
      System.out.print("O retorno da impressora é:\n" + retorno);
   }
}

Clique aqui e baixe agora mesmo o pacote da BemaFI32.dll com a classe Bematech.Java e o arquivo de ajuda com a declaração e todo o descritivo desta mais nova implementação da Bematech!

V

Opa… abaixo o link:

http://www.bematech.com.br/suporte/downloads/fisc_win/BemaFI32.zip

Criado 4 de abril de 2006
Ultima resposta 4 de abr. de 2006
Respostas 42
Participantes 30