Python nach PB (wrapper für libusb)

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Python nach PB (wrapper für libusb)

Beitrag von blbltheworm »

Hallo zusammen,
ich versuche gerade einen Wrapper für libusb 0.1.12 http://www.libusb.org/ unter PB zu schreiben und hab als Beispiel einen Code in Python. Bis jetzt läuft das ganze allerdings noch nicht 100%ig, was vermutlich an Übersetzungsfehler der Strukturen liegt.
Kann mir jemand weiterhelfen?

Zuerst die allgemeinen Definitionen aus den py-Skript Link zur Projektseite:

Code: Alles auswählen

...
uint8 = ctypes.c_uint8
uint16 = ctypes.c_uint16
...
# Pointer types
usb_device_p = ctypes.POINTER(usb_device)
usb_bus_p = ctypes.POINTER(usb_bus)
usb_dev_handle_p = ctypes.POINTER(usb_dev_handle)
usb_config_descriptor_p = ctypes.POINTER(usb_config_descriptor)
usb_interface_p = ctypes.POINTER(usb_interface)
usb_interface_descriptor_p = ctypes.POINTER(usb_interface_descriptor)
usb_endpoint_descriptor_p = ctypes.POINTER(usb_endpoint_descriptor)
...
In meinem Code hab ich uint8 mit .a und uint16 mit .u übersetzt.
an Strukturen kommt nun zum Beispiel (inkl. meiner Übersetzung):

Code: Alles auswählen

usb_device._fields_ = [
    ('next',usb_device_p),                                  --> *next_dev.l (also ein Pointer auf das nächste Gerät)
    ('prev',usb_device_p),
    ('filename',ctypes.c_char*(LIBUSB_PATH_MAX)), --> filename.c[LIBUSB_PATH_MAX]
    ('bus',usb_bus_p),                                         --> *bus.l
    ('descriptor',usb_device_descriptor),                 --> descriptor.usb_device_descriptor
    ('config',usb_config_descriptor_p),                   --> *config.l
    ('dev',ctypes.c_void_p),                                --> *dev.l <<<Was heißt das?>>>
    ('devnum',uint8),                                          --> devnum.a
    ('num_children',uint8),
    ('children',ctypes.POINTER(usb_device_p))        --> *children.l <<<ist das ein Pointer auf einen Pointer?>>>
    ]


Wo ich mir außerdem noch unsicher bin:

Code: Alles auswählen

...
('location',ctypes.c_ulong)
...
Schonmal vielen Dank für jede Hilfe.