Pergunta

Objetivo: Eu gostaria de poder listar as portas COM disponíveis em um sistema em Delphi.

Trabalho de casa:eu li isto Portanto, encaixe a enumeração das portas LPT de um sistema usando o registro. Eu também descobri que as portas COM estão listadas no registro em HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM mas encontrou gesticulação sem resposta no Mesmo tópico que isso pode não ser confiável em diferentes máquinas e versões diferentes do Windows.

Eu também encontrei artigos referentes ao uso de querydosdevice (), mas ao tentar este código de amostra, Descobri que não parecia listar nenhuma porta COM.

Pergunta: Qual é a maneira mais confiável (nas versões desconhecidas do Windows) para listar as portas COM em uma máquina Windows?

Foi útil?

Solução

Devicemap SerialComm é bom para todas as versões do NT. Você provavelmente precisará procurar em dyn_data para win9x.

Usar este método Se você precisar de confiabilidade de tempo de execução.

Outras dicas

Por favor, passe pela URL, que está escrita em C ++

http://www.codeproject.com/kb/system/serial_portsenum_fifo.aspx

e a mesma abordagem pode ser implementada em Delphi também .. ou alguém pode se converter para você em SO ..

Isso funcionará para todas as versões do Windows, pois isso funciona a partir do princípio do Gerenciador de dispositivos, disponível para todas as versões da janela.

Este é o código para Linux não para o Windows ....

function GetSerialPortNames: string;
var
  Index: Integer;
  Data: string;
  TmpPorts: String;
  sr : TSearchRec;
begin
  try
    TmpPorts := '';
    if FindFirst('/dev/ttyS*', $FFFFFFFF, sr) = 0 then
    begin
      repeat
        if (sr.Attr and $FFFFFFFF) = Sr.Attr then
        begin
          data := sr.Name;
          index := length(data);
          while (index > 1) and (data[index] <> '/') do
            index := index - 1;
          TmpPorts := TmpPorts + ' ' + copy(data, 1, index + 1);
        end;
      until FindNext(sr) <> 0;
    end;
    FindClose(sr);
  finally
    Result:=TmpPorts;
  end;
end;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top