コード例 #1
0
ファイル: XHIKCamera.cpp プロジェクト: QiangJi/XEffect2D
_XBool _XHIKCamera::init(_XCameraData &data)
{
	if(m_isInited) return XTrue;
	m_cameraWidth = data.w;
	m_cameraHeight = data.h;
	//width = &m_cameraWidth;
	//height = & m_cameraHeight;
	m_buffSize = m_cameraWidth * m_cameraHeight * 3;

	m_cameraTexWidth = m_cameraWidth;
	m_cameraTexHeight = m_cameraHeight;
	//初始化摄像头并连接设备
	NET_DVR_Init();	//初始化
	m_lUserID = NET_DVR_Login_V30(data.ipAddress,data.port,data.userName,data.pwd,&m_structDeviceInfo);
	if(m_lUserID < 0)	
	{//连接设备失败
		printf("Login error, %d\n", NET_DVR_GetLastError());
		NET_DVR_Cleanup();
		return XFalse;
	}
	//下面开始连接回调函数并分配内存空间
	m_dataRGB = createArrayMem<unsigned char>(m_buffSize);	//分配内存空间
	if(m_dataRGB == NULL) return XFalse;
	memset(m_dataRGB,0,m_buffSize);
	m_dataRGBOut = createArrayMem<unsigned char>(m_buffSize);
	if(m_dataRGBOut == NULL) return XFalse;

	haveNewFrame = &m_haveNewFrame;
	pOutRGB = m_dataRGB;

	NET_DVR_SetExceptionCallBack_V30(0,NULL,g_ExceptionCallBack,NULL);

	NET_DVR_CLIENTINFO ClientInfo = {0};
	ClientInfo.hPlayWnd = NULL;         //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空
	ClientInfo.lChannel = 0;			//预览通道号
	ClientInfo.lLinkMode = 0;			//最高位(31)为0表示主码流,为1表示子码流0~30位表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式;
	ClientInfo.sMultiCastIP = NULL;		//多播地址,需要多播预览时配置

	//BOOL bPreviewBlock = XFalse;			//请求码流过程是否阻塞,0:否,1:是
	m_lRealPlayHandle = NET_DVR_RealPlay_V30(m_lUserID,&ClientInfo,NULL,NULL,XFalse);
	if(m_lRealPlayHandle < 0)
	{
		printf("NET_DVR_RealPlay_V30 error\n");
		NET_DVR_Logout(m_lUserID);
		NET_DVR_Cleanup();
		return XFalse;
	}

	if(!NET_DVR_SetRealDataCallBack(m_lRealPlayHandle,g_RealDataCallBack_V30,0))
	{
		printf("NET_DVR_SetRealDataCallBack error\n");
	}

	m_cameraTex.createTexture(m_cameraWidth,m_cameraHeight,COLOR_RGB);	//不允许进行2的n次方扩展,这回造成不兼容
	m_cameraSprite.init(m_cameraWidth,m_cameraHeight,0);

	m_haveNewFrame = XFalse;
	m_isInited = XTrue;
	return XTrue;
}
コード例 #2
0
ファイル: HaiKangSDK.cpp プロジェクト: dulton/brpj
bool CHaikangSDK::PtzStartPlay(char *sip,int nPort,int channel,char *user,char *psw,HWND hWnd)
{
	//---------------------------------------
	// 注册设备
	NET_DVR_DEVICEINFO_V30 struDeviceInfo;
	m_ptzLoginHandle = NET_DVR_Login_V30(sip, nPort, user, psw, &struDeviceInfo);
	if (m_ptzLoginHandle < 0)
	{
		return false;
	}

	//---------------------------------------
	//启动预览并设置回调数据流
	NET_DVR_CLIENTINFO ClientInfo = {0};
	//需要SDK解码时句柄设为有效值,仅取流不解码时可设为空
	ClientInfo.hPlayWnd = hWnd;
	ClientInfo.lChannel = channel;		//预览通道号
	//主码流
	ClientInfo.lLinkMode = 0;
	ClientInfo.sMultiCastIP = NULL;	//多播地址,需要多播预览时配置
	BOOL bPreviewBlock = false;

	m_ptzRealHandle = NET_DVR_RealPlay_V30(m_ptzLoginHandle, &ClientInfo, NULL, this, 0);
	if (m_ptzRealHandle < 0)
	{
		NET_DVR_Logout(m_ptzLoginHandle);
		m_ptzLoginHandle = -1;
		return false;
	}
	return true;
}
コード例 #3
0
/*******************************************************************
      Function:   Demo_Capture
   Description:   Capture picture.
     Parameter:   (IN)   none 
        Return:   0--success£¬-1--fail.   
**********************************************************************/
int Demo_Capture()
{
    NET_DVR_Init();
    long lUserID;
    //login
    NET_DVR_DEVICEINFO_V30 struDeviceInfo;
    lUserID = NET_DVR_Login_V30("172.4.1.162", 8000, "admin", "12345", &struDeviceInfo);
    if (lUserID < 0)
    {
        printf("pyd1---Login error, %d\n", NET_DVR_GetLastError());
        return HPR_ERROR;
    }

    //
    NET_DVR_JPEGPARA strPicPara = {0};
    strPicPara.wPicQuality = 2;
    strPicPara.wPicSize = 0;
    int iRet;
    iRet = NET_DVR_CaptureJPEGPicture(lUserID, struDeviceInfo.byStartChan, &strPicPara, "./ssss.jpeg");
    if (!iRet)
    {
        printf("pyd1---NET_DVR_CaptureJPEGPicture error, %d\n", NET_DVR_GetLastError());
        return HPR_ERROR;
    }

    //logout
    NET_DVR_Logout_V30(lUserID);
    NET_DVR_Cleanup();

    return HPR_OK;

}
コード例 #4
0
ファイル: Player.cpp プロジェクト: shengang1978/HH
LONG CPlayer::HKDVRLogin(char *sDVRIp, WORD wDVRPort, char *sUserName, char *sPassword)
{
	NET_DVR_DEVICEINFO_V30 struDeviceInfo;

	memset(&struDeviceInfo, 0, sizeof(NET_DVR_DEVICEINFO_V30));

	m_hkDVRUserID = NET_DVR_Login_V30(sDVRIp, wDVRPort, sUserName, sPassword, &struDeviceInfo);

	return m_hkDVRUserID;
}
コード例 #5
0
void CSingleCamDlg::OnBnClickedBtnLogin()//登录
{
	if (isLogin) //如果已经登录,就需要执行注销
	{
		NET_DVR_Logout(lUserID1);
		NET_DVR_Logout(lUserID2);
		isLogin = FALSE;
		GetDlgItem(IDC_BTN_Login)->SetWindowTextA("登录"); 
		GetDlgItem(IDC_BTN_PlayCam)->EnableWindow(FALSE);  //播放按钮 失效
		GetDlgItem(IDC_BTN_SavePicture)->EnableWindow(FALSE);  // 抓图按钮失效
		GetDlgItem(IDC_BTN_SavePicture2)->EnableWindow(FALSE);  // 抓图按钮失效
		GetDlgItem(IDC_BTN_SaveRealData)->EnableWindow(FALSE);  // 抓图按钮失效
	} 
	else
	{
		char DeviceIP[16] = {0};
		char DeviceIP2[16] = {0};
		DWORD dwDeviceIP = 0;
		m_ctrlDeviceIP1.GetAddress(dwDeviceIP);
		CString csTemp = IPToStr(dwDeviceIP);
		sprintf_s(DeviceIP, "%s", csTemp.GetBuffer(0));

		m_ctrlDeviceIP2.GetAddress(dwDeviceIP);
		csTemp = IPToStr(dwDeviceIP);
		sprintf_s(DeviceIP2, "%s", csTemp.GetBuffer(0));

		NET_DVR_DEVICEINFO_V30 struDeviceInfo, struDeviceInfo2;
		lUserID1 = NET_DVR_Login_V30(DeviceIP, 8000, "admin", "12345", &struDeviceInfo);
		lUserID2 = NET_DVR_Login_V30(DeviceIP2, 8000, "admin", "12345", &struDeviceInfo2);
		if (lUserID1 < 0 || lUserID2 < 0) //登录失败时,其他几个按钮都需要disable
		{
			AfxMessageBox("登录失败!");
			isLogin = FALSE;
		} 
		else
		{
			isLogin = TRUE;
			GetDlgItem(IDC_BTN_Login)->SetWindowTextA("注销");  //登录成功, 变成注销
			GetDlgItem(IDC_BTN_PlayCam)->EnableWindow(TRUE);  //播放按钮 有效
		}
	}
}
コード例 #6
0
ファイル: systerm.cpp プロジェクト: shulianghe/new-project
int cgiMain(void)
{
	char *ip;
	ip = (char *) calloc(32, sizeof(char));

	//初始化
	NET_DVR_Init();

	NET_DVR_SetLogToFile(3,"./sdkLog");

	//设置链接时间与重连时间
	NET_DVR_SetConnectTime(2000,1);
	NET_DVR_SetReconnect(10000,true);

	//注册设备
	LONG lUserID;
	NET_DVR_DEVICEINFO_V30 struDevice;
	//strcpy(ip,GetIP());
	lUserID = NET_DVR_Login_V30("192.168.1.64""",8000,"admin","12345",&struDevice);
	if(lUserID < 0)
	{
		printf("Login in ERROR:%d\n",NET_DVR_GetLastError());
		NET_DVR_Cleanup();
		return 1;
	}
	printf("login success!\n");
	free(ip);
	
	cgiHeaderContentType("Text/html");
	//while(1){
		if(cgiFormSubmitClicked("reboot") == cgiFormSuccess)
		{
			TestRebootDVR(lUserID);
		}

		if(cgiFormSubmitClicked("Alarm") == cgiFormSuccess)
		{
			if(Demo_Alarm() == HPR_ERROR)
				goto EXIT;
		}
		
		if(cgiFormSubmitClicked("record") == cgiFormSuccess)
		{
			if(record() == HPR_ERROR)
				goto EXIT;
		}
	//}
	
EXIT:
	NET_DVR_Logout_V30(lUserID);
	NET_DVR_Cleanup();

	return 0;
}
コード例 #7
0
ファイル: HaiKangSDK.cpp プロジェクト: dulton/brpj
bool CHaikangSDK::StartPlay(int screenNo,char *name,char *sip,int nPort,int channel,
							char *user,char *psw,HWND hWnd,int subtype,int Direction)
{
	if(m_LoginHandle[screenNo] != -1)
	{
		StopPlay(screenNo);
	}
	//---------------------------------------
	// 注册设备
	m_direction[screenNo]=Direction;
	NET_DVR_DEVICEINFO_V30 struDeviceInfo;
	m_LoginHandle[screenNo] = NET_DVR_Login_V30(sip, nPort, user, psw, &struDeviceInfo);
	if (m_LoginHandle[screenNo] < 0)
	{
		DlgMain->ShowCameraMessage(name,"Login error!",FALSE);
		printf("Login error, %d\n", NET_DVR_GetLastError());
		//NET_DVR_Cleanup();
		return false;
	}

	//---------------------------------------
	//设置异常消息回调函数
	NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL);

	//---------------------------------------
	//启动预览并设置回调数据流
	NET_DVR_CLIENTINFO ClientInfo = {0};
	//需要SDK解码时句柄设为有效值,仅取流不解码时可设为空
	ClientInfo.hPlayWnd = NULL;
	ClientInfo.lChannel = channel;		//预览通道号
	//最高位(31)为0表示主码流,为1表示子码流0~30位表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式;
	if(subtype == 0)
		ClientInfo.lLinkMode = 0;
	else
		ClientInfo.lLinkMode = 0x80000000;
	ClientInfo.sMultiCastIP = NULL;	//多播地址,需要多播预览时配置
  
	BOOL bPreviewBlock = false;       //请求码流过程是否阻塞,0:否,1:是
	m_RealHandle[screenNo] = NET_DVR_RealPlay_V30(m_LoginHandle[screenNo], &ClientInfo, g_RealDataCallBack_V30, this, 0);
	if (m_RealHandle[screenNo] < 0)
	{
		DlgMain->ShowCameraMessage(name,"Play error!",FALSE);
		printf("NET_DVR_RealPlay_V30 error\n");
		NET_DVR_Logout(m_LoginHandle[screenNo]);
	//	NET_DVR_Cleanup();
		m_LoginHandle[screenNo] = -1;
		return false;
	}

	DlgMain->ShowCameraMessage(name,"连接成功",FALSE);
	return true;
}
コード例 #8
0
ファイル: mainwindow.cpp プロジェクト: lipeng260/HikDemo
void MainWindow::on_pushButton_clicked()
{
    qDebug("button clicked");
    // 注册设备
    NET_DVR_DEVICEINFO_V30 struDeviceInfo;
    lUserID = NET_DVR_Login_V30("192.168.13.20", 8000, "admin", "1qaz2wsx", &struDeviceInfo);
    if (lUserID < 0)
    {
         qDebug("Login error, %d\n", NET_DVR_GetLastError());
         NET_DVR_Cleanup();
         return;
    }

    //---------------------------------------
    //设置异常消息回调函数
    NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL);

    //---------------------------------------
    //启动预览并设置回调数据流
    //HWND hWnd = (HWND)ui->frame->winId();     //获取窗口句柄
    movie.hWnd = (HWND)ui->frame->winId();     //获取窗口句柄
    qDebug("hWnd:%d", movie.hWnd);
    NET_DVR_PREVIEWINFO struPlayInfo = {0};
    //struPlayInfo.hPlayWnd = hWnd;         //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空
    struPlayInfo.lChannel     = 1;       //预览通道号
    struPlayInfo.dwStreamType = 0;       //0-主码流,1-子码流,2-码流3,3-码流4,以此类推
    struPlayInfo.dwLinkMode   = 0;       //0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP

    lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, PsDataCallBack, &movie);
    if (lRealPlayHandle < 0)
    {
        DWORD error = NET_DVR_GetLastError();
        qDebug("NET_DVR_RealPlay_V40 error, %d\n" , error);
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    qDebug("NET_DVR_RealPlay_V40 ok!");
    //QThread::sleep(10000);
    ////---------------------------------------
    ////关闭预览
    //NET_DVR_StopRealPlay(lRealPlayHandle);
    ////注销用户
    //NET_DVR_Logout(lUserID);
    ////释放SDK资源
    //NET_DVR_Cleanup();

    return;
}
コード例 #9
0
ファイル: FYCameraLogin.cpp プロジェクト: dulton/VideoPlayer
LONG FYCameraLogin::LogInDev(FY_CameraInfo CameraInfo)
{
	//---------------------------------------
	// 注册设备
	LONG lUserID;
	NET_DVR_DEVICEINFO_V30 struDeviceInfo;
	lUserID = NET_DVR_Login_V30(CameraInfo.HostIP, CameraInfo.HostPort, CameraInfo.UserName, CameraInfo.Password, &struDeviceInfo);
	if (lUserID < 0)
	{
		printf("Login error, %d\n", NET_DVR_GetLastError());
		NET_DVR_Cleanup();
		return 0;
	}
	m_lUserID = lUserID;
	m_CameraInfo = CameraInfo;
	return lUserID;
}
コード例 #10
0
ファイル: MediaTranStore.c プロジェクト: dulton/nvr
void * HK_Store_Thread(void * para){

    /*info to login HK camera*/
    char HK_userName[] = "admin";
    char HK_password[] = "12345";
    int stopResult = 0;

    LONG lUserID = 0;

    LONG streamHandle = 0;
    //unsigned int NVR_recordHandle = 0;

    NET_DVR_DEVICEINFO_V30 struDeviceInfo;
    NET_DVR_CLIENTINFO ClientInfo = {0};
    //ClientInfo.hPlayWnd = NULL;
    ClientInfo.lChannel = 1;
    ClientInfo.lLinkMode = 0;
    ClientInfo.sMultiCastIP = NULL;


    RecordParas *t_para = (RecordParas *)para;
    HKcameraArgs hkargs;

    //hkargs.NVR_LoginID = t_para->NVR_LoginID;//nvr server loginID
    strcpy(hkargs.NAR_cameraID, t_para->cameraID);//the VolID in nvr server
    hkargs.block_flag = 0;
    hkargs.NAR_recordHandle = 0;
    hkargs.HK_streamHandle = &streamHandle;

    while(1){
    	//-----------Init
    	NET_DVR_Init();
        hkargs.block_flag = 0;

    	//------------Set Connecttime and ReconnectTime
    	NET_DVR_SetConnectTime(2000,1);
    	NET_DVR_SetReconnect(10000,TRUE);

    	//-------------HKLogin
    	lUserID = NET_DVR_Login_V30(t_para->cameraIP, t_para->cameraPort, HK_userName, HK_password, &struDeviceInfo);
    	if(lUserID < 0){
    	    syslog(LOG_ERR,"connect HK IPC %s failed! errorCode: %d\n", t_para->cameraIP, NET_DVR_GetLastError());
    	    NET_DVR_Cleanup();//clear all the info
            continue;
    	}
        syslog(LOG_ERR,"connect HK IPC %s sucess!\n", t_para->cameraIP);

	//set exception callback function
    	NET_DVR_SetExceptionCallBack_V30(0, NULL, HK_RP_Exp_Callback, &hkargs);

	//get data stream and store
   	streamHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, HK_Store_CallBack, &hkargs, 0);
        if(streamHandle < 0){
            NET_DVR_Logout(lUserID);//get wrong handle ,logout
            NET_DVR_Cleanup();
            continue;
    	}
    	while(!hkargs.block_flag){ 
    	}
        stopResult = NET_DVR_StopRealPlay(streamHandle);
        syslog(LOG_INFO,"(InHKTransdata) stoped real play ? result:%d\n", stopResult);
        NET_DVR_Logout_V30(lUserID);
        syslog(LOG_INFO,"(InHKTransdata) HKcamera Logout(loginID was %d)\n",lUserID);
        NET_DVR_Cleanup();
        if(hkargs.block_flag == 1){
			break;
		}
    }
	return NULL;
}