internal void Update(OBDHistoryDataModel model) { var slowTask = new Task(delegate { for (var i = 0; i < RowsList.Count; i++) { var item = RowsList[i]; var next = i + 1 < RowsList.Count ? RowsList[i + 1].Date : DateTime.Now; var dt = new DateTime(item.Date.Year, item.Date.Month, item.Date.Day); var list = model.Data.Where(o => dt + o.Time.ToTimeSpan() >= item.Date && dt + o.Time.ToTimeSpan() < next); foreach (var el in list) { item.Update(el); } } }); slowTask.ContinueWith(delegate { if (_dispatcher != null) { _dispatcher.BeginInvoke(new Action(() => { ListHistoryRows.Refresh(); })); } }); slowTask.Start(); }
private static void OnDataPropertyCahnged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { CarParamsPresenterControl control = (CarParamsPresenterControl)sender; OBDHistoryDataModel data = (OBDHistoryDataModel)e.NewValue; control.StartUpdate(data); }
private void FillOBDData(string row) { try { OBDHistoryDataModel model = JsonConvert.DeserializeObject <OBDHistoryDataModel>(row); if (model != null) { //if (Application.Current != null) // Application.Current.Dispatcher.BeginInvoke(new Action(() => // { if (OBDLoaded != null) { OBDLoaded(model); } } //})); } catch { if (OBDLoaded != null) { OBDLoaded(new OBDHistoryDataModel()); } } }
public void SetOBDHistoryToCar(OBDHistoryDataModel model) { DISP_Car car = _cars.Where(p => p.CarModel.DID == model.DevID).FirstOrDefault(); if (car != null) { car.OBDHistory = model; if (OBDHistoryLoaded != null) { OBDHistoryLoaded(this, new EventArgs()); } } }
private void StartUpdate(OBDHistoryDataModel data) { stkData.Children.Clear(); stkHeader.Children.Clear(); if (data == null) { return; } List <string> PIDS = data.Data.Select(p => p.Code).Distinct().ToList(); BuildVertical(PIDS); _pids = PIDS; _data = data; Thread tr = new Thread(BuildData); tr.Start(); }
private void LoadOBD(string row) { try { OBDHistoryDataModel model = JsonConvert.DeserializeObject <OBDHistoryDataModel>(row); if (model != null) { if (Application.Current != null) { Application.Current.Dispatcher.BeginInvoke(new Action(() => { CarStorage.Instance.SetOBDHistoryToCar(model); })); } } } catch { } }
/// <summary> /// Хендлер обработки данных OBD /// </summary> /// <param name="data"></param> private void Instance_OBDLoaded(OBDHistoryDataModel data) { ////TODO OBDHistoryDataModel должен возвращать дату. public DateDataModel DT { get; set; } //return; //var exist = _loadedObdData.FirstOrDefault(o => o.DT.ToDate.Equals(data.DT.ToDate)); //if (exist == null) if (data.DT == null || !data.DT.ToDate.Equals(SelectedDate)) { return; } var list = new List <ScaleValuesData>(); var slowTask = new Task(delegate { lock (_loadedObdData) { _loadedObdData.Clear(); _loadedObdData.Add(data); var prms = data.Data.Select(p => p.Code).Distinct(); list.AddRange(prms.Select(el => new ScaleValuesData { Code = el, Scale = Scale, Data = GetOBDData(el) })); if (!_loadedAccData.Any(o => o.Date.Equals(SelectedDate))) { _handler.StartLoadAcc(SelectedCar.ID, SelectedDate); } } }); slowTask.ContinueWith(delegate { DispatherThreadRun(delegate { foreach (var model in list.Where(model => model.Data.Any())) { OnAddControl(model); } }); }); slowTask.Start(); }
private void Instance_OBDLoaded(OBDHistoryDataModel model) { if (model == null || !CarSelector.SelectedCar.Car.Id.Equals(model.DevID) || !model.Data.Any() || !Date.Equals(model.DT.ToDate)) { return; } HistoryHandler.Instance.OBDLoaded -= Instance_OBDLoaded; var converter = new PIDConverter(); DispatherThreadRun(delegate { OBDList.AddRange(model.Data.GroupBy(g => g.Code).Select(n => new MinMidMaxValues { Name = converter.GetPidInfo(n.Key), Min = n.Min(o => o.Vol), Mid = n.Average(o => o.Vol), Max = n.Max(o => o.Vol) })); }); OnPropertyChanged("OBDList"); }
/// <summary> /// Обновление данных OBDII /// </summary> /// <param name="model"></param> private void Instance_OBDLoaded(OBDHistoryDataModel model) { if (SelectedHistoryRow == null || !model.DT.ToDate.Equals(SelectedHistoryRow.Date)) { return; } var obd = new OBDHistoryDataModel { DevID = model.DevID, DT = model.DT }; 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 dt = new DateTime(item.Date.Year, item.Date.Month, item.Date.Day); var list = model.Data.Where(o => dt + o.Time.ToTimeSpan() >= item.Date && dt + o.Time.ToTimeSpan() < next); foreach (var el in list) { obd.Data.Add(el); } } }); slowTask.ContinueWith(obj => { if (_dispatcher != null) { _dispatcher.BeginInvoke(new Action(() => { OBDHistory = obd; TableHistory.Update(obd); OnPropertyChanged("TableHistory"); })); } }); slowTask.Start(); }
private void Instance_OBDLoaded(OBDHistoryDataModel model) { //if (!_loadedObdData.Any(o => o.DT.Equals(model.DT))) _loadedObdData.Clear(); _loadedObdData.Add(model); }