Example #1
0
        /// <summary>
        /// 设备用户登录/注销处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUserLogin_Click(object sender, EventArgs e)
        {
            string strLogin  = StringUtil.ConvertString("设备用户登录");
            string strLogout = StringUtil.ConvertString("设备用户注销");

            if (btnUserLogin.Text.Equals(strLogin))
            {
                frm_AddDevice fLogin = new frm_AddDevice();
                fLogin.ShowDialog();
                if (fLogin.blnOKEnter == true)
                {
                    //设备用户信息获得
                    NET_DEVICEINFO deviceInfo = new NET_DEVICEINFO();

                    int error = 0;
                    //设备用户登录
                    pLoginID = DHClient.DHLogin(fLogin.cmbDevIP.Text.ToString(), ushort.Parse(fLogin.txtDevProt.Text.ToString()), fLogin.txtName.Text.ToString(), fLogin.txtPassword.Text.ToString(), out deviceInfo, out error);
                    if (pLoginID != 0)
                    {
                        btnUserLogin.BackColor = Color.Yellow;
                        btnUserLogin.Text = strLogout;
                        grpMain.Enabled = true;
                        //读取用户信息
                        GetUserInfo(pLoginID, ref userManageInfo, 3000);
                        //设置消息回调函数
                        DHClient.DHSetDVRMessCallBack(msgCallBack, IntPtr.Zero);
                        IntPtr pVer = new IntPtr();
                        pVer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(int)));
                        int nRet = 0;
                        int nVer = 0;
                        bool bRet = DHClient.DHQueryDevState((int)pLoginID, (int)DHClient.DH_DEVSTATE_PROTOCAL_VER, pVer, 4, ref nRet, 2000);
                        if (bRet)
                        {
                             nVer = (int)Marshal.PtrToStructure((IntPtr)((UInt32)pVer), typeof(int));

                             //开始侦听
                             if (nVer >= 5)
                             {
                                 if (DHClient.DHStartListenEx(pLoginID) == true)
                                 {
                                     timeDisplayAlarmInfo.Enabled = true;
                                 }
                                 else
                                 {
                                     timeDisplayAlarmInfo.Enabled = false;
                                 }
                             }
                             else
                             {
                                 if (DHClient.DHStartListen(pLoginID) == true)
                                 {
                                     timeDisplayAlarmInfo.Enabled = true;
                                 }
                                 else
                                 {
                                     timeDisplayAlarmInfo.Enabled = false;
                                 }
                             }
                        }
                        
                    }
                }
            }
            else
            {
                bool result = DHClient.DHLogout(pLoginID);
                if (result == false)
                {
                    //报最后一次操作的错误信息
                    MessageBox.Show(DHClient.LastOperationInfo.ToString(pErrInfoFormatStyle), pMsgTitle);
                }


                //画面初期化
                timeDisplayAlarmInfo.Enabled = false;
                this.Controls.Clear();
                InitializeComponent();
                StringUtil.InitControlText(this);
                pLoginID = 0;
                userManageInfo = new USER_MANAGE_INFO();
                clientState = new NET_CLIENT_STATE();
                AlarmAudio = new byte[16];
                AlarmDiskErr = new byte[32];//DVR最大可挂32块硬盘,每一位表示一个硬盘的状态,0:硬盘状态正常;1:硬盘出错
                AlarmDiskFull = false;
                AlarmShelter = new byte[16];
                AlarmExternal = new byte[16];
                ActiveUserID = 0;
                ActiveGroupID = 0;
                ActiveGroupIndex = 0;
                ActiveUserIndex = 0;
                btnUserLogin.BackColor = Color.Transparent;
                btnUserLogin.Text = strLogin;
                grpMain.Enabled = false;
                this.WindowState = FormWindowState.Normal;
            }

        }
Example #2
0
 /// <summary>
 /// 获取报警信息处理
 /// </summary>
 /// <param name="lCommand">命令</param>
 /// <param name="lLoginID">登录ID</param>
 /// <param name="pBuf">缓存</param>
 /// <param name="dwBufLen">缓存数据大小</param>
 /// <param name="pchDVRIP">DVR设备IP地址</param>
 /// <param name="nDVRPort">DVR设备端口</param>
 /// <param name="dwUser">用户数据</param>
 /// <returns></returns>
 private bool GetAlarmMessage(int lCommand, int lLoginID, IntPtr pBuf, UInt32 dwBufLen, IntPtr pchDVRIP, int nDVRPort, UInt32 dwUser)
 {
     bool returnValue = false;
     //MessageBox.Show("HI1");
     
     switch (lCommand)
     { 
         case (int)CALLBACK_TYPE.DH_COMM_ALARM://常规报警信息
             cbkType = CALLBACK_TYPE.DH_COMM_ALARM;
             clientState = (NET_CLIENT_STATE)Marshal.PtrToStructure(pBuf, typeof(NET_CLIENT_STATE));
             #region << 测试代码 >>
             
             #endregion
             break;
         case (int)CALLBACK_TYPE.DH_SHELTER_ALARM://视频遮档报警
             cbkType = CALLBACK_TYPE.DH_SHELTER_ALARM;
             for (int i = 0; i < dwBufLen; i++)
             {
                 AlarmShelter[i] = (byte)Marshal.PtrToStructure((IntPtr)((UInt32)pBuf + i), typeof(byte));
             }
             break;
         case (int)CALLBACK_TYPE.DH_DISK_FULL_ALARM://硬盘空间不足
             cbkType = CALLBACK_TYPE.DH_DISK_FULL_ALARM;
             AlarmDiskFull = (bool)Marshal.PtrToStructure(pBuf, typeof(bool));
             break;
         case (int)CALLBACK_TYPE.DH_DISK_ERROR_ALARM://硬盘损坏
             cbkType = CALLBACK_TYPE.DH_DISK_ERROR_ALARM;
             for (int i = 0; i < dwBufLen; i++)
             {
                 AlarmDiskErr[i] = (byte)Marshal.PtrToStructure((IntPtr)((UInt32)pBuf + i), typeof(byte));
             }
             break;
         case (int)CALLBACK_TYPE.DH_SOUND_DETECT_ALARM://音频报警
             cbkType = CALLBACK_TYPE.DH_SOUND_DETECT_ALARM;
             for (int i = 0; i < dwBufLen; i++)
             {
                 AlarmAudio[i] = (byte)Marshal.PtrToStructure((IntPtr)((UInt32)pBuf + i), typeof(byte));
             }
             break;
         case (int)CALLBACK_TYPE.DH_ALARM_ALARM_EX://外部报警
             cbkType = CALLBACK_TYPE.DH_ALARM_ALARM_EX;
             for (int i = 0; i < dwBufLen; i++)
             {
                 AlarmExternal[i] = (byte)Marshal.PtrToStructure((IntPtr)((UInt32)pBuf + i), typeof(byte));
             }
             break;
     }
     return returnValue;
 }
Example #3
0
        /// <summary>
        /// 设备用户登录/注销处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUserLogin_Click(object sender, EventArgs e)
        {
            switch (btnUserLogin.Text)
            {
                case "设备用户登录":
                    frm_AddDevice fLogin = new frm_AddDevice();
                    fLogin.ShowDialog();
                    if (fLogin.blnOKEnter == true)
                    {
                        //设备用户信息获得
                        NET_DEVICEINFO deviceInfo = new NET_DEVICEINFO();

                        int error = 0;
                        //设备用户登录
                        pLoginID = DHClient.DHLogin(fLogin.cmbDevIP.Text.ToString(), ushort.Parse(fLogin.txtDevProt.Text.ToString()), fLogin.txtName.Text.ToString(), fLogin.txtPassword.Text.ToString(), out deviceInfo, out error);
                        if (pLoginID != 0)
                        {
                            btnUserLogin.BackColor = Color.Yellow;
                            btnUserLogin.Text = "设备用户注销";
                            grpMain.Enabled = true;
                            //读取用户信息
                            GetUserInfo(pLoginID, ref userManageInfo, 3000);
                            //设置消息回调函数
                            DHClient.DHSetDVRMessCallBack(msgCallBack, IntPtr.Zero);
                            //开始侦听
                            if (DHClient.DHStartListen(pLoginID) == true)
                            {
                                timeDisplayAlarmInfo.Enabled = true;
                            }
                            else
                            {
                                timeDisplayAlarmInfo.Enabled = false;
                            }
                        }
                    }
                    break;
                case "设备用户注销":
                    bool result = DHClient.DHLogout(pLoginID);
                    if (result == false)
                    {
                        //报最后一次操作的错误信息
                        MessageBox.Show(DHClient.LastOperationInfo.ToString(pErrInfoFormatStyle), pMsgTitle);
                    }

                    //画面初期化
                    timeDisplayAlarmInfo.Enabled = false;
                    this.Controls.Clear();
                    InitializeComponent();
                    pLoginID = 0;
                    userManageInfo = new USER_MANAGE_INFO();
                    clientState = new NET_CLIENT_STATE();
                    AlarmAudio = new byte[16];
                    AlarmDiskErr = new byte[32];//DVR最大可挂32块硬盘,每一位表示一个硬盘的状态,0:硬盘状态正常;1:硬盘出错
                    AlarmDiskFull = false;
                    AlarmShelter = new byte[16];
                    ActiveUserID = 0;
                    ActiveGroupID = 0;
                    ActiveGroupIndex = 0;
                    ActiveUserIndex = 0;
                    btnUserLogin.BackColor = Color.Transparent;
                    btnUserLogin.Text = "设备用户登录";
                    grpMain.Enabled = false;
                    this.WindowState = FormWindowState.Normal;
                    break;
            }
        }