Jump to content

Compre o Delphi
Com até 30% de desconto
e parcelado em até 12x sem juros

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Rafael Batiati

Novo: Acbrecf

Recommended Posts

Pessoal,

Boas novidades.

 

O projeto jACBrFramework passou por um grande refactoring, foi praticamente refeito do ZERO com novas classes bases e reorganização dos pacotes.

 

A classe ACBrECF (que agora fica no pacote jACBrFramework.serial.ecf.ACBrECF) está com todas as propriedade e métodos implementados.

Faltam alguns ajustes nos métodos que retornam/recebem classes complexas.

 

Agora temos também suporte a eventos no Java (via Listeners), todos os eventos disponíveis foram adicionados ao componente ACBrECF, veja no exemplo como utilizá-los.

 

(...)

 

Com essas alterações novos componentes poderão ser adicionados mais facilmente, dispensando o uso de C++ para as chamadas nativas.

 

Aos usuários do antigo jACBr ou da última versão do jACBrFramework que ainda dependia da ACBrFramework_JNI.dll, peço que atualizem seus projetos. Esta versão atual está muito melhor e mais fácil de manter.

 

Baixem os fontes e confiram (agora com projeto NetBeans incluído).

 

Por link direto

http://sourceforge.net/projects/acbrframework/files/jACBrFramework.zip/download

 

Ou pelo SVN

http://acbrframework.sourceforge.net/downloads/codigo-fonte/

 

Qualquer dúvida/problema é só postar por aqui.

Abs


Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Share this post


Link to post
Share on other sites

Já efetuei alguns testes e realmente ficou muito bom a implementação via JNA. Agora estou tentando compilar o projeto ACBrFramework no ubuntu 32 e 64 bits, com objetivo de deixar o projeto multiplataforma.

 

Gostaria de saber se tem algum exemplo da utilização do ACBr em Lazarus e compilado em Linux?

Edited by bienemann

Brian Bienemann

AgillizA Software

Share this post


Link to post
Share on other sites

Não temos esse tipo de demo, você pode documentar e postar aqui um tutorial, será bem vindo.

 

Acho que o ACBr no momento não está compilando em 64bits, por causa de funções nativas implementadas somente em 32bits .... será resolvido, mas no momento só via 32bits mesmo. Não sei no linux, mas creio que idem.


Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Share this post


Link to post
Share on other sites

Estou com um pouco de dificuldade ainda, pq tenho pouca experiencia com Object Pascal(Lazarus e Delphi). Saberia me dizer se o código fonte do ACBrMonitor para linux está disponível para download?


Brian Bienemann

AgillizA Software

Share this post


Link to post
Share on other sites

Estou tentando compilar no linux (ubuntu), e passei por esse problema. Se não me engando está do nome da unit e do arquivo gravado em disco. Estou com outros erros agora, se quiser me add no skype bjbienemann podemos trabalhar juntos.


Brian Bienemann

AgillizA Software

Share this post


Link to post
Share on other sites

Para eu pegar o valores totais das aliquotas como faço usando o novo jacbr?

 

Isso entra no que eu disse no primeiro post "Faltam alguns ajustes nos métodos que retornam/recebem classes complexas."  :cool: 


Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Share this post


Link to post
Share on other sites

tem algum metodo que eu possa dar uma olhada para usar como exemplo e tentar desenvolver esse?

 

Sim, pode dar uma olhada nos métodos getFormasPagamento(), carregaFormasPagamento(int count) e na classe FormaPagamento que seguem a mesma lógica de uso de structs das Alíquotas, RelatorioGerencial e ComprovanteNaoFiscal.

 

Caso queira implementar, poste o código aí pra gente que incluímos no SVN depois.

Abs


Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Share this post


Link to post
Share on other sites

Segue o código, testei aqui deu certo.

 

Abs.

 

package jACBrFramework.serial.ecf;

public class Aliquota {
    //<editor-fold defaultstate="collapsed" desc="Fields">

    private String indice;
    private double aliquota;
    private boolean tipo;
    private double total;
    private boolean sequencia;

    //</editor-fold>
    //<editor-fold defaultstate="collapsed" desc="Properties">
    public Aliquota(String indice, double aliquota, boolean tipo, double total, boolean sequencia) {
        this.indice = indice;
        this.aliquota = aliquota;
        this.tipo = tipo;
        this.total = total;
        this.sequencia = sequencia;
    }

    public String getIndice() {
        return indice;
    }

    public double getAliquota() {
        return aliquota;
    }

    public boolean getTipo() {
        return tipo;
    }


    public double getTotal() {
        return total;
    }

    public boolean getSequencia() {
        return sequencia;
    }


    //</editor-fold>
}

/*ACBrECF.java - INICIO*/

    public void lerTotaisAliquota() throws ACBrException {

        int ret = ACBrECFInterop.INSTANCE.ECF_LerTotaisAliquota(getHandle());
        checkResult(ret);

        carregaAliquotas(ret);

    }
	
	private void carregaAliquotas(int count) throws ACBrException {

        Aliquota[] array = new Aliquota[count];
        for (int i = 0; i < count; i++) {
            ACBrECFInterop.AliquotaRec record = new ACBrECFInterop.AliquotaRec();
            int ret = ACBrECFInterop.INSTANCE.ECF_GetAliquota(getHandle(), record, i);
            checkResult(ret);

            Aliquota item = new Aliquota(fromUTF8(record.Indice), record.Aliquota, record.Tipo, record.Total, record.Sequencia);
            array[i] = item;
        }

        this.aliquotas = array;

    }

	
	public void carregaAliquotas() throws ACBrException {
        int ret = ACBrECFInterop.INSTANCE.ECF_CarregaAliquotas(getHandle());
        checkResult(ret);

        carregaAliquotas(ret);
    }
	
	 public Aliquota[] getAliquota() throws ACBrException {
        return aliquotas;
    }
	
/*ACBrECF.java - FINAL*/	

Share this post


Link to post
Share on other sites

@vasilvei

 

Muito bom o código, já foi incluído no SVN, pode pegar a última versão que sua alteração estará lá.

Pelo visto você entendeu perfeitamente como funciona ... mas qualquer dúvida é só postar aqui.

 

Apenas uma mudança que fiz, o método getAliquota() foi renomeado para getAliquotas() por causa da compatibilidade com a API original, cuja propriedade chama-se Aliquotas.

 

Obrigado pela contribuição,

Abs.


Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Share this post


Link to post
Share on other sites

Consegui gerar AcbrFramework para linux...

agora ta dando erro no teste do JAcbrFramework, como se nao conseguisse ler.

Mudei no Intercetop, para libAcbrFramework.so, mas mesmo assim continua. Alguma sugestao?

Share this post


Link to post
Share on other sites

Boa noticia. 

 

Você está colocando a libAcbrFramework.so em alguma pasta que seja uma variável de ambiente? por exemplo você pode colocar a mesma na pasta /usr/lib/


Brian Bienemann

AgillizA Software

Share this post


Link to post
Share on other sites

Efetuei alguns testes e o netbeans e está encontrando a /usr/lib/libACBrFramework32.so só que não consegue carregar. Verifique se o nome da sua biblioteca está dessa mesma forma, por que se estiver tudo em caixa baixa "libacbrframework32.so" não encontrara o arquivo. Com relação as a chamada feita pela classe Intercetop pode ficar da mesma forma que está no projeto "ACBrFramework32".

 

Eu ainda não tive tempo de fazer com que compile a biblioteca no linux, se possivel compartilhe o seu código para que possamos trabalhar juntos.

 

segue o erro retornado pelo netbeans:

 

Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'ECF_Create': /usr/lib/libACBrFramework32.so: undefined symbol: ECF_Create
    at com.sun.jna.Function.<init>(Function.java:179)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:391)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:371)
    at com.sun.jna.Library$Handler.invoke(Library.java:205)
    at sun.proxy.$Proxy0.ECF_Create(Unknown Source)
    at jACBrFramework.serial.ecf.ACBrECF.onInitialize(ACBrECF.java:3569)
    at jACBrFramework.ACBrClass.<init>(ACBrClass.java:22)
    at jACBrFramework.serial.ecf.ACBrECF.<init>(ACBrECF.java:30)
    at jACBrFramework.Test.Program.main(Program.java:53)
Java Result: 1


Brian Bienemann

AgillizA Software

Share this post


Link to post
Share on other sites

Galera eu mudei a chamada do medoto        public void pafMF_LMFC_Impressao(int CRZInicial, int CRZFinal) throws ACBrException {

 

ele estava chamado o mesmo método da Data. ficou assim:

 

    public void pafMF_LMFC_Impressao(int CRZInicial, int CRZFinal) throws ACBrException {


        int ret = ACBrECFInterop.INSTANCE.ECF_PafMF_LMFC_Impressao_CRZ(getHandle(), CRZInicial, CRZFinal);
        checkResult(ret);


    }

Share this post


Link to post
Share on other sites

-Para gerar a leituras de memória fiscal, é necessário ter a dll das ecf's?

 

-Tentei gerar aqui ele geral só que dá erro na chave de acesso, o por que ocorre isso?

 

estou usando esses metodos:

 

 public void pafMF_LMFC_Espelho(int CRZInicial, int CRZFinal, String CaminhoArquivo) throws ACBrException {


        int ret = ACBrECFInterop.INSTANCE.ECF_PafMF_LMFC_Espelho_CRZ(getHandle(), CRZInicial, CRZFinal, toUTF8(CaminhoArquivo));
        checkResult(ret);


    }


Share this post


Link to post
Share on other sites

Eu uso uma ecf epson, quando eu tiro uma leitura de memória fiscal espelho, ele gera o arquivo porém dá erro ao ler a chave, por que ocorre isso?

 

porém no final do arquivo ele gera:

 

000000041A008000BC12874181D09F7FBE477FA92B5FFCE60EF63C3A332F71CAD68AE89AB60EFC7510976A40067BE0B7F666B5D84FE4D095A1B5BE7A353438EBD45D62AC736EBE6C4FBACFB43AF10AC048F2676157F14A528D875D882BA267BC7AC702B2D896325B670F5B4D650A313FCEDF9AA6CF51EB5B49202D398F8DAD6CD5E1E2D6AE30EBBE

 

seria a assinatura EAD.?

Edited by vasilvei

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...