Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3844 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

esta dando o erro ao gerar o comando ECF.PafMF_MFD_Espelho(dtDatIni, dtDatFim, sv.FileName);

a seguinte mensagem

Erro ao executar xBematech_FI_ArquivoMFD.

Cod.: -1 - Erro de Execução na Função. Verifique!

tanto na minha aplicação e no de teste da acbr

por favor alguma orientação

Atenciosamente

marcelo

Postado

Também estava com sérios problemas nestas funções do ACBr que chamam as DLLs da Bematech:

ACBr: PafMF_MFD_Espelho => DLL: Bematech_FI_EspelhoMFD

ACBr: PafMF_MFD_Cotepe1704 => DLL: Bematech_FI_ArquivoMFD

ACBr: PafMF_LMFC_Cotepe1704 => DLL: Bematech_FI_ArquivoMFD

O meu padrão é sempre deixar todas as DLLs e o arquivo INI na pasta da aplicação, não coloco nada em outras pastas (Windows ou System32):

- BemaFI32.dll (6.1.0.0)

- BemaMFD.dll (2.1.0.0)

- BemaMFD2.dll (2.1.0.0)

- BemaMFD2_MP4000THFI.dll (2.1.0.0)

- sign_bema.dll

- BemaFI32.ini

- openssl.exe

- libeay32.dll (0.9.8.1)

- ssleay32.dll (0.9.8.1)

Deixando o INI na pasta do aplicativo, o ACBr modifica automaticamente o PATH ao executar a função "AbrePortaSerialDLL".

Isso funciona somente na PRIMEIRA execução do aplicativo. Após o INI original ter sido modificado, caso eu fechasse o aplicativo e iniciasse novamente, ao tentar executar as funções, lá vinha o erro mencionado.

Explicando melhor...

PRIMEIRA EXECUÇÃO:

- Path = C:\

ao chamar as funções...

- Path = diretório conforme parâmetro "NomeArquivo"

APÓS PRIMEIRA EXECUÇÃO:

- Path = diretório conforme parâmetro "NomeArquivo" da última execução

ao chamar as funções...

- Path = diretório conforme parâmetro "NomeArquivo"

Então, como a PRIMEIRA EXECUÇÃO sempre dava certo, tive que forçar a gravação do PATH = C:\ a cada inicialização do ECF. Meu código ficou mais ou menos assim:

ACBrECF.Ativar;


Ini := TIniFile.Create( ExtractFilePath( Application.ExeName ) + 'BemaFI32.ini' );

try

  Ini.WriteString( 'Sistema', 'Porta', ECF.Porta );

  Ini.WriteString( 'Sistema', 'Path', 'C:\' );           // <= AQUI ESTÁ A "GAMBIARRA"

finally

  Ini.Free;

end;{try}

Pronto. Todos os problemas resolvidos.

P.S. Tentei todas as formas possíveis antes desta solução (INI no System32, gravando ou não o PATH, etc etc). A única forma que funcionou foi esta citada acima.

Utilizo aqui uma MP-3000 TH FI.

Leandro Gobbo

Leandro Gobbo

  • Consultores
Postado

Também não entendi. Qual o objetivo de alterar o Path para C:\ ao invés da pasta do programa?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Por algum motivo obscuro (falha na DLL da bematech), se eu alterar o PATH=pasta do programa a cada inicialização, ou deixar somente o ACBr alterar o path lá na função "AbrePortaSerialDLL", as funções que utilizam as DLLs da bematech não funcionam.

Somente funciona se eu alterar o PATH=C:\ a cada inicialização. Posteriormente o próprio ACBr modifica este path para a pasta do programa, mas ai já não há mais problemas e tudo continua funcionando normalmente.

Ou seja, caso o INI esteja na pasta do programa, sempre tem que ser iniciado com o PATH=C:\

Depois, com o programa aberto, este PATH pode ser alterado normalmente (como faz o ACBr "AbrePortaSerialDLL").

Mas a cada inicialização do aplicativo sou obrigado a resetar o PATH = C:\ novamente.

A impressão que dá é que a DLL precisa do PATH=C:\ na primeira função a ser executada. Depois esse PATH pode ser mudado sem interferir nas funções da DLL.

É esquisito, mas aqui foi o único jeito que funcionou para continuar deixando o INI na pasta do programa.

Leandro Gobbo

  • Fundadores
Postado

Gobbo,

A DLL da Bamatech gera um Log... você poderia anexa-lo ? Talvez no Log da DLL contenha informações mais detelhadas sobre o problema...

Em todo caso, se houver um Bug na DLL precisamos reporta-lo para eles corrigirem...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

OK. No momento estou sem acesso a impressora física MP-3000. No emulador este log não é confiável.

Mas a noite consigo gerar os logs e posto aqui para debatermos.

Leandro Gobbo

Leandro Gobbo

Postado

Daniel

Com o PATH=pasta do programa, quando tento gerar o PafMF_LMFC_Cotepe1704, os arquivos de log da Bematech não são criados:

- BematechXXX.log

- BemaMFD2.log

O erro trava a minha aplicação fechando-a automaticamente.

Mas o log do ACBr é gerado até a linha abaixo:

-- 01:26:48 ArquivoMFD_DLL( 01/03/2012 , 03/03/2012 , C:\Documents and Settings\Priori\Meus documentos\Priori\Projetos\EstoquePDV\Exe\MenuFiscal\BE070771200200000210_01032012_03032012_LMFC_AtoCotepe1704.txt ) 

            TX -> [STX][ENQ][NUL][FS]#[11]J[NUL]

   01:26:48 RX <- [NUL][1][NUL][NUL][NUL][NUL]

A aplicação trava na chamada da função "LoadDLLFunctions", gera uma mensagem de "Exceção desconhecida" e fecha meu aplicativo.

Alguma ideia do que seja?

Leandro Gobbo

Leandro Gobbo

Postado

Régys

Sim, já tentei de tudo que foi jeito:

- somente o INI no System32 e as DLLs na pasta do programa;

- tudo no System32 (INI + DLLs);

- tudo na pasta do programa (INI + DLLs).

De qualquer jeito acontece o mesmo erro do meu post anterior.

Parece ser problema no tamanho do PATH configurado, que extrapola alguma quantidade máxima de caracteres.

Por isso que quando inicio com o PATH=C:\ tudo funciona perfeitamente.

Leandro Gobbo

P.S. O log gerado é da função ArquivoMFD, mas esse erro também acontece com o EspelhoMFD (título e objeto deste tópico). Ambas usam as DLLs da Bematech.

As outras funções que usam comunicação direta via porta serial não ocorrem problemas, posso gerar os arquivos em qualquer pasta sem erros.

Leandro Gobbo

Postado

O interessante é que na minha última homologação em jan/2011, com a versão do ACBr e as DLLs da Bematech daquela época, tudo funcionava sem esse problema.

Vai entender...

Mas obrigado pela atenção. Somente tive a intenção de alertar algum usuário que tenha o mesmo problema que este meu.

Leandro Gobbo

Leandro Gobbo

  • Consultores
Postado

Talvez o problema não seja o tamanho, mas que o caminho contém espaços.

Já tive um problema assim antes, só não me lembro se foi com a DLL da Bematech... Seria o caso de testar.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Pessoal, acompanhando as conversas, estou tentando utilizar essa mesma função "PafMF_MFD_Espelho" no ACBR monitor, e me retorna o erro "Erro ao carregar a função Bematech_FI_abrePortaSerial de Bemafi32.dll". Vi que o pessoal comenta para atualizar as DLLs da bematech, mas no caso do Monitor, onde deve ser atualizado essas DLLs? Um detalhe é que estou utilizando o Emulador da Bematech, mas funciona tudo sem problemas. Outro detalhe é que o mesmo problema acontece no ECFTeste.exe. A versão do meu Monitor é a 0.9.9b.

Abraços

  • Consultores
Postado

De acordo com a Bematech as funções Espelho MFD, Arquivo MFD são suportadas pelo Emulador sim.

Mas devem ser feitas pela porta serial (virtual ou física) e o arquivo INI da Bematech(BemaFI32.ini) deve estar configurado com a chave EmulMFD em 0.

fonte:http://partners.bematech.com.br/forum/viewtopic.php?f=8&t=6195

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Estou com o mesmo problema "Erro ao executar bematech_fi_espelhoMFD cod.: -1 Erro de execução na função. Verifique!". Estranho que antes de atualizar as dll´s, o ECFTeste.exe retornava o erro na função bematech_fi_abreportaserial, agora ele retorna esse daí. Baixei os arquivos do link acima e copiei todos para a basta do acbr monitor, mas o erro persiste.

Postado

Regys, desculpe mas, eu não entendi muito bem. O nome do arquivo não seria BemaFI32.ini? O que deve ser verificado nesse arquivo? A atualização das DLL´s eu já fiz, porém, deixei tudo dentro da pasta do ACBR MOnitor.

Abraço

  • Este tópico foi criado há 3844 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...