Thread Win32::API und LibUSB-Win32 (36 answers)
Opened by rosti at 2017-02-03 11:40

FIFO
 2017-02-08 08:40
#186072 #186072
User since
2005-06-01
469 Artikel
BenutzerIn

user image
Nur kurz: Wenn Du ohnehin nur das erste Device aus dem ersten Bus nimmst, kannst Du usb_open mit dem .devices-Member aus dem usb_bus-struct aufrufen, der zeigt ja genau dorthin. _get_fst_device ist an der Stelle verzichtbar, _get_busses liefert die Info bereits.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
    my $mem_usb_bus = ReadMemory($bus_addr, 532);
    my %usb_bus;
    @usb_bus{qw(
        next   
        prev   
        dirname
        devices
        location
        root_dev
    )} = unpack "VVZ512VVV", $mem_usb_bus;


Der Aufruf von usb_open verlangt als Parameter einen struct-Pointer, hier würde ich "P" nehmen (nicht "T") und .devices übergeben.
Probier doch mal, was usb_open dann liefert.

CPAN:Win32::Struct würde ich hier ehrlich gesagt garnicht verwenden, da Du ohnehin Byte-Blocks liest und unpackst, da schafft das Abstraktionslayer nur Verwirrung ...

EDIT: In Deinem C-Code iterierst Du über die busses, aber nicht im Perl-Modul.
Last edited: 2017-02-08 08:48:14 +0100 (CET)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"

View full thread Win32::API und LibUSB-Win32