// AddSvrInfo.cpp : implementation file // #include "stdafx.h" #include "newclient.h" #include "AddSvrInfo.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAddSvrInfo dialog extern SERVER_INFO serverinfo[MAXIPNUMBER]; extern IP_INFO allipinfo[MAXIPNUMBER][MAXCHANNUM]; CAddSvrInfo::CAddSvrInfo(CWnd* pParent /*=NULL*/) : CDialog(CAddSvrInfo::IDD, pParent) { //{{AFX_DATA_INIT(CAddSvrInfo) m_ServerName = _T("test"); m_UserName = _T("admin"); m_UserPSW = _T("12345"); m_ServerPort = 8000; //}}AFX_DATA_INIT } void CAddSvrInfo::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAddSvrInfo) DDX_Control(pDX, IDC_SVRIP, m_ServerIPCtrl); DDX_Text(pDX, IDC_SVRNAME, m_ServerName); DDX_Text(pDX, IDC_SVRUSERNAME, m_UserName); DDX_Text(pDX, IDC_SVRPSW, m_UserPSW); DDX_Text(pDX, IDC_SVRPORT, m_ServerPort); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAddSvrInfo, CDialog) //{{AFX_MSG_MAP(CAddSvrInfo) ON_BN_CLICKED(IDC_EXIT, OnExit) ON_BN_CLICKED(IDC_ADDSVROK, OnAddsvrok) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAddSvrInfo message handlers // 函数g_IPToStr(DWORD dip)将dip转化成字符串的IP地址; void g_IPToStr(DWORD dip, char outbuf[16]) { ZeroMemory(outbuf,16); WORD add1,add2,add3,add4; add1=(WORD)(dip&255); add2=(WORD)((dip>>8)&255); add3=(WORD)((dip>>16)&255); add4=(WORD)((dip>>24)&255); sprintf(outbuf,"%d.%d.%d.%d",add4,add3,add2,add1); } void CAddSvrInfo::OnAddsvrok() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (m_ServerName == "") { AfxMessageBox("请输入服务器名称!"); return; } if (m_ServerIPCtrl.IsBlank()) { AfxMessageBox("请输入服务器地址!"); return; } if(m_ServerPort <= 0) { AfxMessageBox("非法的端口号"); return; } if((strlen(m_UserName) > 16) || (strlen(m_UserPSW) > 16)) { AfxMessageBox("用户名和密码不能超过16位!"); return; } int i; DWORD dwServerIP; char csServerIP[16]; char cUserName[100]; char cPassword[100]; char cTemp[100]; NET_DVR_DEVICEINFO DeviceInfo; LONG lUserID = -1; DWORD dwReturned = 0; CString sTemp; m_ServerIPCtrl.GetAddress(dwServerIP); memset(csServerIP, 0, 16); g_IPToStr(dwServerIP, csServerIP); memset(cUserName, 0, 100); strncpy(cUserName, m_UserName, MAX_NAMELEN); memset(cPassword, 0, 100); strncpy(cPassword, m_UserPSW, PASSWD_LEN); lUserID = NET_DVR_Login(csServerIP,m_ServerPort,cUserName, cPassword, &DeviceInfo); if(lUserID < 0) { int nErr = NET_DVR_GetLastError(); sTemp.Format("\nERROR: NET_DVR_Login = %d ## WSASocketError = %d\n", nErr, WSAGetLastError()); TRACE(sTemp); if(nErr == NET_DVR_PASSWORD_ERROR) { AfxMessageBox("用户名密码错误!"); } //TODO: 其他错误值 else { AfxMessageBox("由于网络原因或DVR忙, 注册失败!"); } return; } NET_DVR_NETCFG netcfg; memset(&netcfg, 0, sizeof(netcfg)); if(!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_NETCFG, 0,&netcfg, sizeof(NET_DVR_NETCFG), &dwReturned)) { sTemp.Format("获取服务器配置信息失败: NET_DVR_GET_NETCFG = %d \n", NET_DVR_GetLastError()); TRACE(sTemp); AfxMessageBox(sTemp); } NET_DVR_DEVICECFG DeviceCfg; memset(&DeviceCfg, 0, sizeof(DeviceCfg)); if (!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_DEVICECFG, 0, &DeviceCfg, sizeof(DeviceCfg), &dwReturned)) { sTemp.Format("%s 获取设备参数失败! ", csServerIP); TRACE(sTemp); AfxMessageBox(sTemp); } TRACE("\n### DeviceCfg.dwSoftwareVersion = 0x%x\n", DeviceCfg.dwSoftwareVersion); serverinfo[m_iServerNum].m_dwDevSoftVersion = DeviceCfg.dwSoftwareVersion; serverinfo[m_iServerNum].m_csServerAdminName.Format("%s",m_UserName); serverinfo[m_iServerNum].m_csServerAdminPasswd.Format("%s",m_UserPSW); serverinfo[m_iServerNum].m_iServerChannelNumber = DeviceInfo.byChanNum; serverinfo[m_iServerNum].m_dwServerIPvalue = dwServerIP; serverinfo[m_iServerNum].m_csServerIP.Format("%s",csServerIP); serverinfo[m_iServerNum].m_csServerName.Format("%s",m_ServerName); serverinfo[m_iServerNum].m_wServerPort = m_ServerPort; serverinfo[m_iServerNum].m_wServerType = DeviceInfo.byDVRType; serverinfo[m_iServerNum].m_lStartChannel = DeviceInfo.byStartChan; serverinfo[m_iServerNum].m_dwAlarmInNum = DeviceInfo.byAlarmInPortNum; serverinfo[m_iServerNum].m_dwAlarmOutNum = DeviceInfo.byAlarmOutPortNum; serverinfo[m_iServerNum].m_dwDiskNum = DeviceInfo.byDiskNum; serverinfo[m_iServerNum].m_lServerID = lUserID; serverinfo[m_iServerNum].m_csServerMultiIP = netcfg.sMultiCastIP; serverinfo[m_iServerNum].m_dwServerMultiIPvalue = inet_addr(netcfg.sMultiCastIP); ZeroMemory(cTemp, 100); memcpy(cTemp, DeviceInfo.sSerialNumber, SERIALNO_LEN); serverinfo[m_iServerNum].m_csSerialNumber.Format("%s", cTemp); for(i = 0; i < DeviceInfo.byChanNum; i++) { allipinfo[m_iServerNum][i].m_csChanName.Format("通道%d",(i+DeviceInfo.byStartChan)); allipinfo[m_iServerNum][i].m_iChannel = i+DeviceInfo.byStartChan; allipinfo[m_iServerNum][i].m_dwAddress=0; allipinfo[m_iServerNum][i].m_wJMQtype=0; allipinfo[m_iServerNum][i].m_dwProtocol=0; allipinfo[m_iServerNum][i].m_dwAlarmlevel=0; allipinfo[m_iServerNum][i].m_csUser.Format("%s",serverinfo[m_iServerNum].m_csServerAdminName); allipinfo[m_iServerNum][i].m_csPassword.Format("%s",serverinfo[m_iServerNum].m_csServerAdminPasswd); allipinfo[m_iServerNum][i].m_iServerNum = m_iServerNum; allipinfo[m_iServerNum][i].m_iChannelNum = i; allipinfo[m_iServerNum][i].m_csIP.Format("%s",serverinfo[m_iServerNum].m_csServerIP); allipinfo[m_iServerNum][i].m_dwIPvalue = serverinfo[m_iServerNum].m_dwServerIPvalue; allipinfo[m_iServerNum][i].m_csMultiIP = netcfg.sMultiCastIP; allipinfo[m_iServerNum][i].m_dwMultiIPvalue = inet_addr(allipinfo[m_iServerNum][i].m_csMultiIP); allipinfo[m_iServerNum][i].m_wServerport = serverinfo[m_iServerNum].m_wServerPort; allipinfo[m_iServerNum][i].m_bChoosed = FALSE; allipinfo[m_iServerNum][i].m_lServerID = lUserID; if(i >= (int)DeviceInfo.byChanNum) { allipinfo[m_iServerNum][i].m_iChannel = -1 ; allipinfo[m_iServerNum][i].m_bChoosed = FALSE; allipinfo[m_iServerNum][i].m_lServerID = -1; allipinfo[m_iServerNum][i].m_iChannelNum = -1; } } m_bChanged = TRUE; CDialog::OnOK(); } void CAddSvrInfo::OnExit() { // TODO: Add your control notification handler code here CDialog::OnOK(); } BOOL CAddSvrInfo::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_bChanged = FALSE; m_ServerIPCtrl.SetAddress(0xc0000019); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CAddSvrInfo::OnCancel() { // TODO: Add extra cleanup here // CDialog::OnCancel(); }