/// <summary> /// Prisijungimas prie įeigos kontrolės įrenginio. /// </summary> /// <returns>Įeigos kontrolės įrenginio naudotojo ID. -1 jeigu nepavyko prisijungti prie įrenginio.</returns> public static int AccessControllerLogin() { Settings _settings = SettingsController.GetSettings(); if (CHCNetSDK.NET_DVR_Init() == false) { return(-1); } CHCNetSDK.NET_DVR_SetLogToFile(3, "./", false); 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]; struLoginInfo.sDeviceAddress = _settings.AccessControllerIP; struLoginInfo.sUserName = _settings.AccessControllerUsername; struLoginInfo.sPassword = _settings.AccessControllerPassword; ushort.TryParse(_settings.AccessControllerPort.ToString(), out struLoginInfo.wPort); int lUserID = -1; lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLoginInfo, ref struDeviceInfoV40); if (lUserID >= 0) { return(lUserID); } return(-1); }
public uint Login() { 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]; struLoginInfo.bUseAsynLogin = false; struLoginInfo.sDeviceAddress = DeviceIP; struLoginInfo.sUserName = LoginUsername; struLoginInfo.sPassword = LoginPassword; struLoginInfo.wPort = Port; UserID_ = CHCNetSDK.NET_DVR_Login_V40(ref struLoginInfo, ref struDeviceInfoV40); uint errorCode = 0; if (UserID_ >= 0) { errorCode = 0; Console.WriteLine("Login Successul"); } else { errorCode = CHCNetSDK.NET_DVR_GetLastError(); Console.WriteLine("Login failed. Error: " + errorCode); } return(errorCode); }
public string AddPerson(string IpAddress, string UserName, string Password, ushort Port, dynamic userInfo) { CHCNetSDK.NET_DVR_USER_LOGIN_INFO nET_DVR_USER_LOGIN_INFO = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); nET_DVR_USER_LOGIN_INFO.sDeviceAddress = IpAddress; nET_DVR_USER_LOGIN_INFO.wPort = Port; nET_DVR_USER_LOGIN_INFO.sUserName = UserName; nET_DVR_USER_LOGIN_INFO.sPassword = Password; nET_DVR_USER_LOGIN_INFO.bUseAsynLogin = false; CHCNetSDK.NET_DVR_DEVICEINFO_V40 nET_DVR_DEVICEINFO_V40 = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); nET_DVR_DEVICEINFO_V40.struDeviceV30.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN]; int userID = CHCNetSDK.NET_DVR_Login_V40(ref nET_DVR_USER_LOGIN_INFO, ref nET_DVR_DEVICEINFO_V40); string url = "PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json"; CHCNetSDK.NET_DVR_XML_CONFIG_INPUT nET_DVR_XML_CONFIG_INPUT = new CHCNetSDK.NET_DVR_XML_CONFIG_INPUT(); Int32 nInSize = Marshal.SizeOf(nET_DVR_XML_CONFIG_INPUT); nET_DVR_XML_CONFIG_INPUT.dwSize = (uint)Marshal.SizeOf(nET_DVR_XML_CONFIG_INPUT); nET_DVR_XML_CONFIG_INPUT.lpRequestUrl = Marshal.StringToHGlobalAnsi(url); nET_DVR_XML_CONFIG_INPUT.dwRequestUrlLen = (uint)url.Length; var json = new { UserInfo = userInfo }; var strJson = JsonConvert.SerializeObject(json); nET_DVR_XML_CONFIG_INPUT.lpInBuffer = Marshal.StringToHGlobalAnsi(strJson); nET_DVR_XML_CONFIG_INPUT.dwInBufferSize = (uint)strJson.Length; CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT nET_DVR_XML_CONFIG_OUTPUT = new CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT(); nET_DVR_XML_CONFIG_OUTPUT.dwSize = (uint)Marshal.SizeOf(nET_DVR_XML_CONFIG_INPUT); nET_DVR_XML_CONFIG_OUTPUT.lpOutBuffer = Marshal.AllocHGlobal(3 * 1024 * 1024); nET_DVR_XML_CONFIG_OUTPUT.dwOutBufferSize = 3 * 1024 * 1024; nET_DVR_XML_CONFIG_OUTPUT.lpStatusBuffer = Marshal.AllocHGlobal(4096 * 4); nET_DVR_XML_CONFIG_OUTPUT.dwStatusSize = 4096 * 4; if (!NET_DVR_STDXMLConfig(userID, ref nET_DVR_XML_CONFIG_INPUT, ref nET_DVR_XML_CONFIG_OUTPUT)) { uint getLastError = CHCNetSDK.NET_DVR_GetLastError(); string errorStr = "NET_DVR_STDXMLConfig failed :" + getLastError; Console.WriteLine(errorStr); } string result = Marshal.PtrToStringAnsi(nET_DVR_XML_CONFIG_OUTPUT.lpOutBuffer); string outXML = Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(result)); Console.WriteLine(outXML); string outStatus = Marshal.PtrToStringAnsi(nET_DVR_XML_CONFIG_OUTPUT.lpStatusBuffer); Console.WriteLine("Status Output:\n" + outStatus); Marshal.FreeHGlobal(nET_DVR_XML_CONFIG_INPUT.lpRequestUrl); Marshal.FreeHGlobal(nET_DVR_XML_CONFIG_OUTPUT.lpOutBuffer); Marshal.FreeHGlobal(nET_DVR_XML_CONFIG_OUTPUT.lpStatusBuffer); return("ok"); }
public string SearchPerson(string IpAddress, string UserName, string Password, ushort Port) { CHCNetSDK.NET_DVR_USER_LOGIN_INFO nET_DVR_USER_LOGIN_INFO = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); nET_DVR_USER_LOGIN_INFO.sDeviceAddress = IpAddress; nET_DVR_USER_LOGIN_INFO.wPort = Port; nET_DVR_USER_LOGIN_INFO.sUserName = UserName; nET_DVR_USER_LOGIN_INFO.sPassword = Password; nET_DVR_USER_LOGIN_INFO.bUseAsynLogin = false; CHCNetSDK.NET_DVR_DEVICEINFO_V40 nET_DVR_DEVICEINFO_V40 = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); nET_DVR_DEVICEINFO_V40.struDeviceV30.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN]; int userID = CHCNetSDK.NET_DVR_Login_V40(ref nET_DVR_USER_LOGIN_INFO, ref nET_DVR_DEVICEINFO_V40); string url = "POST /ISAPI/AccessControl/UserInfo/Search?format=json"; CHCNetSDK.NET_DVR_XML_CONFIG_INPUT nET_DVR_XML_CONFIG_INPUT = new CHCNetSDK.NET_DVR_XML_CONFIG_INPUT(); Int32 nInSize = Marshal.SizeOf(nET_DVR_XML_CONFIG_INPUT); nET_DVR_XML_CONFIG_INPUT.dwSize = (uint)nInSize; nET_DVR_XML_CONFIG_INPUT.lpRequestUrl = Marshal.StringToHGlobalAnsi(url); nET_DVR_XML_CONFIG_INPUT.dwRequestUrlLen = (uint)url.Length; var userInfoSearchCond = new { searchID = "0", searchResultPosition = 0, maxResults = 50 }; var json = new { UserInfoSearchCond = userInfoSearchCond }; var strJson = JsonConvert.SerializeObject(json); nET_DVR_XML_CONFIG_INPUT.lpInBuffer = Marshal.StringToHGlobalAnsi(strJson); nET_DVR_XML_CONFIG_INPUT.dwInBufferSize = (uint)strJson.Length; // reserve space for return data CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT nET_DVR_XML_CONFIG_OUTPUT = new CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT(); nET_DVR_XML_CONFIG_OUTPUT.dwSize = (uint)Marshal.SizeOf(nET_DVR_XML_CONFIG_INPUT); nET_DVR_XML_CONFIG_OUTPUT.lpOutBuffer = Marshal.AllocHGlobal(3 * 1024 * 1024); nET_DVR_XML_CONFIG_OUTPUT.dwOutBufferSize = 3 * 1024 * 1024; nET_DVR_XML_CONFIG_OUTPUT.lpStatusBuffer = Marshal.AllocHGlobal(4096 * 4); nET_DVR_XML_CONFIG_OUTPUT.dwStatusSize = 4096 * 4; if (!NET_DVR_STDXMLConfig(userID, ref nET_DVR_XML_CONFIG_INPUT, ref nET_DVR_XML_CONFIG_OUTPUT)) { uint getLastError = CHCNetSDK.NET_DVR_GetLastError(); string errorStr = "NET_DVR_STDXMLConfig failed :" + getLastError; Console.WriteLine(errorStr); } string result = Marshal.PtrToStringAnsi(nET_DVR_XML_CONFIG_OUTPUT.lpOutBuffer); Console.WriteLine(result); Marshal.FreeHGlobal(nET_DVR_XML_CONFIG_INPUT.lpRequestUrl); Marshal.FreeHGlobal(nET_DVR_XML_CONFIG_OUTPUT.lpOutBuffer); Marshal.FreeHGlobal(nET_DVR_XML_CONFIG_OUTPUT.lpStatusBuffer); return(result); }
public void Login() { if (EventByDeploy.m_UserID >= 0) { CHCNetSDK.NET_DVR_Logout_V30(EventByDeploy.m_UserID); EventByDeploy.m_UserID = -1; } 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]; struLoginInfo.sDeviceAddress = textBoxDeviceAddress.Text; struLoginInfo.sUserName = textBoxUserName.Text; struLoginInfo.sPassword = textBoxPassword.Text; ushort.TryParse(textBoxPort.Text, out struLoginInfo.wPort); int lUserID = -1; lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLoginInfo, ref struDeviceInfoV40); if (lUserID >= 0) { EventByDeploy.m_UserID = lUserID; MessageBox.Show("Login Successful"); this.Close(); } else { uint nErr = CHCNetSDK.NET_DVR_GetLastError(); 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("Login fail error: " + nErr); } } }
private void DVR_Login() { if (textBoxport.Text == "" || textBoxUserName.Text == "" || textBoxPassword.Text == "") { MessageBox.Show("Please input IP, User name and Password!"); return; } struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); //设备用户名 byte[] byUserName = System.Text.Encoding.Default.GetBytes(textBoxUserName.Text); struLogInfo.sUserName = new byte[64]; byUserName.CopyTo(struLogInfo.sUserName, 0); //设备密码 byte[] byPassword = System.Text.Encoding.Default.GetBytes(textBoxPassword.Text); struLogInfo.sPassword = new byte[64]; byPassword.CopyTo(struLogInfo.sPassword, 0); struLogInfo.wPort = ushort.Parse(textBoxport.Text);//设备服务端口号 if (LoginCallBack == null) { LoginCallBack = new CHCNetSDK.LOGINRESULTCALLBACK(cbLoginCallBack);//注册回调函数 } struLogInfo.cbLoginResult = LoginCallBack; struLogInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 byte[] byIP = System.Text.Encoding.Default.GetBytes(textBoxIP.Text); struLogInfo.sDeviceAddress = new byte[129]; byIP.CopyTo(struLogInfo.sDeviceAddress, 0); DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); if (m_lUserID < 0) { m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref DeviceInfo); if (m_lUserID < 0) { str = "连接失败 : " + "Login_err_" + CHCNetSDK.NET_DVR_GetLastError(); //登录失败,输出错误号 label2.Text = str; } else { label2.Text = "设备连接成功"; } } }
private void btnLogin_Click(object sender, EventArgs e) { if (textBoxport.Text == "" || textBoxUserName.Text == "" || textBoxPassword.Text == "") { MessageBox.Show("Please input IP, User name and Password!"); return; } struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); //设备用户名 byte[] byUserName = System.Text.Encoding.Default.GetBytes(textBoxUserName.Text); struLogInfo.sUserName = new byte[64]; byUserName.CopyTo(struLogInfo.sUserName, 0); //设备密码 byte[] byPassword = System.Text.Encoding.Default.GetBytes(textBoxPassword.Text); struLogInfo.sPassword = new byte[64]; byPassword.CopyTo(struLogInfo.sPassword, 0); struLogInfo.wPort = ushort.Parse(textBoxport.Text);//设备服务端口号 if (LoginCallBack == null) { LoginCallBack = new CHCNetSDK.LOGINRESULTCALLBACK(cbLoginCallBack);//注册回调函数 } struLogInfo.cbLoginResult = LoginCallBack; struLogInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); DVR_Login_out(0, textBox1.Text, labels1); DVR_Login_out(1, textBox2.Text, labels2); DVR_Login_out(2, textBox3.Text, labels3); DVR_Login_out(3, textBox4.Text, labels4); DVR_Login_out(4, textBox5.Text, labels5); DVR_Login_out(5, textBox6.Text, labels6); DVR_Login_out(6, textBox7.Text, labels7); DVR_Login_out(7, textBox8.Text, labels8); DVR_Login_out(8, textBox9.Text, labels9); return; }
public OResult <Boolean> Login(CameraLoginRequest request) { try { var struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); //设备IP地址或者域名 Byte[] byIP = Encoding.Default.GetBytes(request.IP); struLogInfo.sDeviceAddress = new Byte[129]; byIP.CopyTo(struLogInfo.sDeviceAddress, 0); //设备服务端口号 struLogInfo.wPort = (UInt16)request.LoginPort; //设备用户名 Byte[] byUserName = Encoding.Default.GetBytes(request.UserName); struLogInfo.sUserName = new Byte[64]; byUserName.CopyTo(struLogInfo.sUserName, 0); //设备密码 Byte[] byPassword = Encoding.Default.GetBytes(request.Password); struLogInfo.sPassword = new Byte[64]; byPassword.CopyTo(struLogInfo.sPassword, 0); struLogInfo.cbLoginResult = new CHCNetSDK.LOGINRESULTCALLBACK(LoginCallBack); struLogInfo.bUseAsynLogin = false; _deviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); _userId = CHCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref _deviceInfo); if (_userId < 0) { return(new OResult <Boolean>(false, HkvsErrorCode.GetLastErrorCode(), $"登录失败:{HkvsErrorCode.GetLastErrorMessage()}")); } _loginRequest = request; return(new OResult <Boolean>(true)); } catch (Exception ex) { return(new OResult <Boolean>(false, ex)); } }
public bool InitializeComponent(Control parent, int width, int stride, int height) { if (m_lUserID >= 0) { return(false); } var struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); // 设备IP地址或者域名 byte[] byIP = Encoding.Default.GetBytes("192.168.1.64"); struLogInfo.sDeviceAddress = new byte[129]; byIP.CopyTo(struLogInfo.sDeviceAddress, 0); // 设备用户名 byte[] byUserName = Encoding.Default.GetBytes("admin"); struLogInfo.sUserName = new byte[64]; byUserName.CopyTo(struLogInfo.sUserName, 0); // 设备密码 byte[] byPassword = Encoding.Default.GetBytes("abcd1234"); struLogInfo.sPassword = new byte[64]; byPassword.CopyTo(struLogInfo.sPassword, 0); struLogInfo.wPort = ushort.Parse("8000"); //设备服务端口号 struLogInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 var DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); //登录设备 Login the device m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref DeviceInfo); if (m_lUserID < 0) { return(false); } return(StartRealPlay(channel, parent.Handle)); }
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); }
//static Task task = null; public int Play(string device_ip, string device_username, string device_password, string device_port, string key) { try { //if (ps_data_callback == null) //{ // return "未设置数据回调的实体"; //} CHCNetSDK.NET_DVR_SetLogToFile(0, "", true); CHCNetSDK.NET_DVR_USER_LOGIN_INFO struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); //设备IP地址或者域名 byte[] byIP = System.Text.Encoding.Default.GetBytes(device_ip); struLogInfo.sDeviceAddress = new byte[129]; byIP.CopyTo(struLogInfo.sDeviceAddress, 0); //设备用户名 byte[] byUserName = System.Text.Encoding.Default.GetBytes(device_username); struLogInfo.sUserName = new byte[64]; byUserName.CopyTo(struLogInfo.sUserName, 0); //设备密码 byte[] byPassword = System.Text.Encoding.Default.GetBytes(device_password); struLogInfo.sPassword = new byte[64]; byPassword.CopyTo(struLogInfo.sPassword, 0); struLogInfo.wPort = ushort.Parse(device_port);//设备服务端口号 CHCNetSDK.NET_DVR_DEVICEINFO_V40 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); int m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref DeviceInfo); if (m_lUserID == -1) { uint err = CHCNetSDK.NET_DVR_GetLastError(); } if (RealData == null) { RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 } IntPtr pUser = Marshal.StringToBSTR(key); //if (task == null) //{ // task = Task.Factory.StartNew(HIKDataInput); //} //Task task = Task.Factory.StartNew(HIKDataInput); CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.lChannel = 1; //预te览的设备通道 lpPreviewInfo.dwStreamType = 0; //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 lpPreviewInfo.dwLinkMode = 0; //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流 lpPreviewInfo.dwDisplayBufNum = 1; //播放库播放缓冲区最大缓冲帧数 lpPreviewInfo.byProtoType = 0; lpPreviewInfo.byPreviewMode = 0; if (!dic_cache.ContainsKey(key)) { dic_cache.Add(key, new List <byte>()); } int m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, /*null*/ RealData, pUser); if (m_lRealHandle < 0)//播放失败 { LogHelper.Print("播放失败:" + m_lRealHandle); } else { } return(m_lRealHandle); } catch (Exception ex) { return(-2); } }
private void btnLogin_Click(object sender, System.EventArgs e) { if (textBoxIP.Text == "" || textBoxPort.Text == "" || textBoxUserName.Text == "" || textBoxPassword.Text == "") { MessageBox.Show("Please input IP, Port, User name and Password!"); return; } if (m_lUserID < 0) { struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); //设备IP地址或者域名 byte[] byIP = System.Text.Encoding.Default.GetBytes(textBoxIP.Text); struLogInfo.sDeviceAddress = new byte[129]; byIP.CopyTo(struLogInfo.sDeviceAddress, 0); //设备用户名 byte[] byUserName = System.Text.Encoding.Default.GetBytes(textBoxUserName.Text); struLogInfo.sUserName = new byte[64]; byUserName.CopyTo(struLogInfo.sUserName, 0); //设备密码 byte[] byPassword = System.Text.Encoding.Default.GetBytes(textBoxPassword.Text); struLogInfo.sPassword = new byte[64]; byPassword.CopyTo(struLogInfo.sPassword, 0); struLogInfo.wPort = ushort.Parse(textBoxPort.Text);//设备服务端口号 if (LoginCallBack == null) { LoginCallBack = new CHCNetSDK.LOGINRESULTCALLBACK(cbLoginCallBack);//注册回调函数 } struLogInfo.cbLoginResult = LoginCallBack; struLogInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); //登录设备 Login the device m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref DeviceInfo); if (m_lUserID < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_Login_V40 failed, error code= " + iLastErr; //登录失败,输出错误号 MessageBox.Show(str); return; } else { //登录成功 MessageBox.Show("Login Success!"); btnLogin.Text = "Logout"; } } else { //注销登录 Logout the device if (m_lRealHandle >= 0) { MessageBox.Show("Please stop live view firstly"); return; } if (!CHCNetSDK.NET_DVR_Logout(m_lUserID)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_Logout failed, error code= " + iLastErr; MessageBox.Show(str); return; } m_lUserID = -1; btnLogin.Text = "Login"; } return; }
public string XMLTransparent(string IpAddress, string UserName, string Password, ushort Port) { 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]; struLoginInfo.bUseAsynLogin = false; struLoginInfo.sDeviceAddress = IpAddress; struLoginInfo.sUserName = UserName; struLoginInfo.sPassword = Password; struLoginInfo.wPort = Port; //string url = "GET /ISAPI/System/time"; string url = "POST /ISAPI/AccessControl/UserInfo/Search?format=json"; int userID = CHCNetSDK.NET_DVR_Login_V40(ref struLoginInfo, ref struDeviceInfoV40); CHCNetSDK.NET_DVR_XML_CONFIG_INPUT pInputXml = new CHCNetSDK.NET_DVR_XML_CONFIG_INPUT(); Int32 nInSize = Marshal.SizeOf(pInputXml); pInputXml.dwSize = (uint)nInSize; // add request url string strRequestUrl = url; uint dwRequestUrlLen = (uint)strRequestUrl.Length; pInputXml.lpRequestUrl = Marshal.StringToHGlobalAnsi(strRequestUrl); pInputXml.dwRequestUrlLen = dwRequestUrlLen; // var userInfoSearchCond = new { searchID = "1", searchResultPosition = 0, maxResults = 100 }; //string userInfo1 = JsonConvert.SerializeObject(userInfoSearchCond); var json = new { UserInfoSearchCond = userInfoSearchCond }; string jsonStr = JsonConvert.SerializeObject(json); //convert object -> string Console.WriteLine(jsonStr); // add input parameters string strInputParam = jsonStr; pInputXml.lpInBuffer = Marshal.StringToHGlobalAnsi(strInputParam); pInputXml.dwInBufferSize = (uint)strInputParam.Length; // // reserve space for return data CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT pOutputXml = new CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT(); pOutputXml.dwSize = (uint)Marshal.SizeOf(pInputXml); pOutputXml.lpOutBuffer = Marshal.AllocHGlobal(3 * 1024 * 1024); pOutputXml.dwOutBufferSize = 3 * 1024 * 1024; pOutputXml.lpStatusBuffer = Marshal.AllocHGlobal(4096 * 4); //pOutputXml.dwStatusSize = 4096 * 4; // if (!NET_DVR_STDXMLConfig(userID, ref pInputXml, ref pOutputXml)) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); string strErr = "NET_DVR_STDXMLConfig failed, error code= " + iLastErr; // Failed to send XML data and output the error code Console.WriteLine(strErr); } string strOutputParam = Marshal.PtrToStringAnsi(pOutputXml.lpOutBuffer); //Console.WriteLine("Output param: {0}", strOutputParam); // display in json format in console string outXML = Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(strOutputParam)); //Console.WriteLine("XML Output:\n" + outXML); string outStatus = Marshal.PtrToStringAnsi(pOutputXml.lpStatusBuffer); //Console.WriteLine("Status Output:\n" + outStatus); dynamic json2 = JsonConvert.DeserializeObject(outXML);//conver string -> object //Console.WriteLine("response status str: {0}", json2.UserInfoSearch.responseStatusStrg); JArray UserInfoList = json2.UserInfoSearch.UserInfo; foreach (dynamic userInfo in UserInfoList) { //Console.WriteLine(userInfo); dynamic param = userInfo; Console.WriteLine("employeeNo: {0}", param.employeeNo); Console.WriteLine("employeeName: {0}", param.name); Console.WriteLine("employeeType: {0}", param.userType); dynamic param2 = param.Valid; Console.WriteLine("begiTime: {0}", param2.beginTime); Console.WriteLine("password: {0}", param.password); } Marshal.FreeHGlobal(pInputXml.lpRequestUrl); Marshal.FreeHGlobal(pOutputXml.lpOutBuffer); Marshal.FreeHGlobal(pOutputXml.lpStatusBuffer); return(strOutputParam); }
static void SDKTest() { string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini"); MediaServer.Config config = new MediaServer.Config(); config.ini_is_path = 1; config.ini = configPath; MediaServer.mk_env_init(ref config); uint ret; ret = MediaServer.mk_http_server_start(8500, 0); ret = MediaServer.mk_rtsp_server_start(554, 0); ret = MediaServer.mk_rtmp_server_start(1935, 0); ctx = MediaServer.mk_media_create("__defaultVhost__", "fh", "sdklive", 0, 1, 1, 1, 0); MediaServer.mk_media_init_video(ctx, 0, 1280, 720, 25); MediaServer.mk_media_init_complete(ctx); bool m_bInitSDK = CHCNetSDK.NET_DVR_Init(); CHCNetSDK.NET_DVR_SetLogToFile(0, "", true); CHCNetSDK.NET_DVR_USER_LOGIN_INFO struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); //设备IP地址或者域名 byte[] byIP = System.Text.Encoding.Default.GetBytes("10.128.24.57"); struLogInfo.sDeviceAddress = new byte[129]; byIP.CopyTo(struLogInfo.sDeviceAddress, 0); //设备用户名 byte[] byUserName = System.Text.Encoding.Default.GetBytes("admin"); struLogInfo.sUserName = new byte[64]; byUserName.CopyTo(struLogInfo.sUserName, 0); //设备密码 byte[] byPassword = System.Text.Encoding.Default.GetBytes("123456a?"); struLogInfo.sPassword = new byte[64]; byPassword.CopyTo(struLogInfo.sPassword, 0); struLogInfo.wPort = 8000;//设备服务端口号 CHCNetSDK.NET_DVR_DEVICEINFO_V40 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); int m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref DeviceInfo); if (RealData == null) { RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 } CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); //lpPreviewInfo.hPlayWnd = RealPlayWnd.Handle;//预览窗口 lpPreviewInfo.lChannel = 1; //预te览的设备通道 lpPreviewInfo.dwStreamType = 0; //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推 lpPreviewInfo.dwLinkMode = 0; //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流 lpPreviewInfo.dwDisplayBufNum = 1; //播放库播放缓冲区最大缓冲帧数 lpPreviewInfo.byProtoType = 0; lpPreviewInfo.byPreviewMode = 0; IntPtr pUser = new IntPtr();//用户数据 int m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, /*null*/ RealData, pUser); if (m_lRealHandle >= 0)//播放成功 { //eSCallBack = new CHCNetSDK.PlayESCallBack(ESCallBack); //bool ret = CHCNetSDK.NET_DVR_SetESRealPlayCallBack(m_lRealHandle, eSCallBack, IntPtr.Zero); Task task = Task.Factory.StartNew(HIKDataInput); } Console.Read(); }
/// <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) { } }
private void Login() { CHCNetSDK.NET_DVR_Init(); if (m_lUserID < 0) { struLogInfo = new CHCNetSDK.NET_DVR_USER_LOGIN_INFO(); //设备IP地址或者域名 byte[] byIP = System.Text.Encoding.Default.GetBytes("192.168.1.64"); struLogInfo.sDeviceAddress = new byte[129]; byIP.CopyTo(struLogInfo.sDeviceAddress, 0); //设备用户名 byte[] byUserName = System.Text.Encoding.Default.GetBytes("admin"); struLogInfo.sUserName = new byte[64]; byUserName.CopyTo(struLogInfo.sUserName, 0); //设备密码 byte[] byPassword = System.Text.Encoding.Default.GetBytes("daqing123"); struLogInfo.sPassword = new byte[64]; byPassword.CopyTo(struLogInfo.sPassword, 0); struLogInfo.wPort = ushort.Parse("8000");//设备服务端口号 if (LoginCallBack == null) { //LoginCallBack = new CHCNetSDK.LOGINRESULTCALLBACK(cbLoginCallBack);//注册回调函数 } struLogInfo.cbLoginResult = LoginCallBack; struLogInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V40(); //登录设备 Login the device m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref DeviceInfo); if (m_lUserID < 0) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_Login_V40 failed, error code= " + iLastErr; //登录失败,输出错误号 Debug.Log(str); return; } else { //登录成功 Debug.Log("Login Success!"); } } //else //{ // //注销登录 Logout the device // if (m_lRealHandle >= 0) // { // MessageBox.Show("Please stop live view firstly"); // return; // } // if (!CHCNetSDK.NET_DVR_Logout(m_lUserID)) // { // iLastErr = CHCNetSDK.NET_DVR_GetLastError(); // str = "NET_DVR_Logout failed, error code= " + iLastErr; // MessageBox.Show(str); // return; // } // m_lUserID = -1; // btnLogin.Text = "Login"; //} return; }