Продолжая мои предыдущие вопросы, я попробовал 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