Ceci est une sorte de suivi de my last question si cela peut vous aider.Comment lire/copier des pointeurs de type ctype dans une classe python?
Je définir quelques structures 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))]
noter que ceci est analysé correctement par python, les classes manquantes sont définies ailleurs. Mon problème est quand je l'appelle le code suivant
packet = EthercatPacket()
ethercap.RecvPacket(byref(packet))
print packet.data.header
Ceci est incorrect. Comme je comprends le problème, les données sont une sorte de pointeur de sorte qu'il n'est pas (vraiment) mappé à EthercatDatagram, par conséquent, l'analyseur ne connaît pas le champ d'en-tête sous-jacent.
Y at-il un moyen de lire ce champ ainsi que tout autre champ représenté par POINTER()?
J'ai déjà répondu à cette question sur Stackoverflow. – Unknown