/// <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); }
/// <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); }
/// <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); } }
/// <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; } } }