1

次のように、define.h ファイルの構造体内に構造体があります。

typedef struct
{
 byte iVersion;
 long iMTPL;
 byte iMPR;
 byte iTempCompIndex;
 byte iTempCompRemainder;

} Message_Tx_Datapath;

typedef struct
{
 byte               iNumTxPaths;
 Message_Tx_Datapath datapath[NUM_TX_PATHS];
 } Message_Tx;

そして、これのためにPythonでctypesを使用して同等の構造を定義したいので、dllを使用するときに、この構造を渡してPythonでデータをフェッチできます。

これをPythonでどのように定義できますか。単一レベルの構造体を定義する方法は知っていますが、これは構造体内の構造体であり、それを定義する方法がわかりません。助けてください。

コードの開始方法は次のとおりです。

class Message_Tx(ctypes.Structure):
   _fields_ = [("iNumTxPaths",c_byte),("datapath",????)]
4

1 に答える 1

1

それは次のようになります。

import ctypes

NUM_TX_PATHS = 4    # replace with whatever the actual value is

class Message_Tx_Datapath(ctypes.Structure):
    _fields_ = [('iVersion', ctypes.c_byte),
                ('iMTPL', ctypes.c_long),
                ('iMPR', ctypes.c_byte),
                ('iTempCompIndex', ctypes.c_byte),
                ('iTempCompRemainder', ctypes.c_byte)]

class Message_Tx(ctypes.Structure):
    _fields_ = [('iNumTxPaths', ctypes.c_byte),
                ('datapath', Message_Tx_Datapath*NUM_TX_PATHS)]

配列に関する ctypes のドキュメントを参照してください。

于 2012-05-16T18:23:45.760 に答える