Einzelnen Beitrag anzeigen

HorstBS

Registriert seit: 10. Jan 2006
21 Beiträge
 
#14

Re: USB Port abfragen mit Delphi?

  Alt 18. Jan 2006, 10:56
Hi! Danke fuer den Code... ich sitz mitlerweile schon seit mehr als einer Woche an dem Problem und hab immernoch keine Loesung.

Allerdings bin ich mittlerweile schon soweit das ich ohne die dll eine Verbindung habe:

const device='\\.\USB#Vid_0403&Pid_f068#EL2WP4T4#{a5dcbf10-6530-11d2-901f-04fb951ed}' Habe den genauen Namen von dem Wandler in der Registry nachgelesen und es scheint auch so zu funktionieren.

Delphi-Quellcode:
var DeviceHandle :THandle;
begin

  DeviceHandle := CreateFile(device, Generic_write, File_share_write, nil, open_existing, 0, 0);

  //Überprüft ob Verbindung steht
  if DeviceHandle = INVALID_HANDLE_VALUE then
  begin form1.Label1.Caption:='Verbindung klappt nicht'; end else
  begin form1.Label1.Caption:='Verbindung klappt'; end;


  CloseHandle (DeviceHandle);
end;
Jetzt habe ich ein Problem mit der Kommunitkation. Laut anleitung muss ich ein Hex-Code schicken der ungefaehr so aufgebaut ist:

02 //Rahmen Begin
35 //Port 5 wird angesprochen
03 //Rahmen Ende

habe es wie folgt versucht:

Delphi-Quellcode:
var command, inDummy, count:longword;
    USBWRITE:Boolean;
    DeviceHandle :THandle;
begin

  command:=$2+$35+$3;
  inDummy:=0;

  DeviceHandle := CreateFile(device, Generic_write, File_share_write, nil, open_existing, 0, 0);

  USBWRITE := DeviceIoControl(DeviceHandle, $04,
                              @command, sizeof(command),
                              @inDummy, sizeof(inDummy),
                              count, NIL);

  if usbwrite then begin Form1.Label2.Caption:='geht'; end else
                   begin Form1.Label2.Caption:='geht nicht'; end; //Das bekomme ich in dem Fall als Antwort.

  CloseHandle (DeviceHandle);
end;
und gelesen wird so:

Delphi-Quellcode:
var command, count:longword;
    inBytes:DWord;
    USBREAD:Boolean;
    DeviceHandle :THandle;
begin

  command:=$2+$35+$3;

  DeviceHandle := CreateFile(device, Generic_write, File_share_write, nil, open_existing, 0, 0);

  USBREAD := DeviceIoControl(DeviceHandle, $04,
                             @command, sizeof(command),
                             @inBytes, sizeof(inBytes),
                             count, NIL);

  if usbread then begin Form1.Label3.Caption:='geht'; end else
                  begin Form1.Label3.Caption:='geht nicht'; end; //Das bekomme ich in dem Fall als Antwort.

  CloseHandle (DeviceHandle);
end;


Also aus dem was ich bisher nachgelesen hab muesste das so klappen..
Eine Antwort hab ich laut Anleitung auch zu erwarten.. also woran kann das liegen? Sende ich vielleicht was falsches oder sende ich ueberhaupt?
  Mit Zitat antworten Zitat