struktury rekurencyjne typu python ctype
Opracowałem bibliotekę DLL dla sterownika w C. Napisałem program testowy w C ++ i DLL działa dobrze.
Teraz chciałbym interweniować z tą biblioteką DLL przy użyciu Pythona. Z powodzeniem ukryłem większość struktur C zdefiniowanych przez użytkownika, ale jest jeden punkt, w którym muszę użyć struktur C. Jestem raczej nowicjuszem w pythonie, więc mogę się pomylić.
Moje podejście polega na przedefiniowaniu kilku struktur w pythonie przy użyciu ctype, a następnie przekazaniu zmiennej do mojej biblioteki DLL. Jednak w tych klasach mam niestandardową listę połączeń, która zawiera następujące typy rekurencyjne
class EthercatDatagram(Structure):
_fields_ = [("header", EthercatDatagramHeader),
("packet_data_length", c_int),
("packet_data", c_char_p),
("work_count", c_ushort),
("next_command", EthercatDatagram)]
To się nie udaje, ponieważ wewnątrz EthercatDatagram, EthercatDatagram nie jest już zdefiniowany, więc parser zwraca błąd.
Jak powinienem reprezentować tę połączoną listę w Pythonie, aby moja biblioteka DLL zrozumiała ją poprawnie?