// 连接设备 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; }
void CClientDlg::OnBtnLogin() { // TODO: Add your control notification handler code here UpdateData(TRUE); CString strIp = ""; CString strUser = ""; CString strPwd = ""; int nPort = 0; int nError = 0; NET_DEVICEINFO deviceInfo = {0}; GetDlgItemText(IDC_IPADDRESS_IP, strIp); GetDlgItemText(IDC_EDIT_USER, strUser); GetDlgItemText(IDC_EDIT_PWD, strPwd); nPort = GetDlgItemInt(IDC_EDIT_PORT); LONG lLoginHandle = CLIENT_Login((LPSTR)(LPCSTR)strIp, nPort, (LPSTR)(LPCSTR)strUser, (LPSTR)(LPCSTR)strPwd, &deviceInfo, &nError); if (lLoginHandle != 0) { m_lLoginHandle = lLoginHandle; GetDlgItem(IDC_BTN_LOGIN)->EnableWindow(FALSE); GetDlgItem(IDC_BTN_LOGOUT)->EnableWindow(TRUE); GetDlgItem(IDC_BTN_STARTTALK)->EnableWindow(TRUE); m_ctlEncodeType.ResetContent(); //Search the audio talk encode formats then device supported int retlen = 0; BOOL bSuccess = CLIENT_QueryDevState(m_lLoginHandle, DH_DEVSTATE_TALK_ECTYPE, (char*)&m_lstTalkEncode, sizeof(DHDEV_TALKFORMAT_LIST), &retlen, DEMO_SDK_WAITTIME); if (bSuccess && retlen == sizeof(DHDEV_TALKFORMAT_LIST)) { int nIndex = 0; CString str; for (int i = 0; i < m_lstTalkEncode.nSupportNum; i++) { switch(m_lstTalkEncode.type[i].encodeType) { case DH_TALK_DEFAULT: case DH_TALK_PCM: str = ConvertString("PCM"); break; case DH_TALK_G711a: str = ConvertString("G711a"); break; case DH_TALK_AMR: str = ConvertString("AMR"); break; case DH_TALK_G711u: str = ConvertString("G711u"); break; case DH_TALK_G726: str = ConvertString("G726"); break; case DH_TALK_AAC: str = ConvertString("AAC"); break; case DH_TALK_MP3: str = ConvertString("MP3"); break; default: str = ConvertString("Unknow"); break; } if (0 != str.Compare("Unknow")) { CString s; s.Format("_%d%s_%d%s", m_lstTalkEncode.type[i].nAudioBit, ConvertString("Bit"), m_lstTalkEncode.type[i].dwSampleRate, ConvertString("SampleRate")); str += s; } nIndex = m_ctlEncodeType.AddString(str); m_ctlEncodeType.SetItemData(nIndex, i); } if (m_ctlEncodeType.GetCount() > 0) { m_ctlEncodeType.SetCurSel(0); } } DWORD dwRetBytes = 0; DHDEV_SYSTEM_ATTR_CFG stuAttr = { sizeof(DHDEV_SYSTEM_ATTR_CFG) }; if (!CLIENT_GetDevConfig(lLoginHandle, DH_DEV_DEVICECFG, -1, &stuAttr, stuAttr.dwSize, &dwRetBytes, DEMO_SDK_WAITTIME)) { MessageBox(ConvertString("Get device info failed!"), ConvertString("Prompt")); } m_ctlSpeakerChl.EnableWindow(bSuccess); GetDlgItem(IDC_CHECK_SPEAK)->EnableWindow(bSuccess); for(int i=0; i<stuAttr.byTalkOutChanNum; i++) { char szTmp[MAX_PATH] = {0}; sprintf(szTmp,"speaker_%d", i); int nIndex = m_ctlSpeakerChl.AddString(szTmp); m_ctlSpeakerChl.SetItemData(nIndex, i); m_ctlSpeakerChl.SetCurSel(0); } } else { m_lLoginHandle = 0; ShowLoginErrorReason(nError); } }