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á 1323 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

 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

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

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.

  • Este tópico foi criado há 1323 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...
The popup will be closed in 10 segundos...