#include #include "testdll.h" #include "libHvDevice/HvDeviceEx.h" #include #include #include #include #include using namespace std; // 编码转换 int code_convert(char *from_charset,char *to_charset,char *inbuf,size_t inlen,char *outbuf,size_t outlen) { iconv_t cd; int rc; char **pin = &inbuf; char **pout = &outbuf; cd = iconv_open(to_charset,from_charset); if (cd==0) return -1; if (iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1; iconv_close(cd); return 0; } // gbk转为utf8 string a2u(const char *inbuf) { int inlen=strlen(inbuf); string strRet; strRet.resize(inlen*2+2); if(code_convert("gbk","utf-8",const_cast(inbuf),inlen,&strRet[0],strRet.size())) return inbuf; return strRet; } static int RecordInfoBeginCallBack(PVOID pUserData, DWORD dwCarID) { printf("begin dwCarID = %lu\n", dwCarID); return 0; }; static int RecordInfoEndCallBack(PVOID pUserData, DWORD dwCarID) { printf("end dwCarID = %lu\n", dwCarID); return 0; }; static int RecordInfoPlateCallBack(PVOID pUserData, DWORD dwCarID, LPCSTR pcPlateNo, LPCSTR pcAppendInfo, DWORD dwRecordType, DWORD64 dw64TimeMS) { /* printf("%s pUserData = %p, dwCarID = %lu , pcPlateNo = %s, \npcAppendInfo= \n%s dwRecordType = %x, dw64TimeMS = %llu\n", __FUNCTION__, pUserData, dwCarID, pcPlateNo, pcAppendInfo, dwRecordType, dw64TimeMS); */ string temp; temp = a2u(pcPlateNo); printf("the str is %s",temp.c_str()); return 0; } static int RecordInfoBigImageCallBack(PVOID pUserData, DWORD dwCarID, WORD wImgType, WORD wWidth, WORD wHeight, PBYTE pbPicData, DWORD dwImgDataLen, DWORD dwRecordType, DWORD64 dw64TimeMS) { /* printf("%s pUserData = %p, dwCarID = %lu ,wImgType = %x, " "wWidth = %d, wHeight = %d, pbPicData = %p, dwImgDataLen = %lu, dwRecordType = %x, dw64TimeMS = %llu\n", __FUNCTION__, pUserData, dwCarID, wImgType, wWidth, wHeight, pbPicData, dwImgDataLen, dwRecordType, dw64TimeMS); */ return 0; } static int RecordInfoSmallImageCallBack(PVOID pUserData, DWORD dwCarID, WORD wWidth, WORD wHeight, PBYTE pbPicData, DWORD dwImgDataLen, DWORD dwRecordType, DWORD64 dw64TimeMS) { /* printf("%s pUserData = %p, dwCarID = %lu , wWidth = %d, wHeight = %d, pbPicData = %p, dwImgDataLen = %lu, dwRecordType = %x, dw64TimeMS = %llu\n", __FUNCTION__, pUserData, dwCarID, wWidth, wHeight, pbPicData, dwImgDataLen, dwRecordType, dw64TimeMS); */ return 0; } static int RecordInfoBinaryImageCallBack(PVOID pUserData, DWORD dwCarID, WORD wWidth, WORD wHeight, PBYTE pbPicData, DWORD dwImgDataLen, DWORD dwRecordType, DWORD64 dw64TimeMS) { /* printf("%s pUserData = %p, dwCarID = %lu , wWidth = %d, wHeight = %d, pbPicData = %p, dwImgDataLen = %lu, dwRecordType = %x, dw64TimeMS = %llu\n", __FUNCTION__, pUserData, dwCarID, wWidth, wHeight, pbPicData, dwImgDataLen, dwRecordType, dw64TimeMS); */ return 0; } extern "C" int TestFun(const char * pcIP) { char chIp[64] = {0}; printf("please input the camera ip address.\n"); scanf("%s", chIp); getchar(); HVAPI_HANDLE_EX hCameraHandle = HVAPI_OpenEx(chIp, 0); if (hCameraHandle == NULL) { printf("HVAPI_OpenEx %s failed.\n", chIp); return -1; } printf("HVAPI_OpenEx %s success.\n", chIp); if ((HVAPI_SetCallBackEx(hCameraHandle, (PVOID)RecordInfoBeginCallBack, NULL, 0, CALLBACK_TYPE_RECORD_INFOBEGIN, NULL) != S_OK) || (HVAPI_SetCallBackEx(hCameraHandle, (PVOID)RecordInfoEndCallBack, NULL, 0, CALLBACK_TYPE_RECORD_INFOEND, NULL) != S_OK) || (HVAPI_SetCallBackEx(hCameraHandle, (PVOID)RecordInfoPlateCallBack, NULL, 0, CALLBACK_TYPE_RECORD_PLATE, NULL) != S_OK) || (HVAPI_SetCallBackEx(hCameraHandle, (PVOID)RecordInfoBigImageCallBack, NULL, 0, CALLBACK_TYPE_RECORD_BIGIMAGE, NULL) != S_OK) || (HVAPI_SetCallBackEx(hCameraHandle, (PVOID)RecordInfoSmallImageCallBack, NULL, 0, CALLBACK_TYPE_RECORD_SMALLIMAGE, NULL) != S_OK) || (HVAPI_SetCallBackEx(hCameraHandle, (PVOID)RecordInfoBinaryImageCallBack, NULL, 0, CALLBACK_TYPE_RECORD_BINARYIMAGE, NULL) != S_OK) ) { printf("ConnectToCamera:: SetCallBack failed.\n"); HVAPI_CloseEx(hCameraHandle); hCameraHandle = NULL; return 0; } return 0; }