Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

IsCheckedOut in der JvHidControllerClass

  Alt 20. Dez 2011, 17:09
Hallo!

Da ich nicht weiterkomme muss ich hier mal nachfragen!

Ich arbeite mit einem HID USB Device.
In der OnArrival Methode vom JvHidDeviceController kommt nun beim Starten eins nach dem anderen Device rein.
Wenn nun meins dabei ist mache ich ein Checkout des Devices.

Delphi-Quellcode:
procedure TMainForm.OnArrival(HidDev: TJvHidDevice);
var
  i : integer;
begin
  if ((HidDev.Attributes.VendorID = VendorID) AND
    (HidDev.Attributes.ProductID = ProductID) AND
    (HidDev.ProductName = ProductName )) then
  begin

    //store device:
    HIDDevice := HidDev;
    //device found, lets do the init:
    if HIDDevice.CheckOut then
      begin
        //set feature type
        HIDDevice.ReportTypeParam := HidP_Feature;
        HIDDevice.UsagePageParam := HID_USAGE_PAGE_GENERIC;
        HIDDevice.LinkCollectionParam := $01; // CollectionType=Application
        HIDDevice.UsageParam := HID_USAGE_CONSUMER_UNDEFINED;
      end;
  end;
end;
Starte ich nun ein zweites mal meine Anwendung wird wieder ein Checkout ohne Probleme durchgeführt und das Device ist von beiden Anwendungen in Verwendung.

Das Problem ist jetzt, wenn ich zwei gleiche USB Devices angeschlossen haben werden beide geöffnet.
Das IsCheckedOut gilt nur für das eine Programm. Wie kann ich aber das Device als "belegt" markieren, damit die zweite Anwendung es nicht auch noch öffnet?
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat