Ir para conteúdo
  • Cadastre-se

dev botao

ACBrPosPrinter - Erro timeout mesmo sem impressora, modo texto


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1023 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 para o comentário
Compartilhar em outros 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.

  • Curtir 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 para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • 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

  • Curtir 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 para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1023 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...