Esempio n. 1
0
        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);
        }
Esempio n. 3
0
 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());
         }
     }
 }
Esempio n. 4
0
        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();
        }
Esempio n. 6
0
 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 { }
 }
Esempio n. 7
0
        /// <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");
        }
Esempio n. 9
0
        /// <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);
 }