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++
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);
|
|
}
|
|
}
|