Ir para conteúdo
  • Cadastre-se

Sensum

Membros
  • Total de ítens

    1
  • Registro em

  • Última visita

Tudo que Sensum postou

  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.