Jump to content

dev botao

Localizar a porta serial COM da impressora


Go to solution Solved by Daniel Simoes,
  • Este tópico foi criado há 2216 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Moderadores

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?

Link to comment
Share on other sites

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.

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

Projeto ACBr

 

[email protected]

Link to comment
Share on other sites

  • Fundadores
  • Solution

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 ; 

 

  • Like 2
  • Thanks 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.

Link to comment
Share on other sites

  • Moderadores

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   
---------------------------
 

Link to comment
Share on other sites

  • Fundadores
13 minutos atrás, Gr@c@ disse:

COM4  -  Erro: 9992-Instance already in use

provavelmente outra aplicação estava com a Port COM4 aberta...

  • Like 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.

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.