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