コード例 #1
0
        private void CbFilterCodition2_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (_archorList == null)
            {
                return;
            }
            int           id   = CbFilterCodition2.SelectedIndex;
            UDPArchorList list = new UDPArchorList();

            foreach (var item in subArchorList)
            {
                if (id == 0)//全部
                {
                    list.Add(item);
                }
                else if (id == 1)//有值
                {
                    if (!string.IsNullOrEmpty(item.Value))
                    {
                        list.Add(item);
                    }
                }
                else if (id == 2)//无值
                {
                    if (string.IsNullOrEmpty(item.Value))
                    {
                        list.Add(item);
                    }
                }
            }
            DataGrid3.ItemsSource = list;
            LbCount.Content       = string.Format("{0}/{1}", list.GetConnectedCount(), list.Count);
        }
コード例 #2
0
        public UDPArchorList GetOfflineList()
        {
            UDPArchorList list0 = new UDPArchorList();

            var allList = archorManager.GetResultArchorList();
            //var existList = archorManager.GetMaxArchorList();//扫描到的当前的全部数量
            var existList = allList.FindAll(i => i.Id != null && i.Id != "");

            list0.AddRange(allList);
            //foreach (var item in existList)
            int k = 0;

            for (int j = 0; j < existList.Count; j++)
            {
                var item      = existList[j];
                var existItem = allList.Find(i => i.Client == item.Client);
                if (existItem != null)
                {
                    //k++;
                    //if (scanCount % 2 ==0 && k < 5)
                    //{

                    //}
                    //else
                    {
                        list0.Remove(existItem);
                    }
                }
            }
            return(list0);
        }
コード例 #3
0
        public CommandResultGroup AddArchor(System.Net.IPEndPoint iep, byte[] data)
        {
            lock (resultList.Groups)
            {
                if (archorList == null)
                {
                    archorList = new UDPArchorList();
                    //archorList.DataUpdated += (archor) =>
                    //{

                    //};
                    //archorList.DataAdded += (archor) =>
                    //{
                    //    //if (ArchorListChanged != null)
                    //    //{
                    //    //    ArchorListChanged(archorList);
                    //    //}
                    //};
                }

                CommandResultGroup group = resultList.Add(iep, data);
                archorList = OnDataReceive(group);
                return(group);
            }
        }
コード例 #4
0
        internal void LoadList(ArchorDevList archors)
        {
            this.archors = archors;
            resultList   = new CommandResultManager();
            if (archors.ArchorList != null)
            {
                foreach (var item in archors.ArchorList)
                {
                    var group = resultList.Add(item);
                    //group.Archor.Ip = item.ArchorIp;
                    group.Archor.Area = item.InstallArea;
                }
            }

            UDPArchorList list = new UDPArchorList();

            foreach (var item in resultList.Groups)
            {
                list.Add(item.Archor);
                item.Archor.Num = list.Count;
            }

            archorList = list;
            if (ArchorListChanged != null)
            {
                ArchorListChanged(list, null);
            }
        }
コード例 #5
0
        private void PingEx_ProgressChanged(int arg1, PingResult arg2)
        {
            AddLog(arg2.Line);
            if (arg2.Type == 1)
            {
                var group = resultList.GetByIp(arg2.Ip);
                if (group == null)
                {
                    group             = resultList.Add(arg2.Ip + ":Ping");
                    group.Archor.Ping = arg2.GetResult();
                }
                else
                {
                    group.Archor.Ping = arg2.GetResult();
                }

                //AddLog()

                archorList = OnDataReceive(group);
            }
            else
            {
                if (PercentChanged != null)
                {
                    PercentChanged(arg1);
                }
            }
        }
コード例 #6
0
        public void ScanArchors(ScanArg arg, UDPArchorList list)
        {
            if (arg == null)
            {
                return;
            }
            this.arg = arg;
            var ips = arg.ipsText.Split(';');

            archorPort = arg.port.ToInt();
            if (resultList == null)
            {
                resultList = new CommandResultManager();
            }
            StartTime();

            List <string> localIps = GetLocalIps(ips);

            if (arg.OneIPS)
            {
                List <string> allIps = new List <string>();
                foreach (var ip in localIps)
                {
                    var ipList = IpHelper.GetIPS(ip);
                    allIps.AddRange(ipList);
                }
                ScanArchors(arg.cmds, allIps.ToArray());
            }
            else if (arg.ScanList)
            {
                List <string> allIps = new List <string>();
                if (list != null)
                {
                    foreach (var archor in list)
                    {
                        allIps.Add(archor.GetIp());
                    }
                }
                else if (archors != null)
                {
                    foreach (var archor in archors.ArchorList)
                    {
                        allIps.Add(archor.ArchorIp);
                    }
                }
                else if (archorList != null)
                {
                    foreach (var archor in archorList)
                    {
                        allIps.Add(archor.GetClientIP());
                    }
                }
                ScanArchors(arg.cmds, allIps.ToArray());
            }
            else
            {
                ScanArchors(arg.cmds, localIps.ToArray());
            }
        }
コード例 #7
0
        public UDPArchorList GetMaxArchorList()
        {
            UDPArchorList list = new UDPArchorList();

            foreach (var item in progressList)
            {
                list.Add(item.Value);
            }

            return(list);
        }
コード例 #8
0
 public void SendCmd(string cmd, int port, UDPArchorList list)
 {
     archorPort = port;
     ThreadTool.Start(() =>
     {
         foreach (var archor in list)
         {
             SendCmd(cmd, archor);
             Thread.Sleep(100);
         }
     });
 }
コード例 #9
0
        internal void LoadArchorList(string path)
        {
            archorList = XmlSerializeHelper.LoadFromFile <UDPArchorList>(path);

            resultList = new CommandResultManager();
            foreach (var item in archorList)
            {
                var group = resultList.Add(item);
            }

            OnArchorListChanged(archorList, null);
        }
コード例 #10
0
        public UDPArchorList GetResultArchorList()
        {
            UDPArchorList list = new UDPArchorList();

            foreach (var item in resultList.Groups)
            {
                list.Add(item.Archor);
                item.Archor.Num = list.Count;
            }

            return(list);
        }
コード例 #11
0
        private UDPArchorList OnDataReceive(CommandResultGroup group)
        {
            UDPArchorList list = GetResultArchorList();

            //if (ArchorUpdated != null)
            //{
            //    ArchorUpdated(group.Archor);
            //}

            OnArchorListChanged(list, group.Archor);
            return(list);
        }
コード例 #12
0
        private List <DevAlarm> GenerateNewAlarm(UDPArchorList list1)
        {
            List <DevAlarm> alarms = new List <DevAlarm>();

            foreach (var item in list1)
            {
                DevAlarm alarm = CreateDevAlarm(item);
                alarms.Add(alarm);
            }

            return(alarms);
        }
コード例 #13
0
 public UDPArchorList AddArchor(System.Net.IPEndPoint iep, byte[] data)
 {
     resultList.Add(iep, data);
     archorList = new UDPArchorList();
     foreach (var item in resultList.Groups)
     {
         archorList.Add(item.Archor);
         item.Archor.Num = archorList.Count;
     }
     if (ArchorListChanged != null)
     {
         ArchorListChanged();
     }
     return(archorList);
 }
コード例 #14
0
        private void Udp_DGramRecieved1(object sender, BUDPGram dgram)
        {
            if (resultList == null)
            {
                resultList = new CommandResultManager();
            }
            var group = resultList.Add(dgram.iep, dgram.data);

            group.Archor.Value = ByteHelper.byteToHexStr(dgram.data);

            valueList.Add(dgram.iep, dgram.data);
            AddLog(string.Format("收到 :: {0}", group.ToString()));


            archorList = OnDataReceive(group);
        }
コード例 #15
0
        private void BtnNoDbInfo_Click(object sender, RoutedEventArgs e)
        {
            if (_archorList == null)
            {
                return;
            }
            int           id   = CbFilterCodition2.SelectedIndex;
            UDPArchorList list = new UDPArchorList();

            foreach (var item in _archorList)
            {
                if (string.IsNullOrEmpty(item.DbInfo) && !string.IsNullOrEmpty(item.IsConnected))
                {
                    list.Add(item);
                }
            }
            DataGrid3.ItemsSource = list;
            LbCount.Content       = string.Format("{0}/{1}", list.GetConnectedCount(), list.Count);
        }
コード例 #16
0
        private UDPArchorList OnDataReceive(CommandResultGroup group)
        {
            UDPArchorList list = new UDPArchorList();

            foreach (var item in resultList.Groups)
            {
                list.Add(item.Archor);
                item.Archor.Num = list.Count;
            }
            //if (ArchorUpdated != null)
            //{
            //    ArchorUpdated(group.Archor);
            //}
            if (ArchorListChanged != null)
            {
                ArchorListChanged(list, group.Archor);
            }
            return(list);
        }
コード例 #17
0
        private void CbAreas_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var area = CbAreas.SelectedItem as string;

            string[] parts = area.Split(' ');
            subArchorList = new UDPArchorList();
            foreach (var item in _archorList)
            {
                if (area == "全部")
                {
                    subArchorList.Add(item);
                }
                else if (item.RealArea == area)
                {
                    subArchorList.Add(item);
                }
            }
            DataGrid3.ItemsSource = subArchorList;
            LbCount.Content       = string.Format("{0}/{1}", subArchorList.GetConnectedCount(), subArchorList.Count);
        }
コード例 #18
0
        private void OnArchorListChanged(UDPArchorList a, UDPArchor item)
        {
            if (item != null && item.Id != null)
            {
                //if(!progressList.Contains(item))
                //    progressList.Add(item);

                if (!progressList.ContainsKey(item.Id))
                {
                    progressList.Add(item.Id, item);
                    //Log.Info(Name, string.Format("maxCount:{0}", progressList.Count));
                }

                count++;

                //Log.Info(Name, "ArchorListChanged:" + count);
            }

            if (ArchorListChanged != null)
            {
                ArchorListChanged(a, item);
            }
        }
コード例 #19
0
        private void InitArchorManager()
        {
            if (archorManager == null)
            {
                DispatcherTimer timer = new DispatcherTimer();
                timer.Interval = TimeSpan.FromMilliseconds(100);
                timer.Tick    += UpdateGridTimer_Tick;
                timer.Start();
                updateGridTimer = timer;

                archorManager = new ArchorManager();
                archorManager.ArchorListChanged += (list, item) =>
                {
                    UDPArchorList = list;

                    //if (item != null)
                    //{
                    //    var id = list.IndexOf(item);
                    //    SetArchorList(archorManager, list, item, id);
                    //}
                    //else
                    //{
                    //    SetArchorList(archorManager, list);
                    //}

                    if (item != null)
                    {
                        progressList.Add(item);
                        count++;
                    }
                    IsDirty = true;
                };
                archorManager.LogChanged     += ArchorManager_LogChanged;
                archorManager.PercentChanged += (p) =>
                {
                    ProgressBarEx1.Value = p;

                    //if (p == 100)
                    //{
                    //    SetArchorList(archorManager, UDPArchorList);
                    //}
                    if (p == 100)
                    {
                        ThreadPool.QueueUserWorkItem(a =>
                        {
                            Thread.Sleep(3000);
                            //SaveResult();
                            SetArchorList(archorManager, UDPArchorList);
                            archorManager.SaveArchorListResult();
                            //scanCount++;
                            //if (scanCount > 1)//第一次启动扫描结果可能是不准的
                            //{
                            //    Thread.Sleep(2000);
                            //    SendAlarm();
                            //}

                            //IsBusySendAlarm = false;
                        });
                    }
                };
                //archorManager.NewArchorAdded += AddArchor;

                DataGrid3.archorManager = archorManager;
                archorManager.arg       = GetScanArg();
            }
        }
コード例 #20
0
        private void SetArchorList(ArchorManager archorManager, UDPArchorList list, UDPArchor item1 = null, int id = -1)
        {
            this.Dispatcher.Invoke(() => {
                if (archorManager == null)
                {
                    TbConsole.Text        = "";
                    DataGrid3.ItemsSource = null;
                    LbCount.Content       = "";
                    LbStatistics.Content  = "";
                }
                else
                {
                    //IsDirty = true;
                    LbTime.Content = archorManager.GetTimeSpan();
                    TbConsole.Text = archorManager.Log;

                    if (DbArchorListDict != null)
                    {
                        //list.ClearInfo();
                        foreach (var item in list)
                        {
                            item.DbInfo   = "";
                            item.RealArea = "";
                            var clientIP  = item.GetClientIP();
                            //var ar = DbArchorList.Find(i => i.Ip == clientIP);
                            if (DbArchorListDict.ContainsKey(clientIP))
                            {
                                var ar = DbArchorListDict[clientIP];
                                if (ar != null)
                                {
                                    item.RealArea = ar.Parent.Name;
                                    if (item.GetClientIP() != ar.Ip)
                                    {
                                        item.DbInfo = "IP:" + ar.Ip;
                                    }
                                    else
                                    {
                                        string code = ar.Code.Trim();
                                        if (!string.IsNullOrEmpty(code))
                                        {
                                            item.DbInfo = "有:" + code;
                                        }
                                        else
                                        {
                                            item.DbInfo = "有:" + ar.Ip;
                                        }
                                    }
                                }
                            }
                        }
                    }

                    if (id > 0)
                    {
                        var item2 = list[id];
                        if (item2 != item1)
                        {
                        }

                        int id2 = list.IndexOf(item1);
                    }

                    DataGrid3.ItemsSource = list;

                    if (id > 0)
                    {
                        var item2 = list[id];
                        if (item2 != item1)
                        {
                        }
                        int id2 = list.IndexOf(item1);
                    }

                    LbCount.Content        = list.GetConnectedCount();
                    LbStatistics.Content   = archorManager.GetStatistics();
                    LbServerIpList.Content = list.ServerList.GetText();

                    LbListenCount.Content      = archorManager.valueList.Count;
                    LbListenStatistics.Content = archorManager.valueList.GetStatistics();
                }
            });
        }
コード例 #21
0
 public void ResetAll(int port, UDPArchorList list)
 {
     AddLog(string.Format("开始重启"));
     archorPort = port;
     SendCmd(UDPCommands.Restart, port, list);
 }
コード例 #22
0
 private void ArchorManager_ArchorListChanged(UDPArchorList arg1, UDPArchor arg2)
 {
     ShowValue(arg2);
 }
コード例 #23
0
        public void Filter()
        {
            if (_archorList == null)
            {
                return;
            }
            int id = CbFilterCondition.SelectedIndex;

            subArchorList = new UDPArchorList();
            foreach (var item in _archorList)
            {
                if (id == 0)//全部
                {
                    subArchorList.Add(item);
                }
                else if (id == 1)//连通
                {
                    if (!string.IsNullOrEmpty(item.IsConnected))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 2)//不连通
                {
                    if (string.IsNullOrEmpty(item.IsConnected))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 3)//Ping通
                {
                    if (!string.IsNullOrEmpty(item.Ping))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 4)//不Ping通
                {
                    if (string.IsNullOrEmpty(item.Ping))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 5)//3
                {
                    if (item.GetClientIP().StartsWith("192.168.3."))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 6)//4
                {
                    if (item.GetClientIP().StartsWith("192.168.4."))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 7)//5
                {
                    if (item.GetClientIP().StartsWith("192.168.5."))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 8)//1999端口
                {
                    if (item.ServerPort == 1999)
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 9)//有DbInfo
                {
                    if (!string.IsNullOrEmpty(item.DbInfo))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 10)//11222902
                {
                    if (item.SoftVersion == "11222902")
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 11)//11222906
                {
                    if (item.SoftVersion == "11222906")
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 12)//11222906
                {
                    if (item.SoftVersion == "11222907")
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 13)//3506
                {
                    if (item.SoftVersion == "3156" || item.SoftVersion == "3157")
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 14)//网关错误
                {
                    if (!string.IsNullOrEmpty(item.Ip) && !string.IsNullOrEmpty(item.Gateway) && !IpHelper.IsSameDomain(item.Ip, item.Gateway))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 15)//IsChecked
                {
                    if (item.IsChecked)
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 16)//有DbInfo
                {
                    if (!string.IsNullOrEmpty(item.DbInfo))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 17)//无DbInfo
                {
                    if (string.IsNullOrEmpty(item.DbInfo))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 18)//非25IP
                {
                    if (!string.IsNullOrEmpty(item.IsConnected) && item.ServerIp != "172.16.100.25")
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 19)//ping有问题的
                {
                    if (string.IsNullOrEmpty(item.Ping) || item.Ping == "*")
                    {
                        subArchorList.Add(item);
                    }
                    else
                    {
                        string[] parts = item.Ping.Split('/');
                        if (parts[0] != parts[1])
                        {
                            subArchorList.Add(item);
                        }
                    }
                }
                else if (id == 20)//ping空
                {
                    if (string.IsNullOrEmpty(item.Ping))
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 21)//ping失败
                {
                    if (item.Ping == "*")
                    {
                        subArchorList.Add(item);
                    }
                }
                else if (id == 22)//ping丢包
                {
                    if (!string.IsNullOrEmpty(item.Ping))
                    {
                        string[] parts = item.Ping.Split('/');
                        if (parts.Length == 2 && parts[0] != parts[1])
                        {
                            subArchorList.Add(item);
                        }
                    }
                }
            }
            DataGrid3.ItemsSource = subArchorList;
            LbCount.Content       = string.Format("{0}/{1}", subArchorList.GetConnectedCount(), subArchorList.Count);
        }
コード例 #24
0
        private void SendAlarm()
        {
            try
            {
                //var count1 = bll.Archors.GetCount();

                UDPArchorList list0 = GetOfflineList();

                List <DevAlarm> alarms = GenerateNewAlarm(list0);

                using (Bll bll = Bll.NewBllNoRelation())
                {
                    if (currentAlarms == null)
                    {
                        var realAlarms = bll.DevAlarms.FindAll(i => i.Src == Abutment_DevAlarmSrc.人员定位);//拿到数据库中已经有的告警数据
                        currentAlarms = new DbUpdateSet <DevAlarm>(realAlarms);
                    }

                    var set = currentAlarms;

                    set.Update(alarms);//更新告警

                    bll.DevAlarms.AddRange(set.AddList);

                    bll.DevAlarms.EditRange(set.EditList);

                    List <DevAlarmHistory> newHist = new List <DevAlarmHistory>();
                    foreach (var item in set.DeleteList)
                    {
                        var hisItem = item.RemoveToHistory();
                        newHist.Add(hisItem);

                        var clone = item.Clone();
                        clone.Msg   = clone.Msg.Replace("基站离线", "基站正常");
                        clone.Level = Abutment_DevAlarmLevel.无;
                        set.SendList.Add(clone);

                        set.CurrentList.Remove(item);
                    }
                    bll.DevAlarmHistorys.AddRange(newHist);
                    bll.DevAlarms.RemoveList(set.DeleteList);

                    if (set.IsChanged)
                    {
                        LocationService.RefreshDeviceAlarmBuffer(Name);
                    }

                    if (AppContext.AnchorScanSendMode == 1)
                    {
                        set.SendList.AddRange(set.CurrentList);//每次都发送当前的告警和恢复的告警
                    }

                    var sendList = set.SendList;

                    foreach (var item in sendList)
                    {
                        item.DictKey = item.Msg;
                        if (devDict.ContainsKey(item.DevInfoId))
                        {
                            var dev = devDict[item.DevInfoId];
                            item.DevInfo = dev;
                        }
                        else
                        {
                            Log.Error(Name, string.Format("未查到设备 devId:{0},code:{1}", item.DevInfoId, item.Code));
                        }
                    }

                    var alarmsM = sendList.ToTModel().ToArray();

                    //var count2 = bll.Archors.GetCount();
                    //if (count2 != count1)
                    //{
                    //    Log.Error(Name, count1 + "-" + count2);
                    //}

                    Log.Info(Name, string.Format("发送告警 当前离线数量:{0},新离线数量:{1},恢复数量:{2},发送数量:{3}", alarms.Count, set.AddList.Count, set.DeleteList.Count, alarmsM.Length));
                    AlarmHub.SendDeviceAlarms(alarmsM);
                }
            }
            catch (Exception ex)
            {
                Log.Error(Name, "Exception!!:" + ex);
            }
        }
コード例 #25
0
        private void SetArchorList(ArchorManager archorManager, UDPArchorList list, UDPArchor item1 = null, int id = -1)
        {
            if (DbArchorListDict != null)
            {
                //list.ClearInfo();
                foreach (var item in list)
                {
                    item.DbInfo   = "";
                    item.RealArea = "";
                    var clientIP = item.GetClientIP();
                    //var ar = DbArchorList.Find(i => i.Ip == clientIP);
                    if (DbArchorListDict.ContainsKey(clientIP))
                    {
                        var ar = DbArchorListDict[clientIP];
                        if (ar != null)
                        {
                            item.RealArea = ar.Parent.Name;
                            if (item.GetClientIP() != ar.Ip)
                            {
                                item.DbInfo = "IP:" + ar.Ip;
                            }
                            else
                            {
                                string code = ar.Code.Trim();
                                if (!string.IsNullOrEmpty(code))
                                {
                                    item.DbInfo = "有:" + code;
                                }
                                else
                                {
                                    item.DbInfo = "有:" + ar.Ip;
                                }
                            }
                        }
                    }
                }

                if (id > 0)
                {
                    var item2 = list[id];
                    if (item2 != item1)
                    {
                    }

                    int id2 = list.IndexOf(item1);
                }

                if (UDPArchorList == null)
                {
                    UDPArchorList = list;
                }
                else
                {
                    //if(UDPArchorList!= list)
                    //{

                    //}
                }


                if (id > 0)
                {
                    var item2 = list[id];
                    if (item2 != item1)
                    {
                    }
                    int id2 = list.IndexOf(item1);
                }
            }
        }