Problemas com JNA

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!!

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 ) ?

São os seguintes métodos:

EPSON_RelatorioFiscal_Abrir_Dia (que nem parâmetros tem)
EPSON_RelatorioFiscal_RZEx
EPSON_Sys_Log

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.

[code]/**

  • 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 já 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);
      }
      [/code]

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™ 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.

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.

Bah…

não ha que resolveu… este esquema…