Thema: Delphi Handle auf ComPort

Einzelnen Beitrag anzeigen

onzelonz

Registriert seit: 14. Apr 2010
3 Beiträge
 
#1

Handle auf ComPort

  Alt 14. Apr 2010, 10:03
hallo!

ich habe eine funktion geschrieben, die (in einem thread) prüft, welche
comports (ob ein comport...) am system vorhanden sind:

Delphi-Quellcode:
function TConThread.getPrt(Port: String): Boolean;
var
  ComFile : THandle;
  DeviceName : array [0..10] of Char;

begin

  StrPCopy(DeviceName, Port);

  try

    ComFile := CreateFile(DeviceName, GENERIC_READ or GENERIC_WRITE, 0, nil,
      OPEN_EXISTING,
      FILE_ATTRIBUTE_NORMAL, 0);

    Result := ComFile <> INVALID_HANDLE_VALUE;

    if NOT (ComFile = INVALID_HANDLE_VALUE) then
      begin
        CloseHandle(ComFile);
      end;

  except
    MessageDlg(IntToStr(GetLastError)+':hnd', mtError, [mbOK], 0);
  end;
end;
die portnamen werden im format '\\.\COMxx' übergeben.

wenn ich nun ein usb-gerät anstecke, dass intern als com port gehandelt wird,
so habe ich das problem, dasss mir dieses gerät einmal erkannt wird, einmal nicht
(ich also einen handle darauf bekomme).
ich kann es manchmal 10x an und abstecken, und es wird immer sauber erkannt,
manchmal nur einmal usw...

meine frage ist nun:
an was kann das liegen?
das gerät wird im gerätemanager von windows (=vista) immer korrekt angezeigt.
hat jemand eine idee? bin für jeden hinweis dankbar

gruss
peter
  Mit Zitat antworten Zitat