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 回答