Usuário com melhor resposta
Erro A TCP error (10093: Either the application has not called WSAStartup, or WSAStartup failed) Bematech Versão 5.10.6.5

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.
Respostas
-
Oi Fábio, recebi e conforme lhe comentei no email, vamos verificar o que acontece.
Abraços,
André Munhoz
- Marcado como Resposta Fábio Vendramin Guimarães Rosini segunda-feira, 5 de julho de 2010 18:11
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. -
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+
-
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. -
-
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. -
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.
-
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 -
-
-
Oi Fábio, recebi e conforme lhe comentei no email, vamos verificar o que acontece.
Abraços,
André Munhoz
- Marcado como Resposta Fábio Vendramin Guimarães Rosini segunda-feira, 5 de julho de 2010 18:11
-
-
-
-