none
Erro A TCP error (10093: Either the application has not called WSAStartup, or WSAStartup failed) Bematech Versão 5.10.6.5 RRS feed

  • Pergunta

  • Bom dia!

    Estou carregando a Dll da Bematech Dinamicamente da seguinte forma para verificar se a impressora está ligada:

     

    dll.Carregar("BemaFi32.dll"
    );<br/>
    <br/>
       VerificaImpressoraLigada verificaImpressoraLigada = (VerificaImpressoraLigada)dll.RetornaMetodo("Bematech_FI_VerificaImpressoraLigada"
    , typeof
    (VerificaImpressoraLigada));<br/>
    <br/>
       int
     retorno = verificaImpressoraLigada();<br/>
    <br/>
       dll.Descarregar();
    

     

    A forma de carregar está assim:

     

     internal
     class
     ControlarDll : IControlarDll
     {
      private
     IntPtr PonteiroDll { get
    ; set
    ; }
    
      internal
     ControlarDll()
      {
    
      }
    
      public
     void
     Carregar(String nomeDll)
      {
       this
    .PonteiroDll = NativeMethods.LoadLibrary(nomeDll);
      }
    
      public
     void
     Descarregar()
      {
       if
     (this
    .PonteiroDll != null
    )
        NativeMethods.FreeLibrary(this
    .PonteiroDll);
      }
    
      [SuppressMessage("Microsoft.Security"
    , "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands"
    )]
      public
     Delegate RetornaMetodo(String nome, Type typeDelegateMetodo)
      {
       IntPtr intPtr = NativeMethods.GetProcAddress(this
    .PonteiroDll, nome);
       return
     Marshal.GetDelegateForFunctionPointer(intPtr, typeDelegateMetodo);
      }
     }
    
     internal
     static
     class
     NativeMethods
     {
      [DllImport("kernel32.dll"
    , CharSet = CharSet.Ansi, BestFitMapping = false
    , ThrowOnUnmappableChar = true
    )]
      internal
     static
     extern
     IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)] String lpLibFileName);
    
      [DllImport("kernel32.dll"
    , CharSet = CharSet.Ansi, BestFitMapping = false
    , ThrowOnUnmappableChar = true
    )]
      [return
    : MarshalAs(UnmanagedType.Bool)]
      internal
     static
     extern
     Boolean FreeLibrary([In] IntPtr hModule);
    
      [DllImport("kernel32.dll"
    , CharSet = CharSet.Ansi, BestFitMapping = false
    , ThrowOnUnmappableChar = true
    )]
      internal
     static
     extern
     IntPtr GetModuleHandle([MarshalAs(UnmanagedType.LPStr)] String lpModuleName);
    
      [DllImport("kernel32.dll"
    , CharSet = CharSet.Ansi, BestFitMapping = false
    , ThrowOnUnmappableChar = true
    )]
      internal
     static
     extern
     IntPtr GetProcAddress([In] IntPtr hModule, [In, MarshalAs(UnmanagedType.LPStr)] string
     lpProcName);
     }
    

     

    Quando eu utilizo a versão 5.10.6.5 ocorre o seguinte erro, A TCP error (10093: Either the application has not called WSAStartup, or WSAStartup failed), ao iniciar um serviço WCF meu, que não tem nada a ver com ECF.

     

    Quando volto a versão para 5.10.4.12 não ocorre este erro.

    Gostaria de saber se alguém já passou por isso. Liguei na Bematech e disseram que o problema não é na DLL. Como que não é problema na DLL se com a versão antiga funciona.

    Obrigado.

     


     

    terça-feira, 29 de junho de 2010 12:10

Respostas

Todas as Respostas

  • oi, desculpe, nunca vi esse erro antes, mas posso sugerir que vc tente usar a BEMAFI32.DLL mais recente, versão 5.10.6.8, de abril de 2010. Tambem coloque na pasta do Windows as outras DLL auxiliares, Bematech.dll, BemaMFD.dll e BemaMFD2.dll.

    Verifique tambem se o arquivo BemaFI32.ini está com todos os parâmetros atualizados e se tem algum deles preenchido incorretamente.

    Não tenho certeza se isso vai resolver, mas fica como dica.

    Boa sorte. Abraços.


    Se foi útil para você, então Marque para ajudar outras pessoas.
    terça-feira, 29 de junho de 2010 18:00
  • Valeu pela dica, mas com essa versão dá o mesmo erro :(

    Meu ini está assim:

    [Sistema]
    Porta=COM3
    Path=C:\
    Status=0
    Retorno=0
    StatusFuncao=1
    ControlePorta=1
    ModeloImp=BEMATECH
    ConfigRede=0
    ModoGaveta=1
    Log=1
    LogDiario=0
    CrLfVinculado=0
    CrLfGerencial=0
    TimeOutGerencial=40
    
    [MFD]
    Impressora=0
    StatusErro=1
    TimeOutZ=99
    
    Olha só minha situação. O cliente falou pra mim que quer atualizar a versão da DLL e eu não posso atualizar, devido este problema.

    E o suporte da Bematech disse que o problema não é DLL.

    Tem certas coisas que são complicadas.

    T+

    terça-feira, 29 de junho de 2010 18:38
  • A versão mais nova da DLL é importante para que possa usar as novas funções implementadas.

    Qual o modelo da impressora fiscal que vc está usando ? É térmica ? Se for térmica ou MP25FI, mude no arquivo BemaFI32.ini, na seção [MFD], o parâmetro para Impressora=1

    Se a impressora não for térmica, então não precisa atualizar a DLL, pois as funções novas só funcionam nas térmicas.

    Com o parâmetro Log=1, veja se foi criado um arquivo BemaFI32.LOG em C:\, abra e veja se consegue identificar algum erro nele.

     


    Se foi útil para você, então Marque para ajudar outras pessoas.
    terça-feira, 29 de junho de 2010 19:07
  • Boa tarde!

    MP20 FI II, já ativei o log, mas não tem nada a anormal.

    T+

    terça-feira, 29 de junho de 2010 19:12
  • Certo, sua impressora é matricial e vc está usando a versão 5.10.4.12 da DLL.

    De acordo com documentação da Bematech, as alterações nas versões seguintes foram:

        *** versão 5.10.6.1 ***

    - Implementada as seguintes funções para o PAF-ECF:

    . Bematech_FI_AbreDocumentoAuxiliarVenda
    . Bematech_FI_UsaDocumentoAuxiliarVenda
    . Bematech_FI_FechaDocumentoAuxiliarVenda
    . Bematech_FI_TerminaFechamentoCupomPreVenda
    . Bematech_FI_DAVEmitidosRelatorioGerencial
    . Bematech_FI_DAVEmitidosArquivo
    . Bematech_FI_LeituraMemoriaFiscalSerialDataPAFECF
    . Bematech_FI_LeituraMemoriaFiscalSerialReducaoPAFECF
    . Bematech_FI_EspelhoMFD
    . Bematech_FI_ArquivoMFD
    . Bematech_FI_IdentificacaoPAFECF
    . Bematech_FI_GrandeTotalCriptografado
    . Bematech_FI_GrandeTotalDescriptografado
    . Bematech_FI_AbreRelatorioMeiosPagamento
    . Bematech_FI_UsaRelatorioMeiosPagamento

    - Implementado controle para a emissão do total de ICMS no cupom fiscal, conforme exigência da legislação do Cupom Mania do estado do RJ.

        *** versão 5.10.6.5 ***

    - Funções modificadas:

    . Bematech_FI_AbreDocumentoAuxiliarVenda
    . Bematech_FI_DAVEmitidosRelatorioGerencial
    . Bematech_FI_EspelhoMFD
    . Bematech_FI_ArquivoMFD
    . Bematech_FI_IdentificacaoPAFECF
    . Bematech_FI_AbreRelatorioMeiosPagamaneto
    . Bematech_FI_UsaRelatorioMeiosPagamaneto
    . Bematech_FI_DataHoraGravacaoUsuarioSWBasicoMFAdicional

    - Funções implementadas:

    . Bematech_FI_FechaRelatorioMeiosPagamento
    . Bematech_FI_NomeiaRelatorioMeiosDePagamento
    . Bematech_FI_NomeiaRelatorioDocumentoAuxiliarDeVenda
    . Bematech_FI_NomeiaRelatorioDAVEmitidos
    . Bematech_FI_NomeiaRelatorioIdentificacaoPAFECF
    . Bematech_FI_NomeiaRelatoriosPAFECF

        *** versão 5.10.6.8 ***

    . Correções na função Bematech_FI_GrandeTotalCriptografado para Bematech Monitor
    . Correções na função Bematech_FI_GeraRegistrosCAT52MFDEx para efetuar corretamente a assinatura digital dos arquivos gerados.

     

    A maioria dessas funções é apenas para impressoras fiscais térmicas e tambem se vc for usar funções com relatórios específicos do PAF-ECF. Mas vc pode usar um Relatório Gerencial normal para isso. Ou seja, acho que no seu caso vc não precisaria atualizar a versão da DLL. Se está funcionando nesta versão 5.10.4.12, é melhor deixar assim.

    Tente tambem fazer um teste em outro computador. Pode ser algum problema da versão do Windows ou algum software instalado neste que dá erro.


    Se foi útil para você, então Marque para ajudar outras pessoas.
    terça-feira, 29 de junho de 2010 19:23
  • Bom dia!

    Aqui eu estou testando com matricial, mas tenho clientes com matriciais e térmicas. O sistema está homologado para qualquer tipo de ECF Bematech.

    Já testei em 7 computadores, com vários tipos de windows e configurações.

    Mas até agora infelizmente nada.

    Obrigado pela atenção. Isso que você nem é suporte da Bematech e está tentando me ajudar. Muito obrigado mesmo.

    quarta-feira, 30 de junho de 2010 11:36
  • Olá Fábio,

    Temos um exemplo em Delphi que faz a carga da dll dinamicamente e não tivemos este problema que vc relatou. A versão que usamos é sempre a mais atual, no caso a 5.10.6.8. Talvez seja a forma que vc está usando para carregar a dll, que nesta versão está apresentando o erro.

    Vc consegue me enviar por email a rotina aonde vc carregada a dll, para eu testar aqui? Vc está usando C#, certo?

    Ats,

    André Munhoz
    andre.munhoz@bematech.com.br

    quarta-feira, 30 de junho de 2010 13:48
  • Bom dia, André!

    Obrigado pela atenção.

    Estou utilizando C#.

    Vou enviar no seu e-mail um exemplo que está dando erro.

    Blz?

    quarta-feira, 30 de junho de 2010 14:23
  • Bom dia, André!

    Já enviei no seu e-mail um exemplo que acontece o erro.

    Vc poderia confirmar pra mim se chegou corretamente?

    Obrigado!

    quarta-feira, 30 de junho de 2010 14:49
  • Oi Fábio, recebi e conforme lhe comentei no email, vamos verificar o que acontece.

    Abraços,

    André Munhoz

    quarta-feira, 30 de junho de 2010 21:54
  • Boa tarde!

    André,

    A DLL que vc envio funcionou.

    Estamos no aguardo do novo release.

    T+

    segunda-feira, 5 de julho de 2010 18:11
  • Oi Fábio,

    Lhe enviei a versão release.

    Abraços,

    André Munhoz
    andre.munhoz@bematech.com.br

    quarta-feira, 7 de julho de 2010 14:25
  • Fabio,

    Estou com o mesmo problema. Estou com a ultima versao da DLL disponibilizada pela Bematech. O pior é que em algumas maquinas funciona e outras não. Ocorre o mesmo erro relatado neste post.

    Alguma sugestão?

     

    Grato,

     

    Thiago

    domingo, 12 de junho de 2011 23:26
  • Bom dia!

    Deixei no sendspace a versão que eles passaram pra mim e deu certo.

    http://www.sendspace.com/file/kmbvap

    Se a versão que vc tem ai é mais nova, quer dizer que o problema voltou :(

    T+

    segunda-feira, 13 de junho de 2011 14:13