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).
[quote=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?[/quote]
To com o mesmo problema!! Conseguiu solucionar ?
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 .
Existe o Emulador da MP2100 , se for para a implementação e testes funciona perfeito e é gratuito !
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.
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.
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)
Existe o Emulador da MP2100 , se for para a implementação e testes funciona perfeito e é gratuito ![/quote]
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?
[quote=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) [/quote]
É… 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)?
Existe o Emulador da MP2100 , se for para a implementação e testes funciona perfeito e é gratuito ![/quote]
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?
[quote=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) [/quote]
É… 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)?[/quote]
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.
É… 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
É. 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.
Falando em comunicação direta, alguém já usou o JavaComm ou RXTX ?
Falando em comunicação direta, alguém já usou o JavaComm ou RXTX ?
DIEGO E BUXO…
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
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?
[quote=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?[/quote]
http://partners.bematech.com.br/2013/02/edicao-138-novo-emulador-da-mp-4200-th-fi/
[quote=matheuslmota][quote=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?[/quote]
http://partners.bematech.com.br/2013/02/edicao-138-novo-emulador-da-mp-4200-th-fi/[/quote]
muito obrigado matheus, era exatamente isso que eu estava procurando.
Vai ajudar demais.
Valeu!!!
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!