Ir para conteúdo
  • Cadastre-se

dev botao

Localizar a porta serial COM da impressora


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

Recommended Posts

  • Moderadores
Postado

Existem casos que, ao se instalar novo dispositivo, a porta COM da impressora fiscal passa a não ser mais a mesma configurada no aplicativo emissor de NFC-e. Como localizar via Delphi a porta serial em que a impressora não fiscal está, assim como a Bemafi32.dll faz?

Postado
3 minutos atrás, Gr@c@ disse:

Existem casos que, ao se instalar novo dispositivo, a porta COM da impressora fiscal passa a não ser mais a mesma configurada no aplicativo emissor de NFC-e. Como localizar via Delphi a porta serial em que a impressora não fiscal está, assim como a Bemafi32.dll faz?

Se eu não me engano, o ECFTeste faz essa função quando deixamos a opção "Procurar" na porta.

  • Curtir 1
Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

  • Fundadores
  • Solution
Postado

Não é comum, a troca de porta COM no Windows... a não ser por exemplo, que você plugue a USB em uma porta diferente...

A única maneira seria tentar abrir todas as portas disponíveis... e tentar por exemplo, ler o Status da Impressora...

Segue um exemplo (não testado)

procedure TfrWizardPrincipal.AcharPortasSeriais(const AStringList : TStrings ;
   UltimaPorta : Integer) ;
var
   I     : Integer ;
   BS    : TBlockSerial ;
   Porta : String ;
   Status: TACBrPosPrinterStatus;
begin
   AStringList.Clear;

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

           BS.Connect( Porta );
           if BS.LastError <> 2 then
           begin
              if BS.LastError = 5 then
                 Porta := Porta + '  -  Ocupada'
              else if BS.LastError <> 0 then
                 Porta := Porta + '  -  Erro: '+IntToStr(BS.LastError)+'-'+BS.LastErrorDesc
              else
              begin
                 ACBrPosPrinter1.Porta := Porta;
                 Status := ACBrPosPrinter1.LerStatusImpressora();
                 if (stErroLeitura in Status) then
                   Porta := Porta + '  -  Livre'
                 else
                   Porta := Porta + '  -  Impressora';
              end;

              AStringList.Add(Porta) ;
           end ;

           BS.CloseSocket;
        except
        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.

  • Moderadores
Postado

A impressora está na COM4. 

image.png

Resultado da procedure (a impressora está na COM4).

---------------------------
EMISSOR NFCe
---------------------------
COM2  -  Erro: 9992-Instance already in use
COM4  -  Erro: 9992-Instance already in use

---------------------------
OK   
---------------------------
 

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