Hallo,
ich bin am verzweifeln...
Ich nutzt LibUSB-
win32 um mit Delphi auf ein USB-Gerät zuzugreifen.
Das klappt auch einigermaßen, die
DLL kapselt den Zugriff auf das Device.
Ich rufe im Prinzip nur die
DLL-Funktionen auf.
Beispiel:
Gerät suchen und Verbinden
Delphi-Quellcode:
result := 1;
usb_init;
if usb_find_busses < 0 then
showmessage('usb_find_busses() failed');
noDev := usb_find_devices;
if noDev < 0 then
begin
showmessage('usb_find_devices() failed')
end
else
begin
ShowMessage('No. of Devices = '+IntToStr(noDev));
end;
bus := usb_get_busses;
if bus = Nil then
showmessage('usb_get_busses() failed');
while Assigned(bus) do
begin
dev := bus^.devices;
while Assigned(dev) do
begin
if (dev.descriptor.idVendor = VENDORID) and (dev.descriptor.idProduct = PRODUCTID) then
begin
// showmessage(string(dev.filename) + ' RTC gefunden!');
usb_handle := usb_open(dev); // HIER wird mit dem Gerät Verbindung aufgenommen
if usb_handle = Nil then
begin
showmessage('can''t open usb device');
result := -1;
end;
if usb_set_configuration(usb_handle, dev.config[0].bConfigurationValue) < 0 then
begin
showmessage('can''t set configuration for given usb device');
result := -1;
end;
if usb_claim_interface(usb_handle, 0) < 0 then
begin
showmessage('can''t claim interface for given usb device');
result := -1;
end;
{
if usb_set_altinterface(usb_handle, 0) < 0 then
begin
showmessage('can''t set altinterface for given usb device');
result := -1;
end;
}
// ShowMessage(IntToStr(laenge));
if result = -1 then showmessage('Error: octopus_open_dev');
exit;
end;
dev := dev^.next;
end;
bus := bus^.next;
end;
Wenn jetzt
usb_handle := usb_open(dev);
aufgerufen wird, dann sehe ich wie eine lokale Variable (deklariert im Button.Click) ihren Wert den ich vorher initialisiert habe auf 492887 springt...
Wie kann denn der
DLL-Aufruf meine Variable verändern,..???
Vielen Dank schonmal
DelphiManiac