Exemplo n.º 1
0
        /// <summary>
        /// 获取设备目录类型
        /// </summary>
        /// <param name="devId">编码</param>
        /// <returns></returns>
        public static DevCataType GetCataType(string devId)
        {
            DevCataType DeviceType = DevCataType.UNKNOWN;

            switch (devId.Length)
            {
            case 2:
                DeviceType = DevCataType.PROVICECATA;
                break;

            case 4:
                DeviceType = DevCataType.CITYCATA;
                break;

            case 6:
                DeviceType = DevCataType.AREACATA;
                break;

            case 8:
                DeviceType = DevCataType.BASICUNIT;
                break;

            case 20:
                int extId = int.Parse(devId.Substring(10, 3));
                if (extId == 200)     //ID编码11-13位采用200标识系统ID类型
                {
                    DeviceType = DevCataType.SYSTEMCATA;
                }
                else if (extId == 215)     //业务分组标识,编码采用D.1中的20位ID格式,扩展215类型代表业务分组
                {
                    DeviceType = DevCataType.BUSINESSGROUPCATA;
                }
                else if (extId == 216)     //虚拟组织标识,编码采用D.1中的20位ID格式,扩展216类型代表虚拟组织
                {
                    DeviceType = DevCataType.VIRTUALGROUPCATA;
                }
                else if (extId == 131 || extId == 132 || extId == 134 || extId == 137)     //D.1中摄像机,网络摄像机编码
                {
                    DeviceType = DevCataType.DEVICE;
                }
                else
                {
                    DeviceType = DevCataType.OTHER;     //其他类型
                }

                break;
            }

            return(DeviceType);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取设备目录类型
        /// </summary>
        /// <param name="devId">编码</param>
        /// <returns></returns>
        public static DevCataType CataTypeGetCataType(string devId)
        {
            DevCataType devCata = DevCataType.UnKnown;

            switch (devId.Length)
            {
            case 2:
                devCata = DevCataType.ProviceCata;
                break;

            case 4:
                devCata = DevCataType.CityCata;
                break;

            case 6:
                devCata = DevCataType.AreaCata;
                break;

            case 8:
                devCata = DevCataType.BasicUnit;
                break;

            case 20:
                int extId = int.Parse(devId.Substring(10, 3));
                if (extId == 200)     //ID编码11-13位采用200标识系统ID类型
                {
                    devCata = DevCataType.SystemCata;
                }
                else if (extId == 215)     //业务分组标识,编码采用D.1中的20位ID格式,扩展215类型代表业务分组
                {
                    devCata = DevCataType.BusinessGroupCata;
                }
                else if (extId == 216)     //虚拟组织标识,编码采用D.1中的20位ID格式,扩展216类型代表虚拟组织
                {
                    devCata = DevCataType.VirtualGroupCata;
                }
                else if (extId == 131 || extId == 132 || extId == 134 || extId == 137)     //D.1中摄像机,网络摄像机编码
                {
                    devCata = DevCataType.Device;
                }
                else
                {
                    devCata = DevCataType.Other;     //其他类型
                }

                break;
            }

            return(devCata);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 目录查询响应消息处理
        /// </summary>
        /// <param name="localEP">本地终结点</param>
        /// <param name="remoteEP">远程终结点</param>
        /// <param name="request">sip请求</param>
        /// <param name="catalog">目录结构体</param>
        private void CatalogHandle(SIPEndPoint localEP, SIPEndPoint remoteEP, SIPRequest request, Catalog catalog)
        {
            foreach (var cata in catalog.DeviceList.Items)
            {
                if (cata == null)
                {
                    continue;
                }
                cata.RemoteEP = remoteEP.ToHost();
                DevCataType devCata = DevType.GetCataType(cata.DeviceID);
                if (devCata != DevCataType.Device)
                {
                    continue;
                }
                for (int i = 0; i < 2; i++)
                {
                    CommandType cmdType = i == 0 ? CommandType.Play : CommandType.Playback;
                    MonitorKey  key     = new MonitorKey()
                    {
                        DeviceID = cata.DeviceID,
                        CmdType  = cmdType
                    };
                    lock (MonitorService)
                    {
                        if (MonitorService.ContainsKey(key))
                        {
                            continue;
                        }
                        remoteEP.Port = _account.KeepaliveInterval;
                        ISIPMonitorService monitor = new SIPMonitorCore(this, cata.DeviceID, remoteEP, _account);
                        MonitorService.Add(key, monitor);
                    }
                }
            }

            if (OnCatalogReceived != null)
            {
                OnCatalogReceived(catalog);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 设置设备目录
        /// </summary>
        /// <param name="cata">设备目录</param>
        private void SetDevText(Catalog cata)
        {
            foreach (Catalog.Item item in cata.DeviceList.Items)
            {
                DevCataType  devCata = DevType.GetCataType(item.DeviceID);
                ListViewItem lvItem;
                switch (devCata)
                {
                case DevCataType.UnKnown:
                    break;

                case DevCataType.ProviceCata:
                case DevCataType.CityCata:
                case DevCataType.AreaCata:
                case DevCataType.BasicUnit:
                case DevCataType.SystemCata:
                case DevCataType.BusinessGroupCata:
                case DevCataType.VirtualGroupCata:      //目录类型
                    lvItem          = new ListViewItem(new string[] { item.DeviceID, devCata.ToString(), item.Name });
                    lvItem.ImageKey = item.DeviceID;
                    this.Invoke(new Action(() =>
                    {
                        lvCata.Items.Add(lvItem);
                        //if (devCata == DevCataType.SystemCata)
                        //{
                        //    //_tn.Name = item.Name + "[" + item.DeviceID + "]";
                        //    //_tn.Text = item.Name + "[" + item.DeviceID + "]";
                        //    //_tn.Tag = devCata.ToString();
                        //}
                        //else if (devCata == DevCataType.CityCata)
                        //{
                        //    _tn.Name = item.Name + "[" + item.DeviceID + "]";
                        //    _tn.Text = item.Name + "[" + item.DeviceID + "]";
                        //    _tn.Tag = devCata.ToString();
                        //}
                        //else if (devCata == DevCataType.BusinessGroupCata)
                        //{
                        //    _bg.Name = item.Name + "[" + item.DeviceID + "]";
                        //    _bg.Text = item.Name + "[" + item.DeviceID + "]";
                        //    _bg.Tag = devCata.ToString();

                        //    //_tn.Nodes.Add(_bg);
                        //}
                        //else if (devCata == DevCataType.VirtualGroupCata)
                        //{
                        //    var vg = new TreeNode();
                        //    vg.Name = item.Name + "[" + item.DeviceID + "]";
                        //    vg.Text = item.Name + "[" + item.DeviceID + "]";
                        //    vg.Tag = devCata.ToString();

                        //    _bg.Nodes.Add(vg);
                        //}
                    }));
                    break;

                case DevCataType.Device:        //设备类型
                    lvItem          = new ListViewItem(new string[] { _devSN.ToString(), item.Name, item.Status.ToString() });
                    lvItem.ImageKey = item.DeviceID;
                    _devList.Add(lvItem);
                    this.Invoke(new Action(() =>
                    {
                        lvDev.Items.Add(lvItem);
                    }));
                    _devSN++;
                    break;
                }
            }
        }