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)
...
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)
...