Чтение Python c typedef struct - PullRequest
       8

Чтение Python c typedef struct

0 голосов
/ 27 ноября 2018

Продолжая мои предыдущие вопросы, я попробовал ctypes, struct и nametuple, но я все еще не могу получить данные.Мне удается заставить его работать, если я импортирую этот файл DLL в мою программу на C ++.Это будет действительно полезно, кто-то может помочь с этим.Большое спасибо!

c ++ code

printf("Number: %s\n", NET_DVR_PLATE_INFO().sLicense);

c code

typedef struct tagNET_DVR_PLATE_INFO
{
    BYTE  byPlateType;                    
    BYTE  byColor;                        
    BYTE  byBright;                        
    BYTE  byLicenseLen;                    
    BYTE  byEntireBelieve;                
    BYTE  byRegion;                      
    BYTE  byCountry;                      
    BYTE  byArea;                         
    BYTE  byPlateSize;                    
    BYTE  byRes[15];                     
    char  sPlateCategory[MAX_CATEGORY_LEN/*8*/];
    DWORD dwXmlLen;                       
    char* pXmlBuf;                   
    NET_VCA_RECT    struPlateRect;       
    char sLicense[MAX_LICENSE_LEN];       
    BYTE byBelieve[MAX_LICENSE_LEN];    
}NET_DVR_PLATE_INFO, *LPNET_DVR_PLATE_INFO;

python code

hcnetsdk = ctypes.windll.LoadLibrary(".\\HCNetSDK.dll")
class NET_DVR_PLATE_INFO(ctypes.Structure):
_fields_ = [
    ("byPlateType", ctypes.c_byte), 
    ("byColor", ctypes.c_byte), 
    ("byBright", ctypes.c_byte), 
    ("byLicenseLen", ctypes.c_byte),
    ("byEntireBelieve", ctypes.c_byte), #
    ("byRegion", ctypes.c_byte), 
    ("byCountry", ctypes.c_byte), 
    ("byArea", ctypes.c_byte), 
    ("byPlateSize", ctypes.c_byte), 
    ("byRes", ctypes.c_byte * 15), 
    ("sPlateCategory", ctypes.c_char * 8), 
    ("dwXmlLen", ctypes.c_short), 
    ("pXmlBuf", ctypes.c_char), 
    ("sLicense", ctypes.c_char * 16), 
    ("byBelieve", ctypes.c_byte * 16)]

def getPlateNumber():
    platenumber= NET_DVR_PLATE_INFO()
    y = hcnetsdk.platenumber.sLicense
    print(y)

Я получу сообщение об ошибке

AttributeError: function 'platenumber' not found
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...