Ir para conteúdo
  • Cadastre-se

dev botao

PosPrinter Reconectar impressora


fabiofranzini
Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1913 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Ola, boa tarde a todos. 

Estou precisando tratar uma exceção, o cenário é o seguinte , o componente PosPrinter esta ativo e funcionando, o usuário desliga a impressora, após ligar a impressora tentei fazer a "reconexão" ou seja desativei o Posprinter e Ativei novamente, após esta operação só é retornado TimeOut e as vezes Acesso Negado. 

Gostaria de saber se algum dos senhores passou por isto, ou precisou tratar este tipo de problema. Pois ja tentei varias formas mas sem sucesso. 

O Comportamento acima inclusive, consegui simular no PosprinterTeste.

Editado por fabiofranzini
Não tinha terminado e conclui a inserção sem querer.
Link para o comentário
Compartilhar em outros sites

Ola, @Daniel Simoes o trecho que estou tentando é o seguinte:

 

      retentar := true;
      while retentar do
      begin
        try
          retentar := False;
          frm_principal.Cupom.ImprimirDANFE(frm_principal.NFCe.NotasFiscais.Items[0].NFe);
        except on imp:exception do
          if mensagem('Problemas com a impressora !','Confira se a impressora encontra-se ligada com papel e em modo online.' + #13 +
                          imp.Message,False) then
          begin
            retentar := True;
            frm_principal.Cupom.PosPrinter.Desativar;
          end;
        end;
      end;

Alterando a propriedade de controle de porta, o erro que antes era de timeout agora passou a ser de acesso negado. Existe alguma forma de Limpar tudo referente a conexão com a impressora e fazer a conexão de novo ? 

 

Link para o comentário
Compartilhar em outros sites

Ola @Daniel Simoes, bom dia.

Me corrija por favor se estiver errado, na verdade tentei também ativando logo após desativar, mas lendo o código pelo menos achei que ImprimirDANFE já faz esta ativação caso não esteja ativo.

Estou fazendo isto em um MP4200. E pelo programa exemplo do posprinter tenho o problema também, para simular faço o seguinte, entro ativo e mando imprimir alguma tag, desligo a impressora ligo novamente e quando ela esta Online, eu desativo e ativo novamente e ai já não tenho mais resposta dela até que reinicie o programa, hoje vou debugar o componente pra ver se encontro algo, mas estou tendo alguns problemas, com os velhos conhecidos problemas de debug do Lazarus.

OBS- Não sei se consegui expressar bem o que eu estava pensando em fazer, mas em resumo seria ter o controle da impressora depois de a mesma ter reiniciado por algum motivo, sem ter que reiniciar o programa. 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Parte do problema ocorre porque essas impressoras usam uma porta COM Emulada... e quando a impressora é desligada a COM "morre" no Windows...

Há um "delay" até a COM ser novamente reconhecida pelo Windows...

Se você usa o ControlePorta... não precisa se preocupar com o Ativar ou Desativar 

Não compreendi as instruções para reproduzir o problema no PosPrinterTeste... por favor descreva no formato passo a passo... Exemplo 

1.ligar a Impressora

2.Configirar no PosPrinter da seguinte maneira

3.etc...

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

@Daniel Simoes, me desculpe pela insistência no assunto, mas acredito que este acerto se possível, poderá reduzir muito falhas em relação a usuários descuidados, que pode apagar a impressora a qualquer momento. 

impressora MP 4200 th ligada com cabo USB

1-Impressora ligada, esta na porta COM8 

2-ACBRPosPrinter confgiurado em: 
  Modelo     ppEscBematech 
  Porta        COM8    
  Serial: 
    Porta         COM8
    Baud rate     115200
    Data Bits    8
    Parity        None
    Stop Bits    1
    Handshaking    Nenhum

As demais configurações do PosPrinter ficam inalteradas, no padrão que está ao baixar os arquivos do repositório.

 

3-"Ativar"                 - OK.
4-"Teste Impressão Linha Linha"     - OK.

5-Desligado impressora.  
6-Ligado Impressora e online.


7-Click em Desconectar e depois em Conectar - OK / Ou tenta a impressão novamente - Falha.

8-Click em "Teste Impressão Linha Linha"    - Falha - Communication error 9997 Timeout during operation.

OBS- Acredito que se neste ponto tiver como excluir a conexão com a impressão anterior e refazer de alguma forma, não teremos mais o problema, para isto tento refazera  conexão destaivando e ativando novamente como abaixo, mas não obtive sucesso. 

9-Click em Desconectar e depois em Conectar - Falha - Communication error 5 - Acesso Negado.


OBS-Neste ponto se reiniciar a aplicação, volta a funcionar, sem ter que reiniciar a impressora.
 

Tentei na unit ACBrDevice na procedure Ativar, incluir um Serial.CloseSocket antes de Serial.Connect, para tentar "matar" a conexão anterior, mesmo antes tendo o TryCloseSocket, mas não obtive resultado positivo.

Link para o comentário
Compartilhar em outros sites

  • Fundadores
  • Solution

Falha - Communication error 9997 Timeout during operation

Isso ocorre porque a COM virtual não está pronta... basta esperar e tentar novamente 

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

@Daniel Simoes, agradeço desde já a pronta colaboração e o tempo desprendido para analisar este ponto, mas vou então pensar em outra forma de controlar isto, pois em um momento ou outro, o tipo de conexão da impressora não dependera da nossa vontade, mas sim da disponibilidade do cliente, mas já ajudou e sei que o caminho que tenho que seguir é de assegurar que a porta Virtulizada esteja correta e totalmente carregada. Se tiver sucesso de alguma forma posto aqui. 

Link para o comentário
Compartilhar em outros sites

Boa noite! Estou com o mesmo problema. Quando a impressora é desligada a porta é removida do gerenciador de dispositivo e só volta quando a impressora é religada, desse momento em diante não é mais possível a aplicação se conectar com a impressora, sendo necessário fechar a aplicação e começar tudo novamente. A minha dúvida é a seguinte: Se a porta com for física esse problema será resolvido, pois caso não perca a comunicação eu passarei a indicar a instalação de placa serial rs232 em todos os computadores que forem emitir NFC-e e TEF.

Abraço

Link para o comentário
Compartilhar em outros sites

  • 11 meses depois ...
  • Fundadores

Atualizando o tópico...

Se a Porta COM Virtual não está funcionando bem, talvez seja melhor tentar usar o Spool do Windows

- Instale o Driver da Impressora
- Na porta do componente, configure em: "RAW:Nome da Impressora no Windows"

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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...