void CClientDlg::OnBtnLogout() { // TODO: Add your control notification handler code here if(m_bRecordStatus) { CLIENT_RecordStop(); m_bRecordStatus = FALSE; } if(0 != m_hTalkHandle) { CLIENT_StopTalkEx(m_hTalkHandle); m_hTalkHandle = 0; } BOOL bRet = CLIENT_Logout(m_lLoginHandle); if(bRet) { m_lLoginHandle = 0; GetDlgItem(IDC_BTN_LOGIN)->EnableWindow(TRUE); GetDlgItem(IDC_BTN_LOGOUT)->EnableWindow(FALSE); GetDlgItem(IDC_BTN_STARTTALK)->EnableWindow(FALSE); GetDlgItem(IDC_BTN_STOPTALK)->EnableWindow(FALSE); m_ctlEncodeType.ResetContent(); m_ctlSpeakerChl.ResetContent(); } else { MessageBox(ConvertString("Logout failed!"), ConvertString("Prompt")); } }
static __inline__ int dah_logout(long user_id) { CLIENT_StopListen(user_id); if (CLIENT_Logout(user_id)) { show_debug("dah_logout() successful, user_id: %d\n", (int)user_id); return 0; } else return -1; }
void CRealPlayXCtrl::OnDestroy() { COleControl::OnDestroy(); // TODO: Add your message handler code here if(0 != m_LoginID) { CLIENT_Logout(m_LoginID); } //清空SDK, 释放占用的资源 CLIENT_Cleanup(); }
/*---------------------------------- 函数功能:终止设备使用 调用参数:特定设备的结构:LOGIN_PARAM的指针: 调用成功,返回TRUE;调用失败,返回FALSE。其它需要返回的参数,置于结构:INIT_PARAM中。 函数说明: -----------------------------------*/ _EXT_C_DEVCAM_API BOOL CAM_UnInit(CommonParam *commonParam){ if (commonParam == NULL){ commonParam->devError = UnInitError; return FALSE; } if(commonParam->deviceType = NET_IPC_SERIAL){ } if(commonParam->deviceType = NET_NVR_SERIAL){ delete []commonParam->cameraParam; commonParam->cameraParam = NULL; } return CLIENT_Logout(commonParam->loginID); }
void CPannelDecoder::OnBtnDelDecoder() { // TODO: Add your control notification handler code here CNVDSDKDemoDlg *pParentDlg = (CNVDSDKDemoDlg*)this->GetParent(); HTREEITEM selectNode = pParentDlg->m_decoderTree.GetSelectedItem(); if (selectNode != NULL) { HTREEITEM parentNode = selectNode; DWORD nData = pParentDlg->m_decoderTree.GetItemData(selectNode); if (nData <= 16 && nData >= 0) { parentNode = pParentDlg->m_decoderTree.GetParentItem(selectNode); } DECODER_INFO *pSelectDecoder = (DECODER_INFO *)pParentDlg->m_decoderTree.GetItemData(parentNode); if (pSelectDecoder != NULL) { CReadWriteMutexLock lock(pParentDlg->m_csDecoder); list<DECODER_INFO*>::iterator it = pParentDlg->m_lstDecoders.begin(); while (it != pParentDlg->m_lstDecoders.end()) { DECODER_INFO *pDecoderInfo = (DECODER_INFO *)(*it); if (pDecoderInfo != NULL) { if (pDecoderInfo->lLoginID == pSelectDecoder->lLoginID) { CLIENT_Logout(pSelectDecoder->lLoginID); delete pDecoderInfo; pParentDlg->m_lstDecoders.erase(it); pParentDlg->m_bUpdataTree2 = TRUE; break; } } ++it; } } } else { MessageBox(ConvertString("Select NVD first!"), ConvertString("Prompt")); } }
void CClientDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: Add your message handler code here if(m_bRecordStatus) { CLIENT_RecordStop(); } if(0 != m_hTalkHandle) { CLIENT_StopTalkEx(m_hTalkHandle); } if (m_lLoginHandle != 0) { CLIENT_Logout(m_lLoginHandle); } }
/*---------------------------------- 函数功能:获取码流分辨率 调用参数: 返回参数: 函数说明:连接NVR后,获取单个摄像头码流分辨率 -----------------------------------*/ _EXT_C_DEVCAM_API BOOL CAM_GetSize(CommonParam *commonParam,long channel){ if (commonParam == NULL){ return FALSE; } if(commonParam->deviceType == NET_IPC_SERIAL){ return TRUE; } if(commonParam->cameraParam[channel].playHwnd == NULL){ commonParam->cameraParam[channel].playHwnd = CreateWindow("EDIT",NULL,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,NULL,NULL); } NET_DEVICEINFO deviceInfo = {0}; int error; DHDEV_CHANNEL_CFG channelConfig = {0}; LDWORD bytesReturned; commonParam->cameraParam[channel].loginID = CLIENT_Login(commonParam->cameraParam[channel].deviceIP,commonParam->cameraParam[channel].devicePort,commonParam->cameraParam[channel].userName,commonParam->cameraParam[channel].passWord,&deviceInfo,&error); if(error != 0){ return FALSE; } CLIENT_GetDevConfig(commonParam->cameraParam[channel].loginID,DH_DEV_CHANNELCFG,0,&channelConfig,sizeof(channelConfig),&bytesReturned); GetSize(channelConfig.stMainVideoEncOpt->byImageSize,commonParam->cameraParam[channel].frameWidth,commonParam->cameraParam[channel].frameHeight); CLIENT_Logout(commonParam->cameraParam[channel].loginID); return TRUE; }
int main(void) { /* * 程序连接上设备后,用户可以通过拔网线或其他方式使设备断线,然后再恢复网络。 */ NET_DEVICEINFO deviceInfo ={0}; unsigned long lLogin; CLIENT_Init(DisConnectFunc,0);//初始化sdk,设置断线回调函数 CLIENT_SetAutoReconnect(AutoConnectFunc,0);//设置断线重连成功的回调函数。不调用此接口,sdk将不进行断线重连。 lLogin = CLIENT_Login("10.7.4.24",37777,"3","",&deviceInfo);//登陆设备,用户需另选设备。 if(lLogin <= 0) { cout<<"登陆设备失败"<<endl; } else { cout<<"登陆设备成功,按任意键退出程序。"<<endl; cout<<"网络故障1分钟如果没有恢复,sdk会认为断线,请耐心等待"<<endl; _getch(); } CLIENT_Logout(lLogin); CLIENT_Cleanup(); return 0; }
// 连接设备 BOOL CRealPlayXCtrl::SetDeviceInfo(LPCTSTR strDvrIP, long nPort, short nChannel, LPCTSTR strUserId, LPCTSTR strUserPwd) { // TODO: Add your dispatch handler code here BOOL bSuccess = FALSE; // 不相同设备,重新登入 if(strDvrIP != m_strDvrIP) { // 登入之前先注销 if(0 != m_LoginID) { CLIENT_Logout(m_LoginID); m_LoginID = 0; m_strDvrIP = ""; //刷新页面 Invalidate(); } int err = 0; //存储可能的错误返回值 NET_DEVICEINFO deviceInfo; // 调用登入接口 long lRet = CLIENT_Login((LPSTR)strDvrIP,(WORD)nPort,(LPSTR)strUserId,(LPSTR)strUserPwd,&deviceInfo,&err); if(0 != lRet) { m_LoginID = lRet; m_nChannel = nChannel; m_strDvrIP = strDvrIP; bSuccess = TRUE; } else { m_LoginID = 0; m_nChannel = -1; bSuccess = FALSE; ShowLoginErrorReason(err); } } else { // 相同设备,没有登入的话再登入 if(0 == m_LoginID) { int err = 0; //存储可能的错误返回值 NET_DEVICEINFO deviceInfo; // 调用登入接口 long lRet = CLIENT_Login((LPSTR)strDvrIP,(WORD)nPort,(LPSTR)strUserId,(LPSTR)strUserPwd,&deviceInfo,&err); if(0 != lRet) { m_LoginID = lRet; m_nChannel = nChannel; bSuccess = TRUE; } else { m_LoginID = 0; m_nChannel = -1; bSuccess = FALSE; ShowLoginErrorReason(err); } } else { m_nChannel = nChannel; bSuccess = TRUE; } } return bSuccess; }