Ejemplo n.º 1
0
        /// <summary>
        /// Обновление данных трактории
        /// </summary>
        /// <param name="model"></param>
        private void Instance_AccLoaded(CarAccHistoryModel model)
        {
            var acc = new CarAccHistoryModel {
                DevID = model.DevID
            };
            var slowTask = new Task(delegate
            {
                for (var i = 0; i < DayStates.Count; i++)
                {
                    var item = DayStates[i];
                    var next = i + 1 < DayStates.Count ? DayStates[i + 1].Date : DateTime.Now;
                    var list = model.Data.Where(o => o.Date.ToDateTime() >= item.Date && o.Date.ToDateTime() < next);
                    foreach (var el in list)
                    {
                        acc.Data.Add(el);
                    }
                }
            });

            slowTask.ContinueWith(obj =>
            {
                if (_dispatcher != null)
                {
                    _dispatcher.BeginInvoke(new Action(() =>
                    {
                        AccHistory = acc; Iswaiting = false;
                    }));
                }
            });
            slowTask.Start();
        }
Ejemplo n.º 2
0
 private void FillAccData(string row)
 {
     try
     {
         CarAccHistoryModel accHist = JsonConvert.DeserializeObject <CarAccHistoryModel>(row);
         if (accHist != null)
         {
             if (AccLoaded != null)
             {
                 //if (Application.Current != null)
                 //    Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                 //    {
                 AccLoaded(accHist);
             }
             //}));
         }
     }
     catch
     {
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Хендлер обработки данных ACC
        /// </summary>
        /// <param name="model"></param>
        private void Instance_AccLoaded(CarAccHistoryModel model)
        {
            if (_loadedAccData.All(o => o.Date != SelectedDate))
            {
                _loadedAccData.Add(model);
            }

            if (!model.Date.Equals(SelectedDate) || Scale == 5)
            {
                return;
            }
            var list     = new List <ScaleValuesData>();
            var slowTask = new Task(delegate
            {
                list.Add(new ScaleValuesData {
                    Name = "XChart", Scale = Scale, Data = GetAccData("X"), UseMaxMin = true, MinVal = 1, MaxVal = 1.5
                });
                list.Add(new ScaleValuesData {
                    Name = "YChart", Scale = Scale, Data = GetAccData("Y"), UseMaxMin = true, MinVal = 1, MaxVal = 1.5
                });
                list.Add(new ScaleValuesData {
                    Name = "ZChart", Scale = Scale, Data = GetAccData("Z"), UseMaxMin = true, MinVal = 1, MaxVal = 1.5
                });
            });

            slowTask.ContinueWith(delegate
            {
                DispatherThreadRun(delegate
                {
                    foreach (var item in list)
                    {
                        OnAddControl(item);
                    }
                });
            });
            slowTask.Start();
        }
Ejemplo n.º 4
0
        private void DisplayData(CarAccHistoryModel model)
        {
            var slowTask = new Task(delegate
            {
                CreateData(model);
            });

            slowTask.ContinueWith(obj =>
            {
                Dispatcher.BeginInvoke(new Action(() =>
                {
                    stkX.Children.Clear();
                    stkY.Children.Clear();
                    stkZ.Children.Clear();
                    foreach (var item in NData)
                    {
                        stkX.Children.Add(GetBorder(item.MaxX));
                        stkY.Children.Add(GetBorder(item.MaxY));
                        stkZ.Children.Add(GetBorder(item.MaxZ));
                    }
                }));
            });
            slowTask.Start();
        }
Ejemplo n.º 5
0
        private void CreateData(CarAccHistoryModel model)
        {
            NData.Clear();
            if (!model.Data.Any())
            {
                return;
            }
            var width         = stkX.ActualWidth;
            var step          = width / 24 / 60;
            var minutesInStep = 1 / step;
            var w             = (int)width;
            var graphHeight   = 160;
            var nd            = model.Data.Select(item => new NormalizedData
            {
                MaxZ = Math.Abs(item.MaxZ), MaxX = Math.Abs(item.MaxX), MaxY = Math.Abs(item.MaxY), DT = new DateTime(item.Date.Y, item.Date.M, item.Date.D, item.Date.hh, item.Date.mm, item.Date.ss)
            }).ToList();
            var dt = new DateTime(model.Data[0].Date.Y, model.Data[0].Date.M, model.Data[0].Date.D);

            for (var i = 0; i < w; i++)
            {
                var dtTemp = dt + TimeSpan.FromMinutes(minutesInStep);
                var temp   = new NormalizedData();
                var models = nd.Where(p => p.DT > dt && p.DT <= dtTemp).ToList();
                if (models.Any())
                {
                    temp.MaxX = models.Max(p => p.MaxX) / 100.0f;
                    temp.MaxY = models.Max(p => p.MaxY) / 100.0f;
                    temp.MaxZ = models.Max(p => p.MaxZ) / 100.0f;
                }
                NData.Add(temp);
                dt = dtTemp;
            }
            if (NData == null || !NData.Any())
            {
                return;
            }

            //find min data
            double x = 0;

            if (NData.Any(p => p.MaxX > 0.1f))
            {
                x = NData.Where(p => p.MaxX > 0.1f).Min(p => p.MaxX);
            }
            double y = 0;

            if (NData.Any(p => p.MaxY > 0.1f))
            {
                y = NData.Where(p => p.MaxY > 0.1f).Min(p => p.MaxY);
            }
            double z = 0;

            if (NData.Any(p => p.MaxZ > 0.1f))
            {
                z = NData.Where(p => p.MaxZ > 0.1f).Min(p => p.MaxZ);
            }

            foreach (var item in NData)
            {
                item.MaxX -= x;
                item.MaxY -= y;
                item.MaxZ -= z;
            }
        }