AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Virtual COM Port ermitteln

Ein Thema von ulrich.b · begonnen am 16. Mär 2007 · letzter Beitrag vom 16. Mär 2007
Antwort Antwort
ulrich.b

Registriert seit: 21. Sep 2005
Ort: Kattau (AT)
79 Beiträge
 
Delphi 2009 Professional
 
#1

Virtual COM Port ermitteln

  Alt 16. Mär 2007, 17:39
Vorerst: ich weiss, dass es diesen Thread gibt.

Ich möchte unter allen COM Ports einen bestimmten virtuellen USB COM Port ermitteln (zB. selektiert über die VID und PID).

In der MSDN ist ja fast nichts zu finden über die USB Device Classes zu der dieser auch gehört (CDC: Communication Device Class) ...
  Mit Zitat antworten Zitat
gucky

Registriert seit: 10. Jun 2006
2 Beiträge
 
#2

Re: Virtual COM Port ermitteln

  Alt 16. Mär 2007, 18:22
Hi also ich suche bei den COm Devices mit der nachfolgenden
Funktion nach einem bestimmten Device. Kannst die Funktion ja für deine
Bedürfnisse abändern. Du must die setupapi und cfgmgr32 einbinden.

Gruß Gucky

Delphi-Quellcode:
function getDevice: string;
const
  Anschlguid = '{4D36E978-E325-11CE-BFC1-08002BE10318}';
var
  GUID: PGUID;
  Buffer: array[0..1023] of TCHAR;
  NameBuffer: array[0..1023] of Char;
  Descriptionstr: string;
  PnPHandle: HDEVINFO;
  DevData: TSPDevInfoData;
  DeviceInterfaceData: TSPDeviceInterfaceData;
  Success: LongBool;
  BufSize: DWORD;
  Devn: Integer;
  S: string;
  aguid: Tguid;
begin
  LoadSetupApi;
  LoadConfigManagerApi;
  GetMem(GUID, SizeOf(TGUID));
  guid^ := StringToGUID(Anschlguid);
  SetupDiGetClassDescription(GUID^, @Buffer[0], Length(Buffer), BufSize);
  Descriptionstr := PTSTR(@Buffer[0]);

  aguid := Guid^;
  PnPHandle := SetupDiGetClassDevs(@AGUID, nil, 0, DIGCF_PRESENT);
  //PnPHandle := SetupDiGetClassDevs(@AGUID, nil, 0, 0);
  if PnPHandle = Pointer(INVALID_HANDLE_VALUE) then
    begin
      FreeMem(GUID);
      Result := '';
      Exit;
    end;
  Devn := 0;
  repeat
    DeviceInterfaceData.cbSize := SizeOf(TSPDeviceInterfaceData);
    DevData.cbSize := SizeOf(DevData);
    Success := SetupDiEnumDeviceInfo(PnPHandle, Devn, DevData);
    if Success then
      begin
        S := GetRegistryPropertyString(PnPHandle, DevData, SPDRP_FRIENDLYNAME);
        if S = 'then
          S := GetRegistryPropertyString(PnPHandle, DevData, SPDRP_DEVICEDESC);

        if Pos(UMtsappli, s) > 0 then
          begin
            Result := StrBetween(s, '(', ')');
          end;

        Inc(Devn);
      end;
  until not Success;
  SetupDiDestroyDeviceInfoList(PnPHandle);

  UnloadConfigManagerApi;
  UnloadSetupApi;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz