private void btnDevCfgGet_Click(object sender, EventArgs e) { UInt32 dwReturn = 0; Int32 nSize = Marshal.SizeOf(m_struDeviceCfg); IntPtr ptrDeviceCfg = Marshal.AllocHGlobal(nSize); Marshal.StructureToPtr(m_struDeviceCfg, ptrDeviceCfg, false); if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_DEVICECFG_V40, -1, ptrDeviceCfg, (UInt32)nSize, ref dwReturn)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); strErr = "NET_DVR_GET_DEVICECFG_V40 failed, error code= " + iLastErr; //获取设备参数失败,输出错误号 Failed to get the basic parameters of device and output the error code MessageBox.Show(strErr); } else { m_struDeviceCfg = (CHCNetSDK.NET_DVR_DEVICECFG_V40)Marshal.PtrToStructure(ptrDeviceCfg, typeof(CHCNetSDK.NET_DVR_DEVICECFG_V40)); textBoxDevName.Text = System.Text.Encoding.GetEncoding("GBK").GetString(m_struDeviceCfg.sDVRName); textBoxDevType.Text = System.Text.Encoding.UTF8.GetString(m_struDeviceCfg.byDevTypeName); textBoxANum.Text = Convert.ToString(m_struDeviceCfg.byChanNum); textBoxIPNum.Text = Convert.ToString(m_struDeviceCfg.byIPChanNum + 256 * m_struDeviceCfg.byHighIPChanNum); textBoxZeroNum.Text = Convert.ToString(m_struDeviceCfg.byZeroChanNum); textBoxNetNum.Text = Convert.ToString(m_struDeviceCfg.byNetworkPortNum); textBoxAlarmInNum.Text = Convert.ToString(m_struDeviceCfg.byAlarmInPortNum); textBoxAlarmOutNum.Text = Convert.ToString(m_struDeviceCfg.byAlarmOutPortNum); textBoxDevSerial.Text = System.Text.Encoding.UTF8.GetString(m_struDeviceCfg.sSerialNumber); uint iVer1 = (m_struDeviceCfg.dwSoftwareVersion >> 24) & 0xFF; uint iVer2 = (m_struDeviceCfg.dwSoftwareVersion >> 16) & 0xFF; uint iVer3 = m_struDeviceCfg.dwSoftwareVersion & 0xFFFF; uint iVer4 = (m_struDeviceCfg.dwSoftwareBuildDate >> 16) & 0xFFFF; uint iVer5 = (m_struDeviceCfg.dwSoftwareBuildDate >> 8) & 0xFF; uint iVer6 = m_struDeviceCfg.dwSoftwareBuildDate & 0xFF; textBoxDevVersion.Text = "V" + iVer1 + "." + iVer2 + "." + iVer3 + " Build " + string.Format("{0:D2}", iVer4) + string.Format("{0:D2}", iVer5) + string.Format("{0:D2}", iVer6); } Marshal.FreeHGlobal(ptrDeviceCfg); }
public bool Login(bool bStatus)//true said add node login, false for the existing node to log in { LoginCallBackFlag = false; m_struDeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30(); CHCNetSDK.NET_DVR_DEVICEINFO_V30 struDeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30(); struDeviceInfo.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN]; CHCNetSDK.NET_DVR_NETCFG_V50 struNetCfg = new CHCNetSDK.NET_DVR_NETCFG_V50(); struNetCfg.Init(); CHCNetSDK.NET_DVR_DEVICECFG_V40 struDevCfg = new CHCNetSDK.NET_DVR_DEVICECFG_V40(); struDevCfg.sDVRName = new byte[CHCNetSDK.NAME_LEN]; struDevCfg.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN]; struDevCfg.byDevTypeName = new byte[CHCNetSDK.DEV_TYPE_NAME_LEN]; CHCNetSDK.NET_DVR_USER_LOGIN_INFO struLoginInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); CHCNetSDK.NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); struDeviceInfoV40.struDeviceV30.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN]; uint dwReturned = 0; int lUserID = -1; struLoginInfo.bUseAsynLogin = AysnLoginFlag; struLoginInfo.cbLoginResult = new CHCNetSDK.LoginResultCallBack(AsynLoginMsgCallback); if (bStatus) { struLoginInfo.sDeviceAddress = textBoxDeviceAddress.Text; struLoginInfo.sUserName = textBoxUserName.Text; struLoginInfo.sPassword = textBoxPassword.Text; ushort.TryParse(textBoxPort.Text, out struLoginInfo.wPort); } else { struLoginInfo.sDeviceAddress = g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chDeviceIP; struLoginInfo.sUserName = g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLoginUserName; struLoginInfo.sPassword = g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLoginPwd; struLoginInfo.wPort = (ushort)g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].lDevicePort; } lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLoginInfo, ref struDeviceInfoV40); if (struLoginInfo.bUseAsynLogin) { for (int i = 0; i < 1000; i++) { if (!LoginCallBackFlag) { Thread.Sleep(5); } else { break; } } if (!LoginCallBackFlag) { MessageBox.Show(Properties.Resources.asynloginTips, Properties.Resources.messageBoxTitle, MessageBoxButtons.OK, MessageBoxIcon.Information); } if (m_AysnLoginResult == 1) { lUserID = m_iUserID; struDeviceInfoV40.struDeviceV30 = m_struDeviceInfo; } else { MessageBox.Show(Properties.Resources.asynloginFailedTips, Properties.Resources.messageBoxTitle, MessageBoxButtons.OK, MessageBoxIcon.Information); return(false); } } if (lUserID < 0) { uint nErr = CHCNetSDK.NET_DVR_GetLastError(); string strTemp = string.Format("NET_DVR_Login_V40 [{0}]", textBoxDeviceAddress.Text); g_formList.AddLog(-1, AcsDemoPublic.OPERATION_FAIL_T, strTemp); if (nErr == CHCNetSDK.NET_DVR_PASSWORD_ERROR) { MessageBox.Show("user name or password error!"); if (1 == struDeviceInfoV40.bySupportLock) { string strTemp1 = string.Format("Left {0} try opportunity", struDeviceInfoV40.byRetryLoginTime); MessageBox.Show(strTemp1); } } else if (nErr == CHCNetSDK.NET_DVR_USER_LOCKED) { if (1 == struDeviceInfoV40.bySupportLock) { string strTemp1 = string.Format("user is locked, the remaining lock time is {0}", struDeviceInfoV40.dwSurplusLockTime); MessageBox.Show(strTemp1); } } else { MessageBox.Show("net error or dvr is busy!"); } return(false); } else { if (1 == struDeviceInfoV40.byPasswordLevel) { MessageBox.Show("default password, please change the password"); } else if (3 == struDeviceInfoV40.byPasswordLevel) { MessageBox.Show("risk password, please change the password"); } struDeviceInfo = struDeviceInfoV40.struDeviceV30; } if (bStatus) { g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLocalNodeName = textBoxLocalNode.Text; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLoginPwd = textBoxPassword.Text; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chDeviceIP = textBoxDeviceAddress.Text; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chLoginUserName = textBoxUserName.Text; int.TryParse(textBoxPort.Text, out g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].lDevicePort); } g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_Login_V40"); g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byCharaterEncodeType = struDeviceInfoV40.byCharEncodeType; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].lLoginID = lUserID; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chSerialNumber = System.Text.Encoding.UTF8.GetString(struDeviceInfo.sSerialNumber).TrimEnd('\0'); g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceIndex = m_iDeviceIndex; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceType = (int)struDeviceInfo.wDevType; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceChanNum = (int)(struDeviceInfo.byChanNum + struDeviceInfo.byIPChanNum + struDeviceInfo.byHighDChanNum * 256); g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iStartChan = (int)struDeviceInfo.byStartChan; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDiskNum = (int)struDeviceInfo.byDiskNum; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iAlarmInNum = (int)struDeviceInfo.byAlarmInPortNum; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iAlarmOutNum = (int)struDeviceInfo.byAlarmOutPortNum; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iAudioNum = (int)struDeviceInfo.byAlarmOutPortNum; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iAnalogChanNum = (int)struDeviceInfo.byChanNum; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum = (int)(struDeviceInfo.byIPChanNum + struDeviceInfo.byHighDChanNum * 256); g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byZeroChanNum = struDeviceInfo.byZeroChanNum; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byStartDTalkChan = struDeviceInfo.byStartDTalkChan; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byLanguageType = struDeviceInfo.byLanguageType; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byMirrorChanNum = struDeviceInfo.byMirrorChanNum; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].wStartMirrorChanNo = struDeviceInfo.wStartMirrorChanNo; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byAudioInputChanNum = struDeviceInfo.byVoiceInChanNum; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byStartAudioInputChanNo = struDeviceInfo.byStartVoiceInChanNo; if (1 == (struDeviceInfo.bySupport & 0x80)) { g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byMainProto = (byte)(struDeviceInfo.byMainProto + 2); g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySubProto = (byte)(struDeviceInfo.bySubProto + 2); } else { g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byMainProto = struDeviceInfo.byMainProto; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySubProto = struDeviceInfo.bySubProto; } g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySupport1 = struDeviceInfo.bySupport1; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySupport2 = struDeviceInfo.bySupport2; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].bySupport7 = struDeviceInfo.bySupport7; g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].byLanguageType = struDeviceInfo.byLanguageType; uint dwSize = (uint)Marshal.SizeOf(struNetCfg); IntPtr ptrNetCfg = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(struNetCfg, ptrNetCfg, false); if (!CHCNetSDK.NET_DVR_GetDVRConfig(lUserID, CHCNetSDK.NET_DVR_GET_NETCFG_V50, 0, ptrNetCfg, dwSize, ref dwReturned)) { g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_GET_NETCFG_V50"); } else { //IPv6 temporary unrealized struNetCfg = (CHCNetSDK.NET_DVR_NETCFG_V50)Marshal.PtrToStructure(ptrNetCfg, typeof(CHCNetSDK.NET_DVR_NETCFG_V50)); g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chDeviceMultiIP = struNetCfg.struMulticastIpAddr.sIpV4; string strTemp = string.Format("multi-cast ipv4 {0}", struNetCfg.struMulticastIpAddr.sIpV4); g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, strTemp); } Marshal.FreeHGlobal(ptrNetCfg); dwReturned = 0; uint dwSize2 = (uint)Marshal.SizeOf(struDevCfg); IntPtr ptrDevCfg = Marshal.AllocHGlobal((int)dwSize2); Marshal.StructureToPtr(struDevCfg, ptrDevCfg, false); if (!CHCNetSDK.NET_DVR_GetDVRConfig(lUserID, CHCNetSDK.NET_DVR_GET_DEVICECFG_V40, 0, ptrDevCfg, dwSize2, ref dwReturned)) { g_formList.AddLog(lUserID, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_GET_DEVICECFG_V40"); } else { struDevCfg = (CHCNetSDK.NET_DVR_DEVICECFG_V40)Marshal.PtrToStructure(ptrDevCfg, typeof(CHCNetSDK.NET_DVR_DEVICECFG_V40)); if (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceType != (int)struDevCfg.wDevType) { // string strTemp = null; string strShow = null; // g_formList.g_StringLanType(ref strTemp, "登陆返回设备类型值与获取设备参数返回设备类型值不同", "returned device type is different between login and get device config"); strShow = "returned device type is different between login and get device config" + g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iDeviceType.ToString() + " " + struDevCfg.wDevType.ToString(); MessageBox.Show(strShow); } g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].chDeviceName = System.Text.Encoding.UTF8.GetString(struDevCfg.byDevTypeName).Trim('\0'); g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].dwDevSoftVer = struDevCfg.dwSoftwareVersion; } Marshal.FreeHGlobal(ptrDevCfg); if (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum >= 0) { if (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum == 0) { g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruIPParaCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40[1]; } else { if (g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum % CHCNetSDK.MAX_CHANNUM_V30 == 0) { g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruIPParaCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40[g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum / CHCNetSDK.MAX_CHANNUM_V30]; } else { g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].pStruIPParaCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40[g_deviceTree.g_struDeviceInfo[m_iDeviceIndex].iIPChanNum / CHCNetSDK.MAX_CHANNUM_V30 + 1]; } } } //if (DoGetDeviceResoureCfg(m_iDeviceIndex)) //{ //} return(true); }
/// <summary> /// 登录NVR /// </summary> private void LoginNVR() { try { uint dwReturned = 0; InitDeviceInfo(); CHCNetSDK.NET_DVR_USER_LOGIN_INFO struLoginInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); CHCNetSDK.NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); //string DVRIPAddress = cameraParm.DEVICEIP; //Int16 DVRPortNumber = (short)cameraParm.PORT; //string DVRUserName = cameraParm.VIDEOUSERNAME; //string DVRPassword = cameraParm.PASSWORD; struLoginInfo.sDeviceAddress = Configurations.VideoIP; struLoginInfo.sUserName = Configurations.VideoUserName; struLoginInfo.sPassword = Configurations.VideoPSW; struLoginInfo.wPort = (ushort)Configurations.VideoPort; CHCNetSDK.NET_DVR_SetConnectTime(5000, 1);//设置超时时间 CHCNetSDK.NET_DVR_NETCFG_V30 struNetCfg = new CHCNetSDK.NET_DVR_NETCFG_V30(); struNetCfg.init(); CHCNetSDK.NET_DVR_DEVICECFG_V40 struDevCfg = new CHCNetSDK.NET_DVR_DEVICECFG_V40(); struDevCfg.sDVRName = new byte[CHCNetSDK.NAME_LEN]; struDevCfg.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN]; struDevCfg.byDevTypeName = new byte[CHCNetSDK.DEV_TYPE_NAME_LEN]; m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLoginInfo, ref struDeviceInfoV40); //m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref dev); //dicChanInfo = nvrConfig.GetChanParm(m_lUserID, dev); //获取视频通道参数 if (m_lUserID == -1) { MessageBox.Show("视频登录失败!"); } else {//登录成功 IsLoginOk = true; struDeviceInfo = struDeviceInfoV40.struDeviceV30; } g_struDeviceInfo[m_iDeviceIndex].byCharaterEncodeType = struDeviceInfoV40.byCharEncodeType; g_struDeviceInfo[m_iDeviceIndex].lLoginID = m_lUserID; g_struDeviceInfo[m_iDeviceIndex].chSerialNumber = System.Text.Encoding.UTF8.GetString(struDeviceInfo.sSerialNumber).TrimEnd('\0'); g_struDeviceInfo[m_iDeviceIndex].iDeviceIndex = m_iDeviceIndex; g_struDeviceInfo[m_iDeviceIndex].iDeviceType = (int)struDeviceInfo.wDevType; g_struDeviceInfo[m_iDeviceIndex].iDeviceChanNum = (int)(struDeviceInfo.byChanNum + struDeviceInfo.byIPChanNum + struDeviceInfo.byHighDChanNum * 256); g_struDeviceInfo[m_iDeviceIndex].iStartChan = (int)struDeviceInfo.byStartChan; g_struDeviceInfo[m_iDeviceIndex].iDiskNum = (int)struDeviceInfo.byDiskNum; g_struDeviceInfo[m_iDeviceIndex].iAlarmInNum = (int)struDeviceInfo.byAlarmInPortNum; g_struDeviceInfo[m_iDeviceIndex].iAlarmOutNum = (int)struDeviceInfo.byAlarmOutPortNum; g_struDeviceInfo[m_iDeviceIndex].iAudioNum = (int)struDeviceInfo.byAlarmOutPortNum; g_struDeviceInfo[m_iDeviceIndex].iAnalogChanNum = (int)struDeviceInfo.byChanNum; g_struDeviceInfo[m_iDeviceIndex].iIPChanNum = (int)(struDeviceInfo.byIPChanNum + struDeviceInfo.byHighDChanNum * 256); g_struDeviceInfo[m_iDeviceIndex].byZeroChanNum = struDeviceInfo.byZeroChanNum; g_struDeviceInfo[m_iDeviceIndex].byStartDTalkChan = struDeviceInfo.byStartDTalkChan; g_struDeviceInfo[m_iDeviceIndex].byLanguageType = struDeviceInfo.byLanguageType; g_struDeviceInfo[m_iDeviceIndex].byMirrorChanNum = struDeviceInfo.byMirrorChanNum; g_struDeviceInfo[m_iDeviceIndex].wStartMirrorChanNo = struDeviceInfo.wStartMirrorChanNo; g_struDeviceInfo[m_iDeviceIndex].byAudioInputChanNum = struDeviceInfo.byVoiceInChanNum; g_struDeviceInfo[m_iDeviceIndex].byStartAudioInputChanNo = struDeviceInfo.byStartVoiceInChanNo; if (1 == (struDeviceInfo.bySupport & 0x80)) { g_struDeviceInfo[m_iDeviceIndex].byMainProto = (byte)(struDeviceInfo.byMainProto + 2); g_struDeviceInfo[m_iDeviceIndex].bySubProto = (byte)(struDeviceInfo.bySubProto + 2); } else { g_struDeviceInfo[m_iDeviceIndex].byMainProto = struDeviceInfo.byMainProto; g_struDeviceInfo[m_iDeviceIndex].bySubProto = struDeviceInfo.bySubProto; } g_struDeviceInfo[m_iDeviceIndex].bySupport1 = struDeviceInfo.bySupport1; g_struDeviceInfo[m_iDeviceIndex].bySupport2 = struDeviceInfo.bySupport2; g_struDeviceInfo[m_iDeviceIndex].bySupport7 = struDeviceInfo.bySupport7; g_struDeviceInfo[m_iDeviceIndex].byLanguageType = struDeviceInfo.byLanguageType; uint dwSize = (uint)Marshal.SizeOf(struNetCfg); IntPtr ptrNetCfg = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(struNetCfg, ptrNetCfg, false); if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_NETCFG_V30, 0, ptrNetCfg, dwSize, ref dwReturned)) { } else { //IPv6 temporary unrealized struNetCfg = (CHCNetSDK.NET_DVR_NETCFG_V30)Marshal.PtrToStructure(ptrNetCfg, typeof(CHCNetSDK.NET_DVR_NETCFG_V30)); g_struDeviceInfo[m_iDeviceIndex].chDeviceMultiIP = struNetCfg.struMulticastIpAddr.sIpV4; string strTemp = string.Format("multi-cast ipv4{0}", struNetCfg.struMulticastIpAddr.sIpV4); } Marshal.FreeHGlobal(ptrNetCfg); dwReturned = 0; uint dwSize2 = (uint)Marshal.SizeOf(struDevCfg); IntPtr ptrDevCfg = Marshal.AllocHGlobal((int)dwSize2); Marshal.StructureToPtr(struDevCfg, ptrDevCfg, false); if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_DEVICECFG_V40, 0, ptrDevCfg, dwSize2, ref dwReturned)) { } else { struDevCfg = (CHCNetSDK.NET_DVR_DEVICECFG_V40)Marshal.PtrToStructure(ptrDevCfg, typeof(CHCNetSDK.NET_DVR_DEVICECFG_V40)); if (g_struDeviceInfo[m_iDeviceIndex].iDeviceType != (int)struDevCfg.wDevType) { string strTemp = null; string strShow = null; strShow = strTemp + g_struDeviceInfo[m_iDeviceIndex].iDeviceType.ToString() + struDevCfg.wDevType.ToString(); MessageBox.Show(strShow); } g_struDeviceInfo[m_iDeviceIndex].chDeviceName = System.Text.Encoding.UTF8.GetString(struDevCfg.byDevTypeName).Trim('\0'); g_struDeviceInfo[m_iDeviceIndex].dwDevSoftVer = struDevCfg.dwSoftwareVersion; } Marshal.FreeHGlobal(ptrDevCfg); if (g_struDeviceInfo[m_iDeviceIndex].iIPChanNum >= 0) { if (g_struDeviceInfo[m_iDeviceIndex].iIPChanNum == 0) { g_struDeviceInfo[m_iDeviceIndex].pStruIPParaCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40[1]; } else { if (g_struDeviceInfo[m_iDeviceIndex].iIPChanNum % CHCNetSDK.MAX_CHANNUM_V30 == 0) { g_struDeviceInfo[m_iDeviceIndex].pStruIPParaCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40[g_struDeviceInfo[m_iDeviceIndex].iIPChanNum / CHCNetSDK.MAX_CHANNUM_V30]; } else { g_struDeviceInfo[m_iDeviceIndex].pStruIPParaCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40[g_struDeviceInfo[m_iDeviceIndex].iIPChanNum / CHCNetSDK.MAX_CHANNUM_V30 + 1]; } } } if (DoGetDeviceResoureCfg(m_iDeviceIndex)) { } } catch (Exception ex) { } }