Вопрос

Цель: Я хотел бы иметь возможность перечислить доступные COM-порты в системе на Delphi.

Домашнее задание: Я читал это ИТАК, продолжайте перечислять LPT-порты системы, используя реестр.Я также обнаружил, что COM-порты перечислены в реестре по адресу HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM но обнаружил безответную жестикуляцию в тот же поток что это может быть ненадежно на разных компьютерах и в разных версиях Windows.

Я также нашел статьи, ссылающиеся на использование QueryDosDevice(), но после попытки этот пример кода, я обнаружил, что в нем вообще не было списка каких-либо COM-портов.

Вопрос: Какой наиболее надежный способ (для неизвестных версий Windows) перечислить COM-порты на компьютере с Windows?

Это было полезно?

Решение

КАРТА УСТРОЙСТВА\SERIALCOMM подходит для всех версий NT.Вероятно, вам нужно будет поискать Win9x в разделе DYN_DATA.

Использование этот метод если вам нужна надежность во время выполнения.

Другие советы

Пожалуйста, перейдите по URL, который написан на C ++

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

и такой же подход может быть реализован и в delphi..или кто-нибудь может перевести вас в SO..

Это будет работать для всех версий Windows, поскольку это работает по принципу диспетчера устройств, который доступен для всех версий Windows.

Это код для LINUX, а не для 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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top