Ein ctypes.Structure in einen String umwandeln funktioniert:
Code: Alles auswählen
buffer(struc)[:]
Code: Alles auswählen
buffer(struct)[0:len(raw)] = raw #geht nicht (python verabschiedet sich)
Hier noch das Structure:
Code: Alles auswählen
class PTP_USB_Bulk_Params(ctypes.Structure):
_fields_ = [
('param1', ctypes.c_uint),
('param2', ctypes.c_uint),
('param3', ctypes.c_uint),
('param4', ctypes.c_uint),
('param5', ctypes.c_uint),
]
PTP_USB_BULK_HS_MAX_PACKET_LEN = 4096
PTP_USB_BULK_HDR_LEN = (2*ctypes.sizeof(ctypes.c_uint)+2*ctypes.sizeof(ctypes.c_ushort))
PTP_USB_BULK_PAYLOAD_LEN = (PTP_USB_BULK_HS_MAX_PACKET_LEN-PTP_USB_BULK_HDR_LEN)
PTP_USB_BULK_REQ_LEN = (PTP_USB_BULK_HDR_LEN+5*ctypes.sizeof(ctypes.c_uint))
class PTP_USB_Bulk_Payload(ctypes.Union):
_fields_ = [
('params', PTP_USB_Bulk_Params),
('data', ctypes.c_char*PTP_USB_BULK_PAYLOAD_LEN),
]
class PTP_USB_Bulk_Container(ctypes.Structure):
_fields_ = [
('length', ctypes.c_uint),
('type', ctypes.c_ushort),
('code', ctypes.c_ushort),
('trans_id', ctypes.c_uint),
('payload', PTP_USB_Bulk_Payload)
]