Problemas com JNA

5 respostas
C

Pessoal,

estou enfrentando um problema com o JNA tentando acessar uma dll de impressora fiscal, em especial da epson (InterfaceEpson.dll).

O mapeamento das funções da dll acredito que está ok, já que quase tudo funciona perfeitamente. Meu problema se dá com apenas 3
funções desta dll.

A única diferença destas funções é que elas geram arquivos no disco local. E somente nestas eu tenho aquele problema de crash. Deduzi que o problema se dá após a chamada da dll.

Cheguei a tentar usar uma versão paga, o JNIWrapper, mas com o mesmo problema…

Pergunto então:

  • alguém já passou por algo parecido com esta ou outra dll?
  • alguém tem idéia do que pode estar acontecendo?
  • existe alguma opção da jvm que contorna o problema?

Obrigado!!

5 Respostas

T

Pode ser que tenham sido mal-definidas para o JNA. Quais são os métodos que dão problemas ( http://www2.epson.com.br/fiscais/files/ManualInterfaceEpson_1.6.1.pdf ) ?

C

São os seguintes métodos:

EPSON_RelatorioFiscal_Abrir_Dia (que nem parâmetros tem)
EPSON_RelatorioFiscal_RZEx
EPSON_Sys_Log

S

Alguem ja conseguiu resolver este problema, poderiam passar a solução.

Tentei mudar o tipo de variavel no parametro de envio, mesmo assim, ele executava até imprimia no ECF, porém gerava um erro de acesso invalido a DLL, havendo um fechamento imediato do sistema.

Os principais métodos que ocasionaram erros de acesso a dll InterfaceEpson foram estes:

public int EPSON_RelatorioFiscal_RZ(String sData, String sHora,
char iHorarioVerao, byte[] sCRZ);

public int EPSON_RelatorioFiscal_RZEx(int iHorarioVerao);

Obs: Ja tentei com todas as dll, disponíveis no site. Fiz o procedimento conforme mandava o manual. InterfaceEpson2.1.15 ...

Tava achando que era o JNA, porém no mapear outras ECF, este erro ocasionava, por variaveis de tipo diferentes as assinadas na DLL

To achando que estes métodos não tenham um suporte completo ainda.

Segue código.

/**
 * Toth-ECF
 *
 * ImplEpson.java
 *
 * @version 1.0
 */
package tothecf.ecf.epson.dll;

import com.sun.jna.Native;
import com.sun.jna.win32.StdCallLibrary;

/**
 *
 * @author Daniel Schroeder
 */
public interface ImplEpson extends StdCallLibrary {

    /**
     * INICIALIZACAO DA BIBLIOTECA
     */
    ImplEpson INSTANCE = (ImplEpson) Native.loadLibrary("InterfaceEpson", ImplEpson.class);

    /*PORTA SERIAL*/
    /**
     * Esta função abre a porta de comunicação serial iniciando desta forma a
     * comunicação entre o computador e a impressora fiscal. A execução bem
     * sucedida desta função é necessária para o funcionamento de todo o
     * resto da interface.
     * 
     * @param iVelocidade
     * @param wPorta
     * @return
     */
    public int EPSON_Serial_Abrir_Porta(int iVelocidade, int wPorta);

    /**
     * Esta função seta a DLL para abrir e fechar a porta de comunicação serial
     * sempre que um comando da DLL for chamado.
     *
     * @param iVelocidade
     * @param iPorta
     * @return
     */
    public int EPSON_Serial_Abrir_Fechar_Porta_CMD(int iVelocidade, int iPorta);

    /**
     * Esta função detecta a porta serial que a impressora está e retorna a
     * porta e velocidade de conexão.
     *
     * @param iVelocidade
     * @param iPorta
     * @return
     */
    public int EPSON_Serial_Abrir_PortaAD(int iVelocidade, int iPorta);

    /**
     * Esta função detecta a porta serial que a impressora  está ligada e todos
     * os parâmetros utilizados. Se estes parâmetros  estão armazenados no
     * Registro do Windows eles serão usados para abrir a porta.
     *
     * @return
     */
    public int EPSON_Serial_Abrir_PortaEx();

    /**
     * Esta função fecha a porta de comunicação serial.
     *
     * @return
     */
    public int EPSON_Serial_Fechar_Porta();

    /**
     * Verifica o estado atual da porta serial.
     *
     * @return
     */
    public int EPSON_Serial_Obter_Estado_Com();

    /*CUPOM FISCAL*/
    /**
     * Esta função abre um Cupom Fiscal.
     *
     * @param sCNPJ_CPF
     * @param sRazao_Nome
     * @param sEndereco1
     * @param sEndereco2
     * @param iPosicao
     * @return
     */
    public int EPSON_Fiscal_Abrir_Cupom(
            String sCNPJ_CPF, String sRazao_Nome, String sEndereco1,
            String sEndereco2, int iPosicao);

    /**
     * Esta função vende um item no Cupom Fiscal.
     *
     * @param sCodigo
     * @param sDescricao
     * @param sQuantidade
     * @param iQtdCasasDecimais
     * @param sUnidade
     * @param sPrecoUnitario
     * @param iNumCasasDecimais
     * @param sAliquota
     * @param iNumLinhas
     * @return
     */
    public int EPSON_Fiscal_Vender_Item(String sCodigo, String sDescricao,
            String sQuantidade, int iQtdCasasDecimais, String sUnidade,
            String sPrecoUnitario, int iNumCasasDecimais, String sAliquota,
            int iNumLinhas);

    /**
     * Esta função vende item no Cupom Fiscal, salvando a informação se o item
     * é de de fabricação própria ou de terceiros podendo ser usada posteriormente
     * na geração dos registros documento PAF.
     *
     * @param sCodigo
     * @param sDescricao
     * @param sQuantidade
     * @param iQtdCasasDecimais
     * @param sUnidade
     * @param sPrecoUnitario
     * @param iNumCasasDecimais
     * @param sAliquota
     * @param iNumLinhas
     * @param bManufaturado
     * @return
     */
    public int EPSON_Fiscal_Vender_ItemEX(String sCodigo, String sDescricao,
            String sQuantidade, int iQtdCasasDecimais, String sUnidade,
            String sPrecoUnitario, int iNumCasasDecimais, String sAliquota,
            int iNumLinhas, boolean bManufaturado);

    /**
     * Esta função retorna o subtotal do cupom corrente ou o subtotal do último cupom fiscal.
     *
     * @param bsSubTotal
     * @return
     */
    public int EPSON_Fiscal_Obter_SubTotal(byte[] bsSubTotal);

    /**
     * Esta função processa o pagamento do Cupom Fiscal.
     *
     * @param sNumeroPagamento
     * @param sValorPagamento
     * @param iCasasDecimais
     * @param sDescricao1
     * @param sDescricao2
     * @return
     */
    public int EPSON_Fiscal_Pagamento(String sNumeroPagamento,
            String sValorPagamento, int iCasasDecimais,
            String sDescricao1, String sDescricao2);

    /**
     * Esta função efetua desconto ou acréscimo em um item.
     *
     * @param sValor
     * @param iCasasDecimais
     * @param bDesconto
     * @param bPercentagem
     * @return
     */
    public int EPSON_Fiscal_Desconto_Acrescimo_Item(String sValor,
            int iCasasDecimais, boolean bDesconto, boolean bPercentagem);

    /**
     * Esta função efetua um desconto ou acréscimo no subtotal do cupom.
     *
     * @param sValor
     * @param iCasasDecimais
     * @param bDesconto
     * @param bPercentagem
     * @return
     */
    public int EPSON_Fiscal_Desconto_Acrescimo_Subtotal(String sValor,
            int iCasasDecimais, boolean bDesconto, boolean bPercentagem);

    /**
     * Esta função cancela o último cupom fiscal.
     *
     * @return
     */
    public int EPSON_Fiscal_Cancelar_Cupom();

    /**
     * Esta função cancela um item do cupom fiscal, caso este item seja
     * informado com um valor nulo, a função cancelará o ultimo item
     * inserido no cupom.
     *
     * @param sNumeroItem
     * @return
     */
    public int EPSON_Fiscal_Cancelar_Item(String sNumeroItem);

    /**
     * Esta função cancela o último item vendido no cupom fiscal corrente.
     *
     * @return
     */
    public int EPSON_Fiscal_Cancelar_Ultimo_Item();

    /**
     * Esta função cancela o desconto ou acréscimo aplicado sobre o
     * último item vendido no cupom fiscal atual.
     *
     * @param bDesconto
     * @return
     */
    public int EPSON_Fiscal_Cancelar_Desconto_Acrescimo_Item(boolean bDesconto);

    /**
     * Esta função cancela o desconto ou acréscimo aplicado sobre o subtotal
     * do cupom fiscal atual.
     *
     * @param bDesconto
     * @return
     */
    public int EPSON_Fiscal_Cancelar_Acrescimo_Desconto_Subtotal(boolean bDesconto);

    /**
     * Esta função cancela parcialmente um item.
     *
     * @param sNumeroItem
     * @param sQuantidade
     * @param iQuantCasasDecimais
     * @return
     */
    public int EPSON_Fiscal_Cancelar_Item_Parcial(
            String sNumeroItem, String sQuantidade, int iQuantCasasDecimais);

    /**
     * Esta função imprime oito linhas de texto depois da totalização do ticket.
     * As linhas em branco serão omitidas. Para imprimir código de barras nas
     * linhas de  texto promocional veja detalhes na função
     * EPSON_Fiscal_Configurar_Codigo_Barras_Mensagem.
     *
     * @param sLinhaTexto1
     * @param sLinhaTexto2
     * @param sLinhaTexto3
     * @param sLinhaTexto4
     * @param sLinhaTexto5
     * @param sLinhaTexto6
     * @param sLinhaTexto7
     * @param sLinhaTexto8
     * @return
     */
    public int EPSON_Fiscal_Imprimir_Mensagem(
            String sLinhaTexto1,
            String sLinhaTexto2,
            String sLinhaTexto3,
            String sLinhaTexto4,
            String sLinhaTexto5,
            String sLinhaTexto6,
            String sLinhaTexto7,
            String sLinhaTexto8);

    /**
     * Esta função imprime linhas promocionais quebrando o texto ao
     * fim de 56 caracteres ou pelos terminadores de linha 0x0D 0x0A,
     * limitado a 8 linhas.
     *
     * @param sLinhaTexto
     * @return
     */
    public int EPSON_Fiscal_Imprimir_MensagemEX(String sLinhaTexto);

    /**
     * Esta função configura as características do código  de barras a ser
     * impresso em uma das oito linhas de mensagem promocional existentes no
     * encerramento de um cupom de venda. É possível configurar um código de
     * barras para cada uma das oito linhas de texto promocional. Observe que
     * com esta função configura-se apenas as características do código de
     * barras, sendo que o valor do mesmo (o número do código) deve ser fornecido
     * logo em seguida pela função EPSON_Fiscal_Imprimir_Mensagem,
     * na respectiva linha.
     *
     * @param iLinha
     * @param iTipo
     * @param iAltura
     * @param iLargura
     * @param iPosicao
     * @param iCaracter
     * @return
     */
    public int EPSON_Fiscal_Configurar_Codigo_Barras_Mensagem(
            int iLinha,
            int iTipo,
            int iAltura,
            int iLargura,
            int iPosicao,
            int iCaracter);

    /**
     * Esta função finaliza rapidamente um cupom pagando em dinheiro.
     *
     * @param sTotalCupom
     * @return
     */
    public int EPSON_Fiscal_Fechar_CupomEx(String sTotalCupom);

    /**
     * Esta função fecha o cupom fiscal e corta o papel.
     *
     * @param bCortarPapel
     * @param bAdicional
     * @return
     */
    public int EPSON_Fiscal_Fechar_Cupom(boolean bCortarPapel, boolean bAdicional);

    /**
     * Esta função configura os dados do cliente.
     * 
     * @param sCNPJ_CPF
     * @param sRazao_Nome
     * @param sEndereco1
     * @param sEndereco2
     * @param iPosicao
     * @return
     */
    public int EPSON_Fiscal_Dados_Usuario(
            String sCNPJ_CPF,
            String sRazao_Nome,
            String sEndereco1,
            String sEndereco2,
            int iPosicao);

    /*CUPOM NÃO FISCAL*/
    /**
     *
     * @param sCNPJ_CPF
     * @param sRazao_Nome
     * @param sEndereco1
     * @param sEndereco2
     * @param iPosicao
     * @return
     */
    public int EPSON_NaoFiscal_Abrir_Comprovante(
            String sCNPJ_CPF,
            String sRazao_Nome,
            String sEndereco1,
            String sEndereco2,
            int iPosicao);

    /**
     *
     * @param sNumeroOperacao
     * @param sValorOperacao
     * @param iCasasDecimais
     * @return
     */
    public int EPSON_NaoFiscal_Vender_Item(
            String sNumeroOperacao,
            String sValorOperacao,
            int iCasasDecimais);

    /**
     *
     * @param sValor
     * @param iCasasDecimais
     * @param bDesconto
     * @param bPercentagem
     * @return
     */
    public int EPSON_NaoFiscal_Desconto_Acrescimo_Item(
            String sValor,
            int iCasasDecimais,
            boolean bDesconto,
            boolean bPercentagem);

    /**
     *
     * @param sValor
     * @param iCasasDecimais
     * @param bDesconto
     * @param bPercentagem
     * @return
     */
    public int EPSON_NaoFiscal_Desconto_Acrescimo_Subtotal(
            String sValor,
            int iCasasDecimais,
            boolean bDesconto,
            boolean bPercentagem);

    /**
     *
     * @param sNumeroPagamento
     * @param sValorPagamento
     * @param iCasasDecimais
     * @param sDescricao1
     * @param sDescricao2
     * @return
     */
    public int EPSON_NaoFiscal_Pagamento(
            String sNumeroPagamento,
            String sValorPagamento,
            int iCasasDecimais,
            String sDescricao1,
            String sDescricao2);

    /**
     *
     * @param sItem
     * @return
     */
    public int EPSON_NaoFiscal_Cancelar_Item(String sItem);

    /**
     *
     * @return
     */
    public int EPSON_NaoFiscal_Cancelar_Ultimo_Item();

    /**
     *
     * @param bDesconto
     * @return
     */
    public int EPSON_NaoFiscal_Cancelar_Desconto_Acrescimo_Item(boolean bDesconto);

    /**
     *
     * @param bDesconto
     * @return
     */
    public int EPSON_NaoFiscal_Cancelar_Desconto_Acrescimo_Subtotal(boolean bDesconto);

    /**
     *
     * @return
     */
    public int EPSON_NaoFiscal_Cancelar_Comprovante();

    /**
     *
     * @param bCortarPapel
     * @return
     */
    public int EPSON_NaoFiscal_Fechar_Comprovante(boolean bCortarPapel);

    /**
     *
     * @param sNumeroPagamento
     * @param sValor
     * @param iCasasDecimais
     * @param sParcelas
     * @return
     */
    public int EPSON_NaoFiscal_Abrir_CCD(
            String sNumeroPagamento,
            String sValor,
            int iCasasDecimais,
            String sParcelas);

    /**
     *
     * @param sNumeroRelatorio
     * @return
     */
    public int EPSON_NaoFiscal_Abrir_Relatorio_Gerencial(String sNumeroRelatorio);

    /**
     *
     * @param sLinha
     * @return
     */
    public int EPSON_NaoFiscal_Imprimir_LinhaEX(String sLinha);

    /**
     *
     * @param sLinha
     * @return
     */
    public int EPSON_NaoFiscal_Imprimir_Linha(String sLinha);

    /**
     *
     * @param sLinha00
     * @param sLinha01
     * @param sLinha02
     * @param sLinha03
     * @param sLinha04
     * @param sLinha05
     * @param sLinha06
     * @param sLinha07
     * @param sLinha08
     * @param sLinha09
     * @param sLinha10
     * @param sLinha11
     * @param sLinha12
     * @param sLinha13
     * @param sLinha14
     * @return
     */
    public int EPSON_NaoFiscal_Imprimir_15Linhas(String sLinha00, String sLinha01,
            String sLinha02, String sLinha03, String sLinha04,
            String sLinha05, String sLinha06, String sLinha07, String sLinha08,
            String sLinha09, String sLinha10,
            String sLinha11, String sLinha12, String sLinha13, String sLinha14);

    /**
     *
     * @param bCortarPapel
     * @return
     */
    public int EPSON_NaoFiscal_Fechar_CCD(boolean bCortarPapel);

    /**
     *
     * @param bCortarPapel
     * @return
     */
    public int EPSON_NaoFiscal_Fechar_Relatorio_Gerencial(boolean bCortarPapel);

    /**
     *
     * @param sNumeroPagamento
     * @param sValor
     * @param iCasasDecimais
     * @param sParcelas
     * @param sNumeroCupom
     * @return
     */
    public int EPSON_NaoFiscal_Cancelar_CCD(String sNumeroPagamento,
            String sValor, int iCasasDecimais, String sParcelas,
            String sNumeroCupom);

    /**
     *
     * @param sFormaPagamento
     * @param sNovaFormaPagamento
     * @param sValor
     * @param iCasasDecimais
     * @return
     */
    public int EPSON_NaoFiscal_Cancelar_Pagamento(String sFormaPagamento,
            String sNovaFormaPagamento, String sValor, int iCasasDecimais);

    /**
     *
     * @return
     */
    public int EPSON_NaoFiscal_Nova_Parcela_CCD();

    /**
     *
     * @return
     */
    public int EPSON_NaoFiscal_Nova_Via_CCD();

    /**
     *
     * @return
     */
    public int EPSON_NaoFiscal_Reimprimir_CCD();

    /**
     *
     * @param sValor
     * @param iCasasDecimais
     * @return
     */
    public int EPSON_NaoFiscal_Sangria(String sValor, int iCasasDecimais);

    /**
     *
     * @param sValor
     * @param iCasasDecimais
     * @return
     */
    public int EPSON_NaoFiscal_Fundo_Troco(String sValor, int iCasasDecimais);

    /**
     *
     * @param iTipo
     * @param iAltura
     * @param iLargura
     * @param iPosicao
     * @param iCaracter
     * @param sCodigo
     * @return
     */
    public int EPSON_NaoFiscal_Imprimir_Codigo_Barras(int iTipo, int iAltura,
            int iLargura, int iPosicao, int iCaracter, String sCodigo);

    /**
     *
     * @param sSubTotal
     * @return
     */
    public int EPSON_NaoFiscal_Obter_SubTotal(byte[] sSubTotal);

    /*RELATÓRIOS FISCAIS*/
    /**
     *
     * @return
     */
    public int EPSON_RelatorioFiscal_LeituraX();

    /**
     *
     * @param sData
     * @param sHora
     * @param iHorarioVerao
     * @param sCRZ
     * @return
     */
    public int EPSON_RelatorioFiscal_RZ(String sData, String sHora,
            char iHorarioVerao, byte[] sCRZ);

    /**
     *
     * @param iHorarioVerao
     * @return
     */
    public int EPSON_RelatorioFiscal_RZEx(int iHorarioVerao);

    /**
     *
     * @param sInicio
     * @param sFim
     * @param iTipoImpressao
     * @param sBuffer
     * @param sArquivo
     * @param iTamanhoBuffer
     * @param iTamBuffer
     * @return
     */
    public int EPSON_RelatorioFiscal_Leitura_MF(String sInicio, String sFim,
            int iTipoImpressao, byte[] sBuffer, String sArquivo,
            int iTamanhoBuffer, int iTamBuffer);

    /**
     *
     * @param sArquivo
     * @return
     */
    public int EPSON_RelatorioFiscal_Salvar_LeituraX(String sArquivo);

    /**
     *
     * @return
     */
    public int EPSON_RelatorioFiscal_Abrir_Dia();

    /**
     *
     * @param sDadosUsuario
     * @return
     */
    public int EPSON_Obter_Dados_Usuario(byte[] sDadosUsuario);

    /**
     *
     * @param sTabelaAliquotas
     * @return
     */
    public int EPSON_Obter_Tabela_Aliquotas(byte[] sTabelaAliquotas);

    /**
     *
     * @param sTabelaAliquotas
     * @param sTotalICMS
     * @param sTotalISS
     * @return
     */
    public int EPSON_Obter_Tabela_Aliquotas_Cupom(byte[] sTabelaAliquotas,
            byte[] sTotalICMS, byte[] sTotalISS);

    /**
     *
     * @param sTabelaPagamentos
     * @return
     */
    public int EPSON_Obter_Tabela_Pagamentos(byte[] sTabelaPagamentos);

    /**
     *
     * @param sTabelaNaoFiscais
     * @return
     */
    public int EPSON_Obter_Tabela_NaoFiscais(byte[] sTabelaNaoFiscais);

    /**
     *
     * @param sTabelaRelatoriosGerenciais
     * @return
     */
    public int EPSON_Obter_Tabela_Relatorios_Gerenciais(byte[] sTabelaRelatoriosGerenciais);

    /**
     *
     * @param sTotalCancelado
     * @return
     */
    public int EPSON_Obter_Total_Cancelado(byte[] sTotalCancelado);

    /**
     *
     * @param sAliquotasTotal
     * @return
     */
    public int EPSON_Obter_Total_Aliquotas(byte[] sAliquotasTotal);

    /**
     *
     * @param sVendaBruta
     * @return
     */
    public int EPSON_Obter_Total_Bruto(byte[] sVendaBruta);

    /**
     *
     * @param sTotalDescontos
     * @return
     */
    public int EPSON_Obter_Total_Descontos(byte[] sTotalDescontos);

    /**
     *
     * @param sTotalAcrescimos
     * @return
     */
    public int EPSON_Obter_Total_Acrescimos(byte[] sTotalAcrescimos);

    /**
     *
     * @param sTotalTroco
     * @return
     */
    public int EPSON_Obter_Total_Troco(byte[] sTotalTroco);

    /**
     *
     * @param sDadosImpressora
     * @return
     */
    public int EPSON_Obter_Dados_Impressora(byte[] sDadosImpressora);

    /**
     *
     * @param sDadosUsuario
     * @return
     */
    public int EPSON_Obter_Cliche_Usuario(byte[] sDadosUsuario);

    /**
     *
     * @param sDataHora
     * @return
     */
    public int EPSON_Obter_Data_Hora_Jornada(byte[] sDataHora);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Numero_ECF_Loja(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Hora_Relogio(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Simbolo_Moeda(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Casas_Decimais(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Desconto_Iss(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Contadores(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Estado_Impressora(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_GT(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Linhas_Impressas(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Linhas_Impressas_RG(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Linhas_Impressas_CCD(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Dados_Jornada(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Caracteres_Linha(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Operador(byte[] sDados);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Obter_Numero_Ultimo_Item(byte[] sDados);

    /**
     *
     * @param sNumeroItem
     * @param sDadosItem
     * @return
     */
    public int EPSON_Obter_Informacao_Item(String sNumeroItem, byte[] sDadosItem);

    /**
     *
     * @param sEstado
     * @return
     */
    public int EPSON_Obter_Estado_Cupom(byte[] sEstado);

    /**
     *
     * @param sInfo
     * @return
     */
    public int EPSON_Obter_Informacao_Ultimo_Documento(byte[] sInfo);

    /**
     *
     * @param bHabilitado
     * @return
     */
    public int EPSON_Obter_Estado_Corte_Papel(byte[] bHabilitado);

    /**
     *
     * @param sLinhasImpressas
     * @return
     */
    public int EPSON_Obter_Linhas_Impressas_Vendas(byte[] sLinhasImpressas);

    /**
     *
     * @param sLinhasImpressas
     * @return
     */
    public int EPSON_Obter_Linhas_Impressas_Pagamentos(byte[] sLinhasImpressas);

    /**
     *
     * @param sItens
     * @return
     */
    public int EPSON_Obter_Total_Itens_Vendidos(byte[] sItens);

    /**
     *
     * @param sEstado
     * @return
     */
    public int EPSON_Obter_Estado_Memoria_Fiscal(byte[] sEstado);

    /**
     *
     * @param sEstado
     * @return
     */
    public int EPSON_Obter_Estado_MFD(byte[] sEstado);

    /**
     *
     * @param sLeituras
     * @return
     */
    public int EPSON_Obter_Total_Leituras_X_Impressas(byte[] sLeituras);

    /**
     *
     * @param bEstado
     * @return
     */
    public int EPSON_Obter_Estado_Horario_Verao(byte[] bEstado);

    /**
     *
     * @param sBrutAmount
     * @param sLastBrutAmount
     * @return
     */
    public int EPSON_Obter_Venda_Bruta(byte[] sBrutAmount,
            byte[] sLastBrutAmount);

    /**
     *
     * @param sCodigoErro
     * @param sMensagemErro
     * @return
     */
    public int EPSON_Obter_Mensagem_Erro(String sCodigoErro,
            byte[] sMensagemErro);

    /**
     *
     * @param sInicio
     * @param sFinal
     * @param iTipoEntrada
     * @param iEspelhos
     * @param iAtoCotepe
     * @param iSintegra
     * @param sArquivoSaida
     * @return
     */
    public int EPSON_Obter_Dados_MF_MFD(String sInicio, String sFinal,
            int iTipoEntrada,
            int iEspelhos,
            int iAtoCotepe,
            int iSintegra,
            String sArquivoSaida);

    /**
     *
     * @param sVersao
     * @return
     */
    public int EPSON_Obter_Versao_DLL(byte[] sVersao);

    /**
     *
     * @param sOption
     * @param sZnumber
     * @param sData
     * @return
     */
    public int EPSON_Obter_Total_JornadaEX(String sOption,
            String sZnumber, byte[] sData);

    /**
     *
     * @param sLastRZData
     * @return
     */
    public int EPSON_Obter_Dados_Ultima_RZ(byte[] sLastRZData);

    /**
     *
     * @param sInicio
     * @param sFinal
     * @param iTipoEntrada
     * @param iEspelhos
     * @param iAtoCotepe
     * @param iSintegra
     * @param sArquivoSaida
     * @param sArquivoMF
     * @param sArquivoMFD
     * @return
     */
    public int EPSON_Obter_Dados_Arquivos_MF_MFD(
            String sInicio,
            String sFinal,
            int iTipoEntrada,
            int iEspelhos,
            int iAtoCotepe,
            int iSintegra,
            String sArquivoSaida,
            String sArquivoMF,
            String sArquivoMFD);

    /**
     * Essa função separa as jornadas de um relatório Ato COTEPE 17/04 (CAT52).
     * 
     * @param sFileName
     * @param iOption
     * @return
     */
    public int EPSON_Obter_AtoCOTEPE_Separado_EX(String sFileName, int iOption);

    /**
     *
     * @param sArquivo
     * @return
     */
    public int EPSON_Obter_Arquivo_Binario_MF(String sArquivo);

    /**
     *
     * @param sFileName
     * @return
     */
    public int EPSON_Obter_Arquivo_Binario_MFD(String sFileName);

    /**
     *
     * @param sVersion
     * @param sDate
     * @param sTime
     * @return
     */
    public int EPSON_Obter_Versao_SWBasicoEX(byte[] sVersion, byte[] sDate,
            byte[] sTime);

    /**
     *
     * @param sCodigo
     * @param sNomeArquivo
     * @return
     */
    public int EPSON_Obter_Codigo_Nacional_ECF(byte[] sCodigo,
            byte[] sNomeArquivo);

    /**
     *
     * @param sNumeroUsuario
     * @return
     */
    public int EPSON_Obter_Numero_Usuario(byte[] sNumeroUsuario);

    /*CONFIGURAÇÃO DA IMPRESSORA*/
    /**
     * 
     * @param sTaxa
     * @param bTipoISS
     * @return
     */
    public int EPSON_Config_Aliquota(String sTaxa, boolean bTipoISS);

    /**
     *
     * @param sReportDescription
     * @return
     */
    public int EPSON_Config_Relatorio_Gerencial(String sReportDescription);

    /**
     *
     * @param bVinculado
     * @param sNumeroMeio
     * @param sDescricao
     * @return
     */
    public int EPSON_Config_Forma_Pagamento(boolean bVinculado,
            String sNumeroMeio, String sDescricao);

    /**
     *
     * @param sDescricao
     * @param piNumeroTotalizador
     * @return
     */
    public int EPSON_Config_Totalizador_NaoFiscal(String sDescricao,
            int piNumeroTotalizador);

    /**
     *
     * @return
     */
    public int EPSON_Config_Horario_Verao();

    /**
     *
     * @param sLinhas
     * @return
     */
    public int EPSON_Config_Espaco_Entre_Documentos(String sLinhas);

    /**
     *
     * @param sEspacos
     * @return
     */
    public int EPSON_Config_Espaco_Entre_Linhas(String sEspacos);

    /**
     *
     * @param bHabilita
     * @return
     */
    public int EPSON_Config_Habilita_Logotipo(boolean bHabilita);

    /**
     *
     * @param sDados
     * @param iTamDados
     * @param sLinha
     * @return
     */
    public int EPSON_Config_Logotipo(String sDados, int iTamDados, String sLinha);

    /**
     *
     * @param sDados
     * @return
     */
    public int EPSON_Config_Operador(String sDados);

    /**
     *
     * @param sDados
     * @param iReport
     * @return
     */
    public int EPSON_Config_OperadorEX(String sDados, int iReport);

    /**
     *
     * @param bHabilitado
     * @return
     */
    public int EPSON_Config_Corte_Papel(boolean bHabilitado);

    /**
     *
     * @param sVelocidade
     * @return
     */
    public int EPSON_Config_Serial_Impressora(String sVelocidade);

    /**
     *
     * @param sRazaoSocial
     * @param sLogradouro
     * @param sNumero
     * @param sComplemento
     * @param sBairro
     * @param sMunicipio
     * @param sCEP
     * @param sUF
     * @param sFax
     * @param sFone
     * @param sNomeContato
     * @return
     */
    public int EPSON_Config_Dados_Sintegra(String sRazaoSocial, String sLogradouro, String sNumero, String sComplemento, String sBairro, String sMunicipio, String sCEP, String sUF,
            String sFax, String sFone, String sNomeContato);

    /**
     *
     * @param bHabilitado
     * @return
     */
    public int EPSON_Config_Download_Segmentado_MFD(boolean bHabilitado);

    /**
     *
     * @param iAction
     * @return
     */
    public int EPSON_Config_Habilita_CAT52_Auto(int iAction);

    /**
     *
     * @param iAction
     * @return
     */
    public int EPSON_Config_Habilita_RJSSER16_Auto(int iAction);

    /**
     *
     * @param iAction
     * @return
     */
    public int EPSON_Config_Habilita_PAFECF_Auto(int iAction);

    /**
     *
     * @param sDeveloperCNPJ
     * @param sDeveloperIE
     * @param sDeveloperIM
     * @param sDeveloperName
     * @param sPAFName
     * @param sPAFVersion
     * @param sPAFMD5
     * @param sERVersion
     * @return
     */
    public int EPSON_Config_Dados_PAFECF(String sDeveloperCNPJ, String sDeveloperIE,
            String sDeveloperIM, String sDeveloperName, String sPAFName,
            String sPAFVersion, String sPAFMD5, String sERVersion);

    /**
     *
     * @param sLinha01
     * @param sLinha02
     * @return
     */
    public int EPSON_Config_Mensagem_Aplicacao(String sLinha01, String sLinha02);

    /**
     *
     * @param sLine01
     * @param sLine02
     * @return
     */
    public int EPSON_Config_Mensagem_Aplicacao_Auto(String sLine01, String sLine02);

    /**
     *
     * @param iAction
     * @return
     */
    public int EPSON_Config_Habilita_Sintegra_Auto(int iAction);

    /**
     *
     * @param bHabilita
     * @return
     */
    public int EPSON_Config_Habilita_EAD(boolean bHabilita);

    /**
     *
     * @param sSingular
     * @param sPlural
     * @return
     */
    public int EPSON_Cheque_Configurar_Moeda(String sSingular, String sPlural);

    /**
     *
     * @param sNumeroRegistro
     * @param sValorX
     * @param sValorY
     * @param sDescricao1X
     * @param sDescricao1Y
     * @param sDescricao2X
     * @param sDescricao2Y
     * @return
     */
    public int EPSON_Cheque_Configurar_Parametros1(String sNumeroRegistro, String sValorX,
            String sValorY, String sDescricao1X, String sDescricao1Y, String sDescricao2X,
            String sDescricao2Y);

    /**
     *
     * @param sNumeroRegistro
     * @param sParaX
     * @param sParaY
     * @param sCidadeX
     * @param sCidadeY
     * @param sOffsetDia
     * @param sOffsetMes
     * @param sOffsetAno
     * @param sAdicionalX
     * @param sAdicionalY
     * @return
     */
    public int EPSON_Cheque_Configurar_Parametros2(String sNumeroRegistro, String sParaX,
            String sParaY, String sCidadeX, String sCidadeY, String sOffsetDia, String sOffsetMes,
            String sOffsetAno, String sAdicionalX, String sAdicionalY);

    /**
     *
     * @param sNumeroRegistro
     * @param sValor
     * @param iCasasDecimais
     * @param sPara
     * @param sCidade
     * @param sDados
     * @param sTexto
     * @return
     */
    public int EPSON_Cheque_Imprimir(String sNumeroRegistro, String sValor, int iCasasDecimais,
            String sPara, String sCidade, String sDados, String sTexto);

    /**
     *
     * @param sNumeroRegistro
     * @param sValor
     * @param iCasasDecimais
     * @param sPara
     * @param sCidade
     * @param sDados
     * @param sTexto
     * @return
     */
    public int EPSON_Cheque_ImprimirEX(String sNumeroRegistro, String sValor, int iCasasDecimais,
            String sPara, String sCidade, String sDados, String sTexto);

    /**
     *
     * @return
     */
    public int EPSON_Cheque_Preparar_Endosso();

    /**
     *
     * @param sToX
     * @param sToY
     * @param iHorizontal
     * @return
     */
    public int EPSON_Cheque_Endosso_Estacao(String sToX, String sToY, int iHorizontal);

    /**
     *
     * @param sLinhaTexto
     * @return
     */
    public int EPSON_Cheque_Imprimir_Endosso(String sLinhaTexto);

    /**
     *
     * @return
     */
    public int EPSON_Cheque_Ejetar_Endosso();

    /**
     *
     * @return
     */
    public int EPSON_Cheque_Cancelar_Impressao();

    /**
     *
     * @param sToX
     * @param sToY
     * @param iHorizontal
     * @param sText
     * @return
     */
    public int EPSON_Cheque_Endosso_EstacaoEX(String sToX, String sToY,
            int iHorizontal, String sText);

    /**
     *
     * @param sToX
     * @param sToY
     * @param iHorizontal
     * @param sText
     * @param bEject
     * @return
     */
    public int EPSON_Cheque_Endosso_EstacaoCFG(String sToX, String sToY, int iHorizontal,
            String sText, boolean bEject);

    /**
     *
     * @param sMICR
     * @return
     */
    public int EPSON_Cheque_Ler_MICR(String sMICR);

    /**
     *
     * @return
     */
    public int EPSON_Impressora_Abrir_Gaveta();

    /**
     *
     * @return
     */
    public int EPSON_Impressora_Cortar_Papel();

    /**
     *
     * @param iLines
     * @return
     */
    public int EPSON_Impressora_Avancar_Papel(int iLines);

    /**
     *
     * @param sMensagem
     * @return
     */
    public int EPSON_Autenticar_Imprimir(String sMensagem);

    /**
     *
     * @return
     */
    public int EPSON_Autenticar_Reimprimir();

    /**
     *
     * @param sTexto
     * @return
     */
    public int EPSON_Display_Enviar_Texto(String sTexto);

    /**
     *
     * @param iAcao
     * @param iColuna
     * @param iLinha
     * @return
     */
    public int EPSON_Display_Cursor(int iAcao, int iColuna, int iLinha);

    /**
     *
     * @param iLinha
     * @return
     */
    public int EPSON_Display_Apagar_Texto(int iLinha);

    /**
     *
     * @param iBrilho
     * @param iLampejo
     * @param iRolagem
     * @return
     */
    public int EPSON_Display_Configurar(int iBrilho, int iLampejo, int iRolagem);

    /**
     *
     * @param iAcao
     * @return
     */
    public int EPSON_Display_Inicializar(int iAcao);

    /**
     *
     * @param hHandle
     * @return
     */
    public int EPSON_Sys_Informar_Handle_Janela(Handler hHandle);

    /**
     *
     * @return
     */
    public int EPSON_Sys_Atualizar_Janela();

    /**
     *
     * @param sArquivo
     * @param iTimeout
     * @param bBloqueiaEntradas
     * @param bSincrono
     * @return
     */
    public int EPSON_Sys_Aguardar_Arquivo(String sArquivo, int iTimeout,
            boolean bBloqueiaEntradas, boolean bSincrono);

    /**
     *
     * @param bBloqueiaEntradas
     * @return
     */
    public int EPSON_Sys_Bloquear_Entradas(boolean bBloqueiaEntradas);

    /**
     *
     * @param sPath
     * @param iAction
     * @return
     */
    public int EPSON_Sys_Log(String sPath, int iAction);
}

ERRO:

An unrecoverable stack overflow has occurred.
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_STACK_OVERFLOW (0xc00000fd) at pc=0x061949e5, pid=4748, tid=4804
#
# JRE version: 6.0_21-b07
# Java VM: Java HotSpot(TM) Client VM (17.0-b17 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [InterfaceEpson.dll+0x1649e5]
#
# An error report file with more information is saved as:
# D:\Knop\Sistema\Toth\hs_err_pid4748.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

E

EXCEPTION_STACK_OVERFLOW - veja se você pode passar um parâmetro -Xss um pouco maior para seu programa Java. Tipicamente um programa em C esperaria um stack de 1MB por thread, mas programas Java normalmente reservam bem menos (128k). Tente usar -Xss1M e vá aumentando até que o erro pare de aparecer.

S

Bah…

não ha que resolveu… este esquema…

Criado 28 de maio de 2009
Ultima resposta 26 de nov. de 2010
Respostas 5
Participantes 4