⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientdemo.cpp

📁 一个测试用的demo,用于数字视频录象机的登陆
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#include <unistd.h>#include <time.h>#include <pthread.h>#include "hcnetsdk.h"//#define SDK_TEST//#define ANALYZEint VIEW_NUM = 1;#define SERVER_IP "192.0.2.1" #define USER_NAME 	"admin"#define PASSWD		"12345"#define PORT		8000#define LOCAL_IP "192.0.2.2"#define LOCAL_PORT 7200  #define TRUE 1#define FALSE 0#define CIF_WIDTH 352#define CIF_HEIGTH 288#define MAXCHANNUM 3int glUserID = -1;int glRealHandle[MAXCHANNUM] = {-1};int bGetSysHeader[MAXCHANNUM] = {0};int glVoiceHandle = -1; int gbExit = 1;long g_lAnalyzeHandle = -1;DWORD gfMessCallBack(int lCommand, char *sDVRIP, char *pBuf, DWORD dwBufLen, void* dwUser){	int lIndex = -1;		int nStartChan = 1;//默认起始通道为1   	if(lCommand < EXCEPTION_EXCHANGE)	{//报警		int i=0;		NET_DVR_ALARMINFO m_alarminfo;		memcpy(&m_alarminfo, pBuf, sizeof(NET_DVR_ALARMINFO));		switch (lCommand)		{		case COMM_ALARM:			switch (m_alarminfo.dwAlarmType)			{			case 0:								for (i=0; i<MAX_CHANNUM; i++)				{					if (m_alarminfo.dwAlarmRelateChannel[i] == 1)					{						printf("服务器%s发生信号量报警 报警输入%d,触发通道号%d\n", sDVRIP, m_alarminfo.dwAlarmInputNumber+1, i+nStartChan);							}				}							break;			case 1:				for (i=0; i<MAX_DISKNUM; i++)				{					if (m_alarminfo.dwDiskNumber[i] == 1)					{						printf("服务器%s发生硬盘满报警 硬盘号%d \n", sDVRIP, i);					}				}								break;			case 2:				for (i=0; i<MAX_CHANNUM; i++)				{					if (m_alarminfo.dwChannel[i] == 1)					{						printf("服务器%s发生信号丢失报警 通道号%d \n", sDVRIP, i+nStartChan);					}				}								break;			case 3:				for (i=0; i<MAX_CHANNUM; i++)				{					if (m_alarminfo.dwChannel[i] == 1)					{						printf("服务器%s发生移动侦测报警 通道号%d \n", sDVRIP, i+nStartChan);					}				}								break;			case 4:				for (i=0; i<MAX_DISKNUM; i++)				{					if (m_alarminfo.dwDiskNumber[i] == 1)					{						printf("服务器%s发生硬盘未格式化报警 硬盘号%d \n", sDVRIP, i);					}				}								break;			case 5:				for (i=0; i<MAX_DISKNUM; i++)				{					if (m_alarminfo.dwDiskNumber[i] == 1)					{						printf("服务器%s发生读写硬盘出错报警 硬盘号%d \n", sDVRIP, i);					}				}								break;			case 6:				for (i=0; i<MAX_CHANNUM; i++)				{					if (m_alarminfo.dwChannel[i] == 1)					{						printf("服务器%s发生遮挡报警 通道号%d \n", sDVRIP, i+nStartChan);					}				}							break;			case 7:					for (i=0; i<MAX_CHANNUM; i++)				{					if (m_alarminfo.dwChannel[i] == 1)					{						printf("服务器%s发生制式不匹配 通道号%d \n", sDVRIP, i+nStartChan);					}				}				break;			case 8:				printf("服务器%s发生非法访问! \n", sDVRIP);				break;			default:				printf("报警类型:未知 %d\n",m_alarminfo.dwAlarmType);				break;			}			break;		case COMM_TRADEINFO:			NET_DVR_TRADEINFO m_TradeInfo;			memcpy(&m_TradeInfo, pBuf, sizeof(NET_DVR_TRADEINFO));			printf("服务器%s收到卡号信息%s \n", sDVRIP, m_TradeInfo.CardNumber);			break;		default:			break;			}	}    else    {//异常    	lIndex = *((int *)pBuf);    	switch (lCommand)      	{    		case EXCEPTION_EXCHANGE:    			printf("DVR[%s] network exception error:%d\n", sDVRIP, NET_DVR_GetLastError());    			break;    		case EXCEPTION_AUDIOEXCHANGE:    			printf("lIndex[%d]  DVR[%s] vaudioexchange exception error:%d\n", lIndex, sDVRIP, NET_DVR_GetLastError());    			break;    		case EXCEPTION_ALARM:    			printf("lIndex[%d]  DVR[%s] alarm exception error:%d\n", lIndex, sDVRIP, NET_DVR_GetLastError());    			break;    		case EXCEPTION_PREVIEW:    			printf("lIndex[%d]  DVR[%s] preview exception error:%d\n", lIndex, sDVRIP, NET_DVR_GetLastError());    			break;    		case EXCEPTION_SERIAL:    			printf("lIndex[%d]  DVR[%s] serial exception error:%d\n", lIndex, sDVRIP, NET_DVR_GetLastError());    			break;	    		default:    			break;		}	}          return 1;}void SerialDataCallBack( int lSerialHandle,                          char *pRecvDataBuffer,                         DWORD dwBufSize,                         DWORD dwUser ){	static int i=0;    fprintf(stderr, "No.[%d]:lSerialHandle[%d], pRecvDataBuffer[%s], dwBufSize[%d], dwUser[%d]\n",            ++i, lSerialHandle, pRecvDataBuffer, dwBufSize, dwUser);          return;}#ifdef ANALYZEvoid *GetFrameThread(void * pParam){	int i = *(int *)pParam;	PACKET_INFO_EX packet;	while(gbExit)	{		if(HIKANA_GetOnePacketEx(g_lAnalyzeHandle, &packet) == 0)		{						fprintf(stderr,         			"lRealHandle[%d]: Get StreamData! Type[%d], BufSize[%d], timestamp[%d:%d:%d  %d:%d:%d], unFrameNum[%d], unFrameRate[%d], usWidth[%d], usHeight[%d]\n",        			i, packet.nPacketType, packet.unPacketSize, packet.nYear, packet.nMonth, packet.nDay, packet.nHour, packet.nMinute, packet.nSecond, packet.unFrameNum, packet.unFrameRate, packet.usWidth, packet.usHeight);         }        usleep(10);	}}#endifvoid RealDataCallBack (int lRealHandle,                             DWORD dwDataType,                             char *pBuffer,                            DWORD dwBufSize,                            DWORD dwUser){		if(dwDataType == NET_DVR_SYSHEAD)	{		bGetSysHeader[dwUser] = 1;	}	if(dwDataType == NET_DVR_REALPLAYEXCEPTION)	{		fprintf(stderr, "RealPlay exception!\n");	}	#ifdef ANALYZE	AnalyzeDataInputData(dwUser, (unsigned char *)pBuffer, dwBufSize);	//HIKANA_InputData(dwUser, (unsigned char *)pBuffer, dwBufSize);#else	    fprintf(stderr,        	    "lRealHandle[%d]: Get StreamData! Type[%d], BufSize[%d], dwUser[%d]\n",       	    lRealHandle, dwDataType, dwBufSize, dwUser);#endif}void PreviewAnalyzeCallBack_EX (int lRealHandle, 		PACKET_INFO_EX *strPacketInfo,                            void* dwUser){	printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");	printf("nPacketType:  %d\n", strPacketInfo->nPacketType);	printf("unPacketSize: %d\n", strPacketInfo->unPacketSize);	printf("nYear: %d\n", strPacketInfo->nYear);	printf("nMonth: %d\n", strPacketInfo->nMonth);	printf("nDay: %d\n", strPacketInfo->nDay);	printf("nHour: %d\n", strPacketInfo->nHour);	printf("nMinute: %d\n", strPacketInfo->nMinute);	printf("nSecond: %d\n", strPacketInfo->nSecond);	printf("unTimeStamp: %d\n", strPacketInfo->unTimeStamp);	printf("unFrameNum: %d\n", strPacketInfo->unFrameNum);	printf("unFrameRate: %d\n", strPacketInfo->unFrameRate);	printf("usWidth: %d\n", strPacketInfo->usWidth);	printf("usHeight: %d\n", strPacketInfo->usHeight);	printf("unTimeStampHigh: %d\n", strPacketInfo->unTimeStampHigh);	printf("unFlag: %d\n", strPacketInfo->unFlag);	printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");	printf("\n\n");}void PlaybackCallBack(int lPlayHandle,                             DWORD dwDataType,                             char *pBuffer,                            DWORD dwBufSize,                            DWORD dwUser){    fprintf(stderr,         "lPlaybackHandle[%d]: Get PlayBack StreamData! Type[%d], BufSize[%d], dwUser[%d]\n",        lPlayHandle, dwDataType, dwBufSize, dwUser);	switch (dwDataType)	{	case NET_DVR_PLAYBACKOVER:		fprintf(stderr, "PlayBack is over!!!\n");		break;	case NET_DVR_PLAYBACKNETCLOSE:		fprintf(stderr, "net close, pls check it !!!\n");		break;	case NET_DVR_PLAYBACK5SNODATA:		fprintf(stderr, "no data for 5s!!!\n");		break;	default:		break;		}}        void VoiceCallBack(int lVoiceComHandle,			char *pRecvDataBuffer,			DWORD dwBufSize,			DWORD dwUser){	fprintf(stderr,         "lVoiceComHandle[%d]: Get voice data! BufSize[%d], dwUser[%d]\n",        lVoiceComHandle, dwBufSize, dwUser);} void Wait(){	printf("\n======== Press 'q' to quit  ============\n");	do	{		sleep(1);	}	while(getc(stdin) != 'q');  }void RealPlay(NET_DVR_DEVICEINFO *devInfo){	int nMode = PTOPTCPMODE;	printf("Please input link mode: [0-PTOPTCPMODE; 1-PTOPUDPMODE; 3-PTOPRTPMODE]\n");	scanf("%d", &nMode );		int linkmode = nMode;//PTOPUDPMODE/*PTOPTCPMODE*/PTOPRTPMODE;	int usesdl = TRUE;	//int usesdl = FALSE;	NET_DVR_CLIENTINFO clientInfo;	clientInfo.lChannel = devInfo->byStartChan;	clientInfo.lLinkMode = linkmode;/* | 0x80000000*///sub-stream: | 0x80000000	clientInfo.hPlayWnd.x = 0;	clientInfo.hPlayWnd.y = 0;	INITINFO InitInfo;			if (usesdl)	{		InitInfo.uWidth = CIF_WIDTH;		InitInfo.uHeight = CIF_HEIGTH; 		}	else	{		InitInfo.uWidth = 0;		InitInfo.uHeight = 0;	}		if(!NET_DVR_DrawAreaInit(InitInfo))	{		printf("DrawAreaInit failed\n");		return;	}		if(usesdl)	{		clientInfo.hPlayWnd.uWidth = CIF_WIDTH;		clientInfo.hPlayWnd.uHeight = CIF_HEIGTH;	}	else	{		clientInfo.hPlayWnd.uWidth = 0;		clientInfo.hPlayWnd.uHeight = 0;	}	clientInfo.sMultiCastIP = "234.5.6.7"; 		int i;		//char filename[80] = {0};	if (devInfo->byChanNum > 1)	{		VIEW_NUM = 1;  	}	else	{		VIEW_NUM = 1;	}	for(i=0; i<VIEW_NUM; i++)	{		clientInfo.lChannel = devInfo->byStartChan + i;		if(usesdl)		{			clientInfo.hPlayWnd.x = CIF_WIDTH * (i % 2) ;			clientInfo.hPlayWnd.y = CIF_HEIGTH * (i / 2);			}#ifdef ANALYZE		AnalyzeDataOpenStream(i);		//g_lAnalyzeHandle = HIKANA_CreateStream(1024*1024);		pthread_t hMainThread;		pthread_attr_t attr;		pthread_attr_init(&attr);		pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);		gbExit = 1;		char reg[1] = {0};		if ( pthread_create( &hMainThread, &attr, GetFrameThread, (void *)&i ) < 0 )		{	    				return ;		}		#endif 			glRealHandle[i] = NET_DVR_RealPlay(glUserID, &clientInfo);		if(glRealHandle[i] < 0) 		{			printf(" channel:%d RealPlay failed \n", clientInfo.lChannel);			return ;		}		/*		time_t t1,t2;		while (1) {			for (i=0; i<3; i++) {				time(&t1);				if (!NET_DVR_PTZControlWithSpeed(glRealHandle[i], PAN_LEFT, 0, 4)) {					printf( "PTZ left start failed. error[%d]\n", NET_DVR_GetLastError() );				}				else					printf("PTZ left start...\n");				time(&t2);				printf("spend time:%ds\n", t2-t1);				sleep(1);				time(&t1);				if (!NET_DVR_PTZControlWithSpeed(glRealHandle[i], PAN_LEFT, 1, 4)) {					printf( "PTZ left stop failed. error[%d]\n", NET_DVR_GetLastError() );				}				else					printf("PTZ left stop...\n");				time(&t2);				printf("spend time:%ds\n", t2-t1);				sleep(1);			}			for (i=0; i<3; i++) {				time(&t1);				if (!NET_DVR_PTZControlWithSpeed(glRealHandle[i], PAN_RIGHT, 0, 4)) {					printf( "PTZ right start failed. error[%d]\n", NET_DVR_GetLastError() );				}				else					printf("PTZ right start...\n");				time(&t2);				printf("spend time:%ds\n", t2-t1);				sleep(1);				time(&t1);				if (!NET_DVR_PTZControlWithSpeed(glRealHandle[i], PAN_RIGHT, 1, 4)) {					printf( "PTZ right stop failed. error[%d]\n", NET_DVR_GetLastError() );				}				else					printf("PTZ right stop...\n");				time(&t2);				printf("spend time:%ds\n", t2-t1);				sleep(1);			}		}		*/#if 1			NET_DVR_SaveRealData(glRealHandle[i], "real.mp4"); 		/* to set callback function */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -