Jump to content

Promoção de Natal SAC Mensal

Contrate e ganhe 1 Kit agenda + Caneta
Saiba mais

LANÇAMENTO
Curso Completo - Dominando o ACBrMonitor

Conheça o Curso

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

Willian Resplandes

Erro ao implementar ACBrIBGE

Recommended Posts

Bom dia amigos estou com problemas na implementação do ACBrIBGE quando eu busco o municio por código ou nome vai tudo bem, mas quando tenho pegar o objeto da lista de municípios da o erro abaixo.

 

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package jACBrFramework.ibge;

import com.sun.jna.ptr.IntByReference;
import jACBrFramework.ACBrClass;
import jACBrFramework.ACBrEventListener;
import jACBrFramework.ACBrException;
import jACBrFramework.interop.ACBrIBGEInterop;
import jACBrFramework.interop.ACBrIBGEInterop.CidadeRec;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;


public class ACBrIBGE extends ACBrClass {

    private ACBrIBGECidade[] cidades;


    public ACBrIBGE() throws ACBrException {

    }

    /**
     * Cria um novo objeto com base no charset recebido.
     *
     * @param pCharset charset utilizado na conversao para geracao do sintegra.
     */
    public ACBrIBGE(Charset pCharset) throws ACBrException {
        this();
        setCustomCharset(pCharset);
    }

    public void BuscarPorCodigo(int codigo) throws ACBrException {
        cidades = null;
        int ret = ACBrIBGEInterop.INSTANCE.IBGE_BuscarPorCodigo(getHandle(), codigo);
        checkResult(ret);
    }

    public void BuscarPorNome(String nome, String uf, Boolean exata) throws ACBrException {
        cidades = null;
        int ret = ACBrIBGEInterop.INSTANCE.IBGE_BuscarPorNome(getHandle(), nome, uf, exata);
        checkResult(ret);
    }

    private void CarregaCidades() throws ACBrException {
        int count = ACBrIBGEInterop.INSTANCE.IBGE_Cidades_GetCount(getHandle());
        checkResult(count);
        cidades = new ACBrIBGECidade[count];
        for (int i = 0; i < count; i++) {
            CidadeRec cidadeRec = new ACBrIBGEInterop.CidadeRec();
            int ret = ACBrIBGEInterop.INSTANCE.IBGE_Cidades_GetItem(getHandle(), cidadeRec,i);
            checkResult(ret);

            ACBrIBGECidade cidade = new ACBrIBGECidade();
            
            cidade.setMunicipio(fromUTF8(cidadeRec.Municipio));
            cidade.setCodMunicio(cidadeRec.CodMunicio);
            cidade.setUF(fromUTF8(cidadeRec.UF));
            cidade.setCodUF(cidadeRec.CodUF);
            cidade.setArea(cidadeRec.Area);
            cidades[i] = cidade;

        }
    }

    @Override
    protected void onInitialize() throws ACBrException {
        IntByReference handle = new IntByReference();
        int ret = ACBrIBGEInterop.INSTANCE.IBGE_Create(handle);
        checkResult(ret);
        setHandle(handle.getValue());
    }

    /**
     * Finaliza a comunicacao com a acbr.
     *
     * @throws ACBrException excecao acionada ao finalizar a comunicacao.
     */
    @Override
    protected void onFinalize() throws ACBrException {
        if (getHandle() != 0) {
            int ret = ACBrIBGEInterop.INSTANCE.IBGE_Destroy(getHandle());
            checkResult(ret);
            setHandle(0);
        }
    }

    public void addOnBuscaEfetuada(ACBrEventListener<BuscaEfetuadaEventObject> pListener) {
        if (!hasListeners("onBuscaEfetuada")) {
            ACBrIBGEInterop.INSTANCE.IBGE_SetOnBuscaEfetuada(getHandle(), new ACBrIBGEInterop.OnBuscaEfetuadaCallback() {
                @Override
                public void invoke() {
                    onBuscaEfetuada();
                }
            });
        }

        //addListener("onLePeso", pListener);
    }

    /**
     * Remove o listener associado.
     *
     * @param pListener
     */
    public void removeOnBuscaEfetuada(ACBrEventListener<BuscaEfetuadaEventObject> pListener) {
        removeListener("onBuscaEfetuada", pListener);
        if (!hasListeners("onBuscaEfetuada")) {
            ACBrIBGEInterop.INSTANCE.IBGE_SetOnBuscaEfetuada(getHandle(), null);
        }
    }

    /**
     * Leitura o codigo de barras.
     *
     * @return
     */
    public void onBuscaEfetuada() {
        BuscaEfetuadaEventObject e = new BuscaEfetuadaEventObject(this);
        notifyListeners("onBuscaEfetuada", e);
    }

    @Override
    public void checkResult(int pResult) throws ACBrException {
        switch (pResult) {
            case -1: {
                String lMessage;
                final int LEN = 1024;
                ByteBuffer buffer = ByteBuffer.allocate(LEN);
                int ret = ACBrIBGEInterop.INSTANCE.IBGE_GetUltimoErro(getHandle(), buffer, LEN);
                lMessage = fromUTF8(buffer, ret);
                throw new ACBrException(lMessage);
            }
            case -2: {
                throw new ACBrException("ACBr IBGE não inicializado.");
            }
        }
    }

    public ACBrIBGECidade[] getCidades() {
        if (cidades == null) {
            try {
                CarregaCidades();
            } catch (ACBrException ex) {
                ex.printStackTrace();
            }
        }
        return cidades;
    }

    public void setCidades(ACBrIBGECidade[] cidades) {
        this.cidades = cidades;
    }

}
package jACBrFramework.ibge;

import java.util.EventObject;

/**
 * Evento acionado para leitura de dados.
 * 
 * @author Jose Mauro
 * @version Criado em: 26/05/2014 16:16:58, revisao: $Id: LeCodigoEventObject.java 6912 2014-05-26 20:07:28Z jmsandy $
 */
public class BuscaEfetuadaEventObject extends EventObject {
    
    // <editor-fold defaultstate="collapsed" desc="Constants">
    private static final long serialVersionUID = -982939358125089587L;
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="Attributes">
    // </editor-fold>
    //<editor-fold defaultstate="collapsed" desc="Constructor">
    public BuscaEfetuadaEventObject(Object pSource) {
        super(pSource);
    }
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="Getters - Setters">
    // </editor-fold>
 
}
package jACBrFramework.Test;

import jACBrFramework.ibge.ACBrIBGE;
import jACBrFramework.ibge.ACBrIBGECidade;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Testes basicos para ACBrIBGE.
 *
 * @author Willian Resplandes Matias
 * @version Criado em: 24/01/2017 
 */
public class ProgramTestIBGE {

    public static void main(String[] args) {
        try {
            final ACBrIBGE ibge = new ACBrIBGE();
            ibge.BuscarPorCodigo(5106422);
            ACBrIBGECidade[] cidades = ibge.getCidades();
            System.out.println(cidades[0].getMunicipio());


        } catch (Exception ex) {
            Logger.getLogger(ProgramTestAac.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

 

run:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x1608cbc1, pid=4648, tid=0x00000544
#
# JRE version: Java(TM) SE Runtime Environment (8.0_101-b13) (build 1.8.0_101-b13)
# Java VM: Java HotSpot(TM) Client VM (25.101-b13 mixed mode, sharing windows-x86 )
# Problematic frame:
# C  [ACBrFramework32.dll+0x7cbc1]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\ACBrFramework\jACBrFramework\jACBrFramework\hs_err_pid4648.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Java Result: 1
BUILD SUCCESSFUL (total time: 4 seconds)


Willian Resplandes Matias

Skype: willian.matias.frialto

Share this post


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

×
×
  • Create New...