Ir para conteúdo
  • Cadastre-se

Sensum

Membros
  • Total de ítens

    1
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Sensum's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputação

  1. Boa tarde, Estamos começando um novo projeto para implementação do PAF em C#, e estou em testes para utilizar o ACBr.NET. Verifiquei que o ACBr32.DLL não possui as funcionalidades para o Espelho MFD, então baixei os fontes do SVN e estou tentando trazer essa funcionalidade da DLL do Delphi para o ACBr.NET. O que eu fiz até o momento foi o seguinte: Utilizando o Lazarus, eu alterei o arquivo ACBrECFDll.PAS incluindo a seguinte função: Function ECF_EspelhoMFDArquivo( const ecfHandle: PECFHandle; const DataInicial : double; const DataFinal: double; const NomeArquivo: PChar ) : Integer ;{$IFDEF STDCALL} stdcall; {$ENDIF} {$IFDEF CDECL} cdecl; {$ENDIF} export; var Documentos: TACBrECFTipoDocumentoSet; begin Documentos := [TACBrECFTipoDocumento.docNenhum]; if (ecfHandle = nil) then begin Result := -2; Exit; end; try ecfHandle^.ECF.EspelhoMFD_DLL( DataInicial, DataFinal, NomeArquivo, Documentos ); Result := 0; except on exception : Exception do begin ecfHandle^.UltimoErro := exception.Message; Result := -1; end end; end; e em seguida joguei no "Exports" o nome da função. Com isso eu consegui importar o essa função no .NET, onde executei as seguintes alterações (Utilizando o Visual Studio 2010): No ACBrDll.cs eu incluí as seguintes linhas: [DllImport( "ACBr32.dll", CallingConvention = CallingConvention.Cdecl )] public static extern int ECF_EspelhoMFDArquivo( IntPtr ecfHandle, double dataInicial, double dataFinal, string nomeArquivo ); em seguida, no arquivo ACBrECF.cs, inclui as seguintes linhas: public void EspelhoMFD( DateTime dataInicial, DateTime dataFinal, string nomeArquivo ) { int ret = ACBrDll.ECF_EspelhoMFDArquivo( this.handle, dataInicial.ToOADate(), dataFinal.ToOADate(), ToUTF8( nomeArquivo ) ); CheckResult( ret ); } depois dessas alterações eu tentei executar esse método no projeto ACBr.Net, alterando o arquivo MainForm.cs: public void Ativar() { try { acbrECF.Modelo = (ModeloECF)modeloComboBox.SelectedItem; acbrECF.Porta = (string)portaComboBox.SelectedItem; . . . WriteResp("Ativado: OK!"); acbrECF.EspelhoMFD( new DateTime( 2012, 01, 01 ), new DateTime( 2012, 01, 31 ), @"TESTE.TXT" ); WriteResp( "Gerado espelho MFD" ); } catch (Exception exception) { ativarCheckButton.Checked = false; messageToolStripStatusLabel.Text = "Exception"; descriptionToolStripStatusLabel.Text = exception.Message; } } Está ocorrendo o seguinte, o sistema conecta com a impressora e ao executar o processo, a DLL da bematech gera o log de erro abaixo: 2012-08-08 15:58:29:225 - ----------------------------------------------------------------------- 2012-08-08 15:58:29:227 - Bematech_FI_LeInformacoesConfiguracao 2012-08-08 15:58:29:229 - Versão BemaFI32.Dll: 6,1,0,0 2012-08-08 15:58:29:231 - Versão BemaMFD.dll: 2,1,0,0 2012-08-08 15:58:29:233 - Versão BemaMFD2.dll: 2,1,0,0 2012-08-08 15:58:29:235 - path: C:\TEMP\ 2012-08-08 15:58:29:236 - Log: 1 2012-08-08 15:58:29:237 - LogDiario: 1 2012-08-08 15:58:29:239 - Status: 0 2012-08-08 15:58:29:240 - Retorno: 0 2012-08-08 15:58:29:242 - ControlePorta: 1 2012-08-08 15:58:29:243 - StatusFuncao: 0 2012-08-08 15:58:29:245 - ModeloImp: BEMATECH 2012-08-08 15:58:29:247 - ModoGaveta: 0 2012-08-08 15:58:29:248 - EmulMFD: 0 2012-08-08 15:58:29:250 - StatusCheque: 0 2012-08-08 15:58:29:252 - Porta: COM3 2012-08-08 15:58:29:253 - StatusErro: 1 2012-08-08 15:58:29:255 - TimeOutZ: 99 2012-08-08 15:58:29:257 - Impressora: 1 2012-08-08 15:58:29:258 - TimeOutGerencial: 40 2012-08-08 15:58:29:260 - CrLfVinculado: 0 2012-08-08 15:58:29:262 - Gerencial: 0 2012-08-08 15:58:29:264 - ForceWTSClient: 1 2012-08-08 15:58:29:265 - RetriesWTSCmd: 3 2012-08-08 15:58:29:267 - Software House - COO: 0 2012-08-08 15:58:29:269 - Software House - NumeroAplicativo: 0 2012-08-08 15:58:29:270 - Software House - CNPJ: 0 2012-08-08 15:58:29:272 - Software House - IE: 0 2012-08-08 15:58:29:274 - Software House - IM: 0 2012-08-08 15:58:29:276 - Software House - RazaoSocial: 0 2012-08-08 15:58:29:278 - Software House - NomeAplicativo: 0 2012-08-08 15:58:29:280 - Software House - Versao: 0 2012-08-08 15:58:29:282 - Software House - Linha1: 0 2012-08-08 15:58:29:284 - Software House - Linha2: 0 2012-08-08 15:58:29:286 - ECF - IM: 0 2012-08-08 15:58:29:288 - ECF - UF: 0 2012-08-08 15:58:29:290 - GerarRFD: 0 2012-08-08 15:58:29:292 - CalculoIcmsCupom: 0 2012-08-08 15:58:29:293 - HabilitaRFDImpMFD: 0 2012-08-08 15:58:29:295 - Retorno Bematech_FI_LeInformacoesConfiguracao: OK 2012-08-08 15:58:31:922 - ----------------------------------------------------------------------- 2012-08-08 15:58:31:924 - Bematech_FI_EspelhoMFD 2012-08-08 15:58:31:926 - Parâmetros: C:\TEMP\TESTE.TXT|01/01/2012|31/01/2012|D|1||| 2012-08-08 15:58:31:928 - Bematech_FI_DownloadMFD 2012-08-08 15:58:31:930 - Parâmetros: 1|01/01/2012|31/01/2012|C:\TEMP\Download.MFD|0 2012-08-08 15:58:31:940 - Bematech_FI_ModeloImpressora 2012-08-08 15:58:31:942 - Bematech_FI_NumeroSerie 2012-08-08 15:58:44:133 - Timout finalizado e ACK não lido - Erro 003 2012-08-08 15:58:44:135 - Qtd bytes ler: 18 2012-08-08 15:58:44:138 - Qtd bytes lidos: 0 2012-08-08 15:58:44:152 - Retorno Bematech_FI_NumeroSerie: 0 - Erro de comunicacao 2012-08-08 15:58:44:155 - Retorno Bematech_FI_ModeloImpressora: 0 2012-08-08 15:58:44:157 - Retorno Bematech_FI_EspelhoMFD: -1 - Erro de execucao na funcao Bematech_FI_DownloadMFD: Pelo que vi está faltando algumas informações como a chave privada e pública, além disso o final do log informa que está havendo um erro de comunicação, e nesse ponto eu estou empacado pois não sei exatamente o que fazer pois eu não entendo muito da sintaxe e dos comandos do Delphi, onde utilizei o comando LeituraMemoriaFiscalSerial, que está disponível no ACBr.Net, como modelo para trazer a função do Espelho de MFD para o ACBr.Net.
×
×
  • 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...
The popup will be closed in 10 segundos...