Domanda

Obiettivo: Vorrei poter elencare le porte COM disponibili su un sistema in Delphi.

Homework: Ho letto questo thread SO sull'enumerazione di LPT porte di un sistema che utilizza il registro. Ho anche scoperto che le porte COM sono elencate nel registro in HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM ma ho trovato gesticolazione senza risposta nella stesso thread che ciò potrebbe non essere affidabile su macchine diverse e versioni diverse di Windows.

Ho anche trovato articoli che fanno riferimento all'uso di QueryDosDevice () ma provando questo codice di esempio , ho scoperto che non sembrava elencare alcuna porta COM.

Domanda: qual è il modo più affidabile (tra versioni Windows sconosciute) per elencare le porte COM su un computer Windows?

È stato utile?

Soluzione

DEVICEMAP \ SERIALCOMM è buono per tutte le versioni NT. Probabilmente dovrai cercare sotto DYN_DATA per Win9x.

Usa questo metodo se hai bisogno di affidabilità di runtime.

Altri suggerimenti

Ti preghiamo di consultare l'URL scritto in C ++

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

e lo stesso approccio può essere implementato anche in delphi .. o qualcuno può convertirti per te in SO ..

Funzionerà con tutte le versioni di Windows poiché funziona secondo il principio di Gestione dispositivi disponibile per tutte le versioni di Windows.

Questo è il codice per LINUX non per 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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top