Это своего рода продолжение от моего последнего вопроса , если это поможет вам.
Я определяю несколько структур ctype
class EthercatDatagram(Structure):
_fields_ = [("header", EthercatDatagramHeader),
("packet_data_length", c_int),
("packet_data", POINTER(c_ubyte)),
("work_count", c_ushort)]
class EthercatPacket(Structure):
_fields_ = [("ether_header", ETH_HEADER),
("Ethercat_header", EthercatHeader),
("data", POINTER(EthercatDatagram))]
обратите внимание, что это правильно анализируется python, отсутствующие классы определены в другом месте.
Моя проблема, когда я вызываю следующий код
packet = EthercatPacket()
ethercap.RecvPacket(byref(packet))
print packet.data.header
Это неверно. Как я понимаю проблема, данные являются своего рода указателем, поэтому они (на самом деле) не отображаются в EthercatDatagram, следовательно, анализатор не знает основного поля заголовка.
Есть ли способ прочитать это поле, а также любое другое поле, представленное POINTER ()?