You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

187 lines
6.1 KiB
C++

#include "libHvDevice/HvDeviceEx.h"
#include <stdio.h>
#include <unistd.h>
static int RecordInfoBeginCallBack(PVOID pUserData, DWORD dwCarID)
{
printf("%s pUserData = %p, dwCarID = %lu\n", __FUNCTION__, dwCarID);
return 0;
};
static int RecordInfoEndCallBack(PVOID pUserData, DWORD dwCarID)
{
printf("%s pUserData = %p, dwCarID = %lu\n", __FUNCTION__, 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);
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;
}
static int JPEGStreamCallBack(
PVOID pUserData,
PBYTE pbImageData,
DWORD dwImageDataLen,
DWORD dwImageType,
LPCSTR szImageExtInfo
)
{
printf("%s pUserData = %p, pbImageData = %p , dwImageDataLen = %u, dwImageType = %x, szImageExtInfo = %s\n",
__FUNCTION__,
pUserData,
pbImageData,
dwImageDataLen,
dwImageType,
szImageExtInfo);
return 0;
};
int main(int argc, char *argv[])
{
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 0;
}
printf("HVAPI_OpenEx %s success.\n", chIp);
#ifdef JPEG
if (
(HVAPI_SetCallBackEx(hCameraHandle, (PVOID)JPEGStreamCallBack, NULL, 0, CALLBACK_TYPE_JPEG_FRAME, NULL) != S_OK)
)
{
printf("ConnectToCamera:: Set JPEG CallBack failed.\n");
HVAPI_CloseEx(hCameraHandle);
hCameraHandle = NULL;
return 0;
}
#else
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;
}
#endif
printf("ConnectToCamera:: SetCallBack success.\n");
int nStreamType = CONN_TYPE_RECORD;
unsigned long pdwConStatus = 0;
while (true)
{
pdwConStatus = 0;
if (HVAPI_GetConnStatusEx(hCameraHandle, nStreamType, &pdwConStatus) == S_OK)
{
printf("HVAPI_GetConnStatusEx %s success. status = %x\n", chIp, pdwConStatus);
}
else
{
printf("HVAPI_GetConnStatusEx %s failed\n", chIp);
}
sleep(10);
}
}