示例#1
0
        void DataClient_GetTrendsCompleted(object sender, DataServiceReference.GetTrendsCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                DateTime t00 = DateTime.Now;
                chrBase.DataSource = null;
                Trends.Clear();
                foreach (ItemSqlTrend record in e.Result.Records)
                {
                    ItemSqlTrend item = new ItemSqlTrend();
                    item.DataValue = GetCorrectDataValue(record.DataValue);
                    item.SqlTime   = record.SqlTime;
                    Trends.Add(item);
                }
                TrendInited        = true;
                chrBase.DataSource = Trends;

                TimeSpan diff1 = DateTime.Now - T0;
                TimeSpan diff2 = DateTime.Now - t00;

                lblStatus.Text = string.Format("Получено {0} значений за {1} мс (отрисовка за {2} мс)",
                                               e.Result.Records.Count,
                                               diff1.TotalMilliseconds.ToString("0"),
                                               diff2.TotalMilliseconds.ToString("0"));
            }
            else
            {
                lblStatus.Text = "Ошибка запроса";
            }
            ckUpdate.Visibility = System.Windows.Visibility.Collapsed;
        }
示例#2
0
        ItemSqlTrends GenerateDemoTrens()
        {
            ItemSqlTrends result = new ItemSqlTrends();

            result.Records = new ObservableCollection <ItemSqlTrend>();

            Random   random   = new Random();
            TimeSpan tsHour   = new TimeSpan(1, 0, 0);
            DateTime starTime = DateTime.Now - tsHour;

            double minValue = 0;
            double maxValue = 0;

            for (int i = 0; i < 360; i++)
            {
                ItemSqlTrend trend = new ItemSqlTrend();
                trend.SqlTime = starTime + new TimeSpan(0, 0, 10 * i);

                switch (Item.DataType)
                {
                case ItemReal.DataTypeSimple.Boolean:
                    trend.DataValue = random.Next(0, 2);
                    break;

                case ItemReal.DataTypeSimple.Integer:
                    trend.DataValue = random.Next(0, 50);
                    break;

                case ItemReal.DataTypeSimple.Real:
                    trend.DataValue = random.Next(0, 50) + random.NextDouble();
                    break;
                }

                if (trend.DataValue < minValue)
                {
                    minValue = trend.DataValue;
                }

                if (trend.DataValue > maxValue)
                {
                    maxValue = trend.DataValue;
                }

                result.Records.Add(trend);
            }

            result.MinValue = minValue;
            result.MaxValue = maxValue;

            return(result);
        }
示例#3
0
        /// <summary>
        /// Запрос обновления из вне.
        /// </summary>
        public void UpdateExternal()
        {
            short timePeriodCurrent = GetTimePeriod();

            if (Visible && OnlineUpdate && TrendInited)
            {
                if (SqlTimeLast != Item.SqlTime)
                {
                    if (timePeriodCurrent >= cbeTimePeriod.SelectedIndex)
                    {
                        DateTime t00 = DateTime.Now;
                        chrBase.DataSource = null;

                        // Добавление актуального значения.
                        ItemSqlTrend item = new ItemSqlTrend()
                        {
                            DataValue = GetCorrectDataValue(Item.DataValue),
                            SqlTime   = Item.SqlTime,
                        };
                        Trends.Add(item);

                        // Очистка от неактуальных значений.
                        for (int i = 0; i < Trends.Count; i++)
                        {
                            if (Trends[i].SqlTime <Global.Default.SqlCurrentTime - TimeDistance ||
                                                   Trends[i].SqlTime> Global.Default.SqlCurrentTime)
                            {
                                Trends.RemoveAt(i);
                            }
                        }

                        chrBase.DataSource = Trends;

                        TimeSpan diff2 = DateTime.Now - t00;

                        lblStatus.Text = string.Format("Сейчас {0} значений (отрисовка за {1} мс)", Trends.Count, diff2.TotalMilliseconds.ToString("0"));

                        deBegin.EditValue = Global.Default.SqlCurrentTime - TimeDistance;
                        deEnd.EditValue   = Global.Default.SqlCurrentTime;
                    }
                    SqlTimeLast = Item.SqlTime;
                }
            }
        }