2012-05-16 44 views
2

CTYPE等同結構我有這樣的define.h文件結構中的結構:定義在python

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; 

而且我想用ctypes的Python中定義一個等效的結構,這讓當我使用dll,我可以通過這個結構來獲取python中的數據。

我該如何在python中定義這個。我知道如何定義一個單層結構,但這是一個結構內的結構,我不知道如何定義。請幫忙。

下面是我開始我的代碼:

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

回答

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

+0

我得到以下錯誤在編譯:行45,在FTM2LogMessage_LTE_Tx_AGC_Datapath ( 'iTempCompIndex',ctypes.c_byte),( 'iTempCompRemainder',ctypes.c_byte)] 類型錯誤: '元組' 對象不是可調用 – emad

+0

@emad你能用第45行左右的一些代碼編輯你的問題嗎?在錯誤給出的小代碼片段中,我沒有看到任何問題。 –

+0

抱歉失蹤了, – emad