示例#1
0
        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;
        }
示例#2
0
        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();
        }
示例#3
0
        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;
        }
示例#4
0
        /// <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();
        }
示例#5
0
        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;
        }