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?