Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2054 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Boa tarde.

Gostaria de saber se é possível verificar antes do comando ativar se a porta serial onde a ESC POS estiver configurada, está acessível.

Estou tendo problemas com o erro : communication error 9997 timeout during operation

Em outro post descobri que é por que a porta serial não está acessível e o ACBrPosPrinter me retorna este erro, porém quero criar uma solução para verificar antes do envio para impressão se a porta está acessível, afim de instruir o usuário no procedimento para liberar a porta e armazenar a impressão para imprimir futuramente se der erro.

Existe alguma forma de verificar isso ?

tentei achar nos fontes, sem sucesso !!!

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Membros Pro
Postado
21 minutos atrás, Daniel Simoes disse:

O teste é esse mesmo...

Abrir a porta e verificar se não houve um exception...

Isso é feito no método AcharPortasSeriais de ACBrDevice 

Ok mas como o componente dá um raised não tenho como dominar a mensagem, ela vai aparecer para o usuário, vou alterar direto no componente então, acheiq ue pudesse ter um método para verificar esta informação. 

Muito Obrigado !

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Fundadores
  • Solution
Postado

Basta usar um Try/Except...

Veja o exemplo no ACBrDevice

procedure TACBrDevice.AcharPortasSeriais(const AStringList : TStrings ;
   UltimaPorta : Integer) ;
var
   I     : Integer ;
   BS    : TBlockSerial ;
   UmaPorta : String ;
begin
   GravaLog('AcharPortasSeriais('+IntToStr(UltimaPorta)+')');
   AStringList.Clear;

   BS := TBlockSerial.Create;
   try
      For I := 1 to UltimaPorta do
      begin
        try
           UmaPorta := 'COM'+IntToStr(I) ;

           BS.Connect( UmaPorta );
           if BS.LastError <> 2 then
              AStringList.Add(UmaPorta) ;

           BS.CloseSocket;
        except
           // Except Mudo, impede que o Raise prossiga...      <---- AQUI
        end ;
      end ;
   finally
      BS.Free ;
   end ;
end ;  

 

  • Curtir 2
  • Obrigado 1
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.

  • Membros Pro
Postado
23 horas atrás, Daniel Simoes disse:

Basta usar um Try/Except...

Veja o exemplo no ACBrDevice


procedure TACBrDevice.AcharPortasSeriais(const AStringList : TStrings ;
   UltimaPorta : Integer) ;
var
   I     : Integer ;
   BS    : TBlockSerial ;
   UmaPorta : String ;
begin
   GravaLog('AcharPortasSeriais('+IntToStr(UltimaPorta)+')');
   AStringList.Clear;

   BS := TBlockSerial.Create;
   try
      For I := 1 to UltimaPorta do
      begin
        try
           UmaPorta := 'COM'+IntToStr(I) ;

           BS.Connect( UmaPorta );
           if BS.LastError <> 2 then
              AStringList.Add(UmaPorta) ;

           BS.CloseSocket;
        except
           // Except Mudo, impede que o Raise prossiga...      <---- AQUI
        end ;
      end ;
   finally
      BS.Free ;
   end ;
end ;  

 

Show. Funcionou perfeitamente... Muito Obrigado !!!!

  • Curtir 2

_____________________________________

Junior - Rhovanion Tecnologia

(11) 4224.6543

  • Este tópico foi criado há 2054 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.