在python中定义ctype等价结构

时间:2012-05-16 18:01:41

标签: python

我以这种方式在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",????)]

1 个答案:

答案 0 :(得分:2)

这看起来像这样:

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 documentation on arrays