Jump to content

dev botao

ACBrPosPrinter - Erro timeout mesmo sem impressora, modo texto


Go to solution Solved by Daniel Simoes,
  • Este tópico foi criado há 1021 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

 Bom tarde.

Devido a revisão: 20657 na unit: ACBrSerial\ACBrPosPrinter.pas que inseriu no método Configurar uma linha deletando o evento "FOnEnviarStringDevice", perdi o controle do evento, pois esse método de configurar é executado logo após ativar a PosPrinter.

procedure TACBrPosPrinterClass.Configurar;
begin
  fpPosPrinter.OnEnviarStringDevice := Nil;
end;

o PosPrinter está em modo texto, e não possuo uma impressora, estou executando testes do o ECFVirtual, com isso recebo erro de timeout, pois o PosPrinter tentar se comunicar com uma impressora que não existe.

Ao ativar o ECF / Virtual, ele automaticamente ativa o PosPrinter, porem no arquivo: "acbrecf001.buf" possui um conteúdo que deve ter ficado de alguma outra mensagem de erro.

Ao ativar o PosPrinter, ele executa o método Ativar, que dentro dele tem o método Configurar, ao executar o Configurar, deleta a instancia do evento OnEnviarStringDevice, ao ativar, é carregado o conteúdo no buffer, ele tenta imprimir esse buffer e executa o método: "EnviarStringDevice", e como o evento foi deletado não é possível controlar através do evento se é ou não para enviar a string para o device.

 

No Demo do ACBr ECF não consegui que o erro ocorresse de primeira, porem, ao abrir o Demo, ativar o ECF Virtual NFCe, desativar, colocar o arquivo: "acbrecf001 - Copia.buf" no lugar do arquivo: "acbrecf001.buf" e clicar em ativar, vai ocorrer um erro de timeout.

o evento do PosPrinter está da seguinte forma:

procedure TForm1.ACBrPosPrinter1EnviarStringDevice(const ALogLine: string; var Tratado: Boolean);
begin
  Tratado := True;
end;

com esse evento, o PosPrinter não era para tentar enviar a string para o device.

 

segue o código fonte do exemplo que configura o componente PosPrinter para não se comunicar com a impressora física.

ACBrECF - Delphi.rar

Link to comment
Share on other sites

  • Consultores
18 horas atrás, ti_centrodata disse:

 Bom tarde.

Devido a revisão: 20657 na unit: ACBrSerial\ACBrPosPrinter.pas que inseriu no método Configurar uma linha deletando o evento "FOnEnviarStringDevice", perdi o controle do evento, pois esse método de configurar é executado logo após ativar a PosPrinter.

procedure TACBrPosPrinterClass.Configurar;
begin
  fpPosPrinter.OnEnviarStringDevice := Nil;
end;

o PosPrinter está em modo texto, e não possuo uma impressora, estou executando testes do o ECFVirtual, com isso recebo erro de timeout, pois o PosPrinter tentar se comunicar com uma impressora que não existe.

Ao ativar o ECF / Virtual, ele automaticamente ativa o PosPrinter, porem no arquivo: "acbrecf001.buf" possui um conteúdo que deve ter ficado de alguma outra mensagem de erro.

Ao ativar o PosPrinter, ele executa o método Ativar, que dentro dele tem o método Configurar, ao executar o Configurar, deleta a instancia do evento OnEnviarStringDevice, ao ativar, é carregado o conteúdo no buffer, ele tenta imprimir esse buffer e executa o método: "EnviarStringDevice", e como o evento foi deletado não é possível controlar através do evento se é ou não para enviar a string para o device.

 

No Demo do ACBr ECF não consegui que o erro ocorresse de primeira, porem, ao abrir o Demo, ativar o ECF Virtual NFCe, desativar, colocar o arquivo: "acbrecf001 - Copia.buf" no lugar do arquivo: "acbrecf001.buf" e clicar em ativar, vai ocorrer um erro de timeout.

o evento do PosPrinter está da seguinte forma:

procedure TForm1.ACBrPosPrinter1EnviarStringDevice(const ALogLine: string; var Tratado: Boolean);
begin
  Tratado := True;
end;

com esse evento, o PosPrinter não era para tentar enviar a string para o device.

 

segue o código fonte do exemplo que configura o componente PosPrinter para não se comunicar com a impressora física.

ACBrECF - Delphi.rar 112 kB · 0 downloads

Bom dia.

Estamos avaliando o caso.

  • Like 1

[]'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.
Link to comment
Share on other sites

  • 2 weeks later...
  • Fundadores

Desculpe pela demora na analise desse caso...

Essa modificação foi introduzida, porque as novas "Classes Externas", sobrescrevem internamente, o OnEnviarStringDevice

Exemplo:

procedure TACBrPosPrinterGEDI.Configurar;
begin
  fpPosPrinter.Porta := 'NULL';
  fpPosPrinter.OnEnviarStringDevice := ImprimirGEDI;
  fpPosPrinter.PaginaDeCodigo := TACBrPosPaginaCodigo.pcUTF8;
end;

e quando mudávamos o modelo, após o uso de uma classe externa, o Evento da Classe externa continuaria sendo acionado...

 

Apliquei uma possível correção, para o problema... Por favor teste com o fonte em anexo...

ACBrPosPrinter.pas

  • Like 2
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.

Link to comment
Share on other sites

  • Este tópico foi criado há 1021 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...