PDV com ECF em Java

Pessoal, alguém já desenvolveu um sistema de pdv usando ecf? alguém sabe onde tem algum exemplo para java sobre o assunto ou alguém pode me dar uma ajuda?

Agradeço pela atenção.

Cara tem o projeto Freedom, ele tem um modulo pdv, tens os fontes e uma boa base para vc comecar a desenvolver, o link de discussao e este: http://groups.google.com.br/group/freedomerp

Olá Diogo,
Olha eu desenvolvi um e se vc tiver alguma dúvida eu posso te ajudar. Não vi nenhum exemplo na época criei do zero. O negócio é entender a regra de negócio e muita leitura da legislação do ECF, que já mudou. Abraço.

Desde já agredeço por me ajudarem…

Minha maior dificuldade está em me comunicar com a impressora fiscal e imprimir o cupom em si, como vcs fizeram para tratar desse assunto?

Você tem conhecimento em outras linguagens?? AQUI tem conteúdo com exemplos em Delphi, DotNet inclusive de PDVs completos. Os exemplos são primitivos, mas com todas as funcionalidades básicas disponíveis.

Para acessar o conteúdo, entre no site e escolha qual SO usa.

ps. Existem outros fabricantes de ECF, citei esse pelo fato de ter mais contato.

Valeu cara estou dando uma olhada já para ter algumas idéias…

Estou tentando faz a comunicação com a impressora usando o código de exemplo da bematech com as dlls para java mais esta dando esse erro e não estou conseguindo achar a solução


Exception in thread "main" java.lang.UnsatisfiedLinkError: comunicacao.Bematech.LeituraX()I
        at comunicacao.Bematech.LeituraX(Native Method)
        at comunicacao.ECFBematech.main(ECFBematech.java:14)
Java Result: 1

as classes estão aqui!!!

http://www.bematech.com.br/partners_asp/flashnews98.asp

o que pode ser?

Oi,

Você baixou o emulador?
Ou tem o equipamento?

Verifique se tá ligado e se o BemaFI32.ini tá configurado corretamente. De qualquer forma esse erro deve ser por que as DLLs não foram encontradas em seu classpath, coloque-as lá ou então registre as mesmas utilizando o registra.bat (antes coloque o material no system32).

:?: Veja as instruções de configuração no BemaFI32.chm que vem junto com as dlls.

Pois é estou usando a impressora, estou com todas as dlls no /system32 e a impressora está ligada mais não coloquei no classpath vou fazer aqui depois nos coloco o resultado aqui (Y)

pior que não resolveu, peguei um exemplo que tem na bematech em html e javascript rodei funcionou olhei o codigo aparentemente está tudo certo, mais aqui não rolou

vou colocar meu codigo aqui derepente brilha alguma ideia

Erro


Exception in thread "main" java.lang.UnsatisfiedLinkError: comunicacao.Bematech.LeituraX()I
        at comunicacao.Bematech.LeituraX(Native Method)
        at comunicacao.ECFBematech.main(ECFBematech.java:14)
Java Result: 1

Bematech.class

public class Bematech {

        public static native int LeituraX();

static{
		System.loadLibrary ("BemaFI32");
		//System.load ("C:\\Windows\\System32\\BemaFI32.dll");
	}

BemaString

public class BemaString {
	public String buffer;
	
	public BemaString()
	{
		buffer = "";
	
	}
	public String getBuffer(){
		return buffer;
	}

BemaInteger


public class BemaInteger {
	public int number;
	
	public BemaInteger()
	{
		number = 0;
	
	}
	public int getNumber(){
		return number;
	}

Classe com o metodo Main


class ECFBematech
{
   public static void main(String[] args)
   {
      int iRetorno;
      BemaInteger ACK, ST1, ST2, ST3 = null;
      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);
   }

[quote]Olá Diogo,
Olha eu desenvolvi um e se vc tiver alguma dúvida eu posso te ajudar. Não vi nenhum exemplo na época criei do zero. O negócio é entender a regra de negócio e muita leitura da legislação do ECF, que já mudou. Abraço. [/quote]

é essa a dica.
se precisar, pode contar.

[]s,

Dentro do pacote tinha um arquivo REGISTRA.BAT? Execute ele antes e tente novamente.

Já fiz e nada, como falei funcionou com o exemplo html e javascript mais no netbeans usando o metodo main( ) ainda nada!!!

Cara trabalho com ECF faz algum tempo, utilizando a linguagem JAVA. Se quiser alguma ajuda.

O principal de tudo é você entender como funciona a impressora pra depois tentar integra-la com o seu sistema. Primeira coisa que você tem que fazer é baixar toda documentação no site do fabricante, baixe os exemplos de integração que eles disponibilizam pra vocÊ se familiarizar com o funcionamento do ECF , das coisas que tem que ser feitas, o que tem que ser feito primeiro e etc.

Aqui onde trabalho, por termos começa muito cedo com java, a comunicação é toda feita na unha, os dados são enviados em hexa para a impressora e o retorno é tratado, tudo manualmente. Na epoca não existiam frameWorks para auxiliar nesse trabalho.

Hoje dependendo do Fabricante, mas acredito que a maioria, já é disponibilizado um frameWork para a integração portanto basta você ler a documentação no site e sair fazendo as chamadas de métodos.

Por experiência te adianto que é muito mais produtivo você utilizar os frameworks disponiveis, aqui onde trabalho pretendemos fazer um refactor pra utilizar os frameworks.

Qual modelo de impressora você vai usar? Qual fabricante? Como você pretende fazer a comunicação ??

abraços

Outra pergunta, seu ECF está conectado como ao PC ? porta serial ?

O exemplo em Html usa outro mecanismo…dê uma olhada nesse tutorial para ver se tem alguma luz.

Bom Consegui fazer rodar o teste aqui na minha maquina

o codigo que usei ficou assim


class ECFBematech
{
   public static void main(String[] args)
   {
      int iRetorno;
      BemaInteger ACK, ST1, ST2, ST3;
      ACK = new BemaInteger();
      ST1 = new BemaInteger();
      ST2 = new BemaInteger();
      ST3 = new BemaInteger();
            

//      // Emitindo uma Leitura X
//      iRetorno = Bematech.LeituraX();
//      System.out.print("Retorno: " + iRetorno);
      
      Bematech.AbreCupom("");
      
        int i = Bematech.AbreCupom("");
        i = Bematech.VendeItem("01", "Produto Teste", "II", "I", "4", 2, "0,25", "$", "0");
        i = Bematech.IniciaFechamentoCupom("A","%","1000");
        i = Bematech.EfetuaFormaPagamento("Cartão VISA", "50,00");
        i = Bematech.TerminaFechamentoCupom("Obrigado pela Preferencia!");

      // Pegando o retorno da impressora MFD
      iRetorno = 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.print("Retorno Impressora MFD: \n" + retorno);
   }

Vou usar a impressora Bematech MP FI II em windows e linux conectada na porta serial

Mais desde já agradeço pela ajuda de vcs :smiley:

Da uma Olhadinha no

JAcbr http://sourceforge.net/projects/jacbr/

ja tem alguma coisa pronta a maioria das coisas da Bematech

ou Ainda olha o

ACbr http://sourceforge.net/projects/acbr/

Foi daqui que surgiu o JAcbr :smiley:

Ai tem o AcbrMonitor que é para ser usado com outras linguagens… Ele usa comunicação através de arquivos Texto ou Sockets

OU ainda da uma olhadinha no forum do ACBR

Espero ter ajudado

Pessoal, é o seguinte, também estou com mais ou menos o mesmo problema do nosso amigo…
Estou me comunicando perfeitamente com a impressora(emulador).
Porém quando eu tento emitir um cupom, ela fica estatica.
Nada acontece…
A sangria, a abertura e outras coisas funcionam normalmente…
Eu gostaria muito de saber, se alguém conseguiu realmente fazer essa dll funcionar perfeitamente sem precisar correr trás de jna ou até mesmo modificar alguma coisa relativa ao jni.
Fico muito grato, desde já.
Lembrando também, que na minha máquina rodou tudo normalmente sem nenhum erro, inclusive rodei o debug e nada…

Opa… eu tenho um sisteminha (trabalho de faculdade), mas o problema é que ele usa uma dll (BemaFI32.dll) e funciona somente em windows…
O sistema cadastra clientes, produtos, efetua vendas no ecf e tambem tem uma consulta de vendas…

http://www.bloginfo.rg3.net/

Acesse o post JAVA, e baixe…

No link você pode baixar o fonte completo com a documentação…

Espero ajudar… Abraço.