示例#1
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;
}
示例#2
0
文件: ClientDlg.cpp 项目: winsel/VS
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);
	}
}