public void RefreshCurveData() { List <ICurveEntitySource> collection = new List <ICurveEntitySource>(); CurveEntitySource entity = new CurveEntitySource(); entity.Text = "长度(km)"; entity.Color = Brushes.Red; entity.Marker = new CirclePointMarker(); entity.Marker.Fill = Brushes.Red; for (int i = 0; i < 20; i++) { PointC point = new PointC(); point.X = i; point.Y = i * i; point.Text = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd"); entity.Source.Add(point); this.MinValue = this.MinValue > point.X ? point.X : this.MinValue; this.MaxValue = this.MaxValue < point.X ? point.X : this.MaxValue; } collection.Add(entity); entity = new CurveEntitySource(); entity.Text = "重量(kg)"; entity.Color = Brushes.Orange; entity.Marker = new T5PointMarker(); entity.Marker.Fill = Brushes.Orange; for (int i = 0; i < 20; i++) { PointC point = new PointC(); point.X = i; point.Y = (20 - i) * (20 - i); point.Text = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd"); entity.Source.Add(point); this.MinValue = this.MinValue > point.X ? point.X : this.MinValue; this.MaxValue = this.MaxValue < point.X ? point.X : this.MaxValue; } collection.Add(entity); this.Collection = collection; }
private void ProcessStatisticsDataQuery(int id, DateTime sTime, DateTime eTime) { Stopwatch sw = new Stopwatch(); sw.Start(); var result = HisDataManager.Manager.GetQueryService(mDatabase).ReadNumberStatistics(id, sTime, eTime); sw.Stop(); OpMessage = string.Format(Res.Get("OpMsgFormate"), result.Count, sw.ElapsedMilliseconds); //Debug.Print("查询耗时:" + sw.ElapsedMilliseconds); CurveEntitySource entity = new CurveEntitySource(); entity.Text = this.SelectTag; entity.Color = System.Windows.Media.Brushes.Red; entity.Marker = new CirclePointMarker(); entity.Marker.Fill = System.Windows.Media.Brushes.Red; entity.Marker.Visibility = Visibility.Hidden; List <StatisticsHisDataPoint> ltmp = new List <StatisticsHisDataPoint>(); for (int i = 0; i < result.Count; i++) { double avgvalue, maxvalue, minvalue; DateTime time, maxvaluetime, minvaluetime; byte qu = 0; result.ReadValue(i, out time, out avgvalue, out maxvalue, out maxvaluetime, out minvalue, out minvaluetime); ltmp.Add(new StatisticsHisDataPoint() { DateTime = time, AvgValue = avgvalue, MaxValue = maxvalue, MinValue = minvalue, MaxValueTime = maxvaluetime, MinValueTime = minvaluetime }); } StatisticsDatas = ltmp; result.Dispose(); }
public void RefreshCurveBigData(bool init = false) { List <ICurveEntitySource> collection = new List <ICurveEntitySource>(); CurveEntitySource entity = new CurveEntitySource(); entity.Text = "Y"; entity.Color = Brushes.Red; //entity.Marker = new CirclePointMarker(); entity.Marker = null; entity.IsAnimal = false; //entity.Marker.Fill = Brushes.Red; for (int i = 0; i < 2000; i++) { PointC point = new PointC(); point.X = i; point.Y = (Math.Sin(i * 0.02) + Math.Cos(i * 0.5) + Math.Sin(i * 0.1) + Math.Sin(i * 0.01)) * 50 + 200; //point.Y = Math.Cos(i * 0.006)*150+ (Math.Cos(i * 0.5) + Math.Sin(i * 0.1) + Math.Sin(i * 0.01))*50 + 200; point.Text = i.ToString(); entity.Source.Add(point); if (init) { this.MinValueBig = this.MinValueBig > point.X ? point.X : this.MinValueBig; this.MaxValueBig = this.MaxValueBig < point.X ? point.X : this.MaxValueBig; } } collection.Add(entity); this.CollectionData = collection; }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="id"></param> /// <param name="sTime"></param> /// <param name="eTime"></param> private void ProcessDataQuery <T>(int id, DateTime sTime, DateTime eTime) { Stopwatch sw = new Stopwatch(); sw.Start(); var result = HisDataManager.Manager.GetQueryService(mDatabase).ReadAllValue <T>(id, sTime, eTime); sw.Stop(); OpMessage = string.Format(Res.Get("OpMsgFormate"), result.Count, sw.ElapsedMilliseconds); //Debug.Print("查询耗时:" + sw.ElapsedMilliseconds); CurveEntitySource entity = new CurveEntitySource(); entity.Text = this.SelectTag; entity.Color = System.Windows.Media.Brushes.Red; entity.Marker = new CirclePointMarker(); entity.Marker.Fill = System.Windows.Media.Brushes.Red; entity.Marker.Visibility = Visibility.Hidden; double maxx = double.MinValue, maxy = double.MinValue, minx = double.MaxValue, miny = double.MaxValue; List <HisDataPoint> ltmp = new List <HisDataPoint>(); for (int i = 0; i < result.Count; i++) { object value; DateTime time; byte qu = 0; value = result.GetValue(i, out time, out qu); minx = minx > i ? i : minx; maxx = maxx < i ? i : maxx; double dtmp = ConvertValue(value); miny = miny > dtmp ? dtmp : miny; maxy = maxy < dtmp ? dtmp : maxy; PointC point = new PointC(); point.X = i; point.Y = dtmp; point.Text = time.ToString("dd HH:mm:ss"); entity.Source.Add(point); ltmp.Add(new HisDataPoint() { DateTime = time, Quality = qu, Value = value }); /// mDatas.Add(new HisDataPoint() { DateTime = time, Quality = qu, Value = value }); } Datas = ltmp; List <SplitItem> yitems = new List <SplitItem>(5); maxy = maxy * 1.2; miny = miny - Math.Abs(miny) * 0.2; MaxXValue = maxx; MaxYValue = maxy; MinXValue = minx; MinYValue = miny; ChartSource = new List <ICurveEntitySource>() { entity }; var dval = (maxy - miny) / 5; for (int i = 1; i <= 5; i++) { yitems.Add(new SplitItem() { SpliteType = SplitItemType.Normal, Text = (miny + i * dval).ToString("f2"), IsShowText = true, Value = miny + i * dval, Color = System.Windows.Media.Brushes.SkyBlue }); } yitems.Add(new SplitItem() { SpliteType = SplitItemType.HeighLight, Text = (miny + (maxy - miny) / 2).ToString("f2"), IsShowText = true, Value = miny + (maxy - miny) / 2, Color = System.Windows.Media.Brushes.DeepSkyBlue, IsShowTrangle = true }); YLineItems = yitems; result.Dispose(); }
private void ProcessDataQuery <T>(int id, List <DateTime> times) { Stopwatch sw = new Stopwatch(); sw.Start(); var result = HisDataManager.Manager.GetQueryService(mDatabase).ReadValue <T>(id, times, Cdy.Tag.QueryValueMatchType.Linear); sw.Stop(); OpMessage = string.Format(Res.Get("OpMsgFormate"), result.Count, sw.ElapsedMilliseconds); CurveEntitySource entity = new CurveEntitySource(); entity.Text = this.SelectTag; entity.Color = System.Windows.Media.Brushes.Red; entity.Marker = new CirclePointMarker(); entity.Marker.Fill = System.Windows.Media.Brushes.Red; entity.Marker.Visibility = Visibility.Hidden; double maxx = double.MinValue, maxy = double.MinValue, minx = double.MaxValue, miny = double.MaxValue; Dictionary <DateTime, Tuple <object, int> > vtmps = new Dictionary <DateTime, Tuple <object, int> >(); List <HisDataPoint> ltmp = new List <HisDataPoint>(); int i = 0; for (i = 0; i < result.Count; i++) { object value; DateTime time; byte qu = 0; value = result.GetValue(i, out time, out qu); vtmps.Add(time, new Tuple <object, int>(value, qu)); } i = 0; foreach (var vv in times) { object value = 0; DateTime time = vv; byte qu = 255; if (vtmps.ContainsKey(vv)) { value = vtmps[vv].Item1; qu = (byte)vtmps[vv].Item2; } minx = minx > i ? i : minx; maxx = maxx < i ? i : maxx; miny = miny > Convert.ToDouble(value) ? Convert.ToDouble(value) : miny; maxy = maxy < Convert.ToDouble(value) ? Convert.ToDouble(value) : maxy; PointC point = new PointC(); point.X = i; point.Y = Convert.ToDouble(value); point.Text = time.ToString("dd HH:mm:ss"); entity.Source.Add(point); ltmp.Add(new HisDataPoint() { DateTime = time, Quality = qu, Value = value }); i++; } Datas = ltmp; List <SplitItem> yitems = new List <SplitItem>(5); maxy = maxy * 1.2; miny = miny - Math.Abs(miny) * 0.2; MaxXValue = maxx; MaxYValue = maxy; MinXValue = minx; MinYValue = miny; ChartSource = new List <ICurveEntitySource>() { entity }; var dval = (maxy - miny) / 5; for (i = 1; i <= 5; i++) { yitems.Add(new SplitItem() { SpliteType = SplitItemType.Normal, Text = (miny + i * dval).ToString("f2"), IsShowText = true, Value = miny + i * dval, Color = System.Windows.Media.Brushes.SkyBlue }); } yitems.Add(new SplitItem() { SpliteType = SplitItemType.HeighLight, Text = (miny + (maxy - miny) / 2).ToString("f2"), IsShowText = true, Value = miny + (maxy - miny) / 2, Color = System.Windows.Media.Brushes.DeepSkyBlue, IsShowTrangle = true }); YLineItems = yitems; }