コード例 #1
0
 private void listBoxSeries_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (listBoxSeries.SelectedItem != null)
     {
         IO_PARA para = listBoxSeries.SelectedItem as IO_PARA;
         SwitchChart();
         IOParaSeries series = IOSeries.Find(x => x.Name.Trim() == para.IO_NAME.Trim());
         if (series != null)
         {
             this.RealChart.Series.Add(series);
         }
     }
 }
コード例 #2
0
ファイル: RealQueryWorkForm.cs プロジェクト: nxzzkj/lazyiot
 private void InitSeires()
 {
     SeriesIndex = -1;
     IOSeries.Clear();
     this.RealChart.Series.Clear();
     if (Device != null)
     {
         for (int i = 0; i < Device.IOParas.Count; i++)
         {
             if (Device.IOParas[i].IO_POINTTYPE.Trim() == "模拟量")
             {
                 IOParaSeries s = new IOParaSeries(this.Server, this.Communication, this.Device, Device.IOParas[i]);
                 IOSeries.Add(s);
             }
         }
     }
 }
コード例 #3
0
        private async void ReadHistory()
        {
            try
            {
                if (Device == null)
                {
                    return;
                }
                this.listView.Items.Clear();
                this.listView.Columns.Clear();
                IO_DEVICE copyDevice = this.Device.Copy();
                //构造查询语句
                string selected = "";


                for (int i = 0; i < copyDevice.IOParas.Count; i++)
                {
                    //只能统计模拟量的
                    if (Device.IOParas[i].IO_POINTTYPE == "模拟量")
                    {
                        selected += "," + this.search.MethType + "(field_" + copyDevice.IOParas[i].IO_NAME.ToLower() + "_value) as field_" + copyDevice.IOParas[i].IO_NAME.ToLower() + "_value";
                    }
                }
                if (selected != "")
                {
                    selected = selected.Remove(0, 1);
                }

                //获取读取历史数据
                InfluxDBHistoryData resultData = await IOCenterManager.QueryFormManager.ReadHistoryStaticsDevice(this.Server, this.Communication, copyDevice, this.search.StartDate, this.search.EndDate, this.ucPagerControl.PageSize, this.ucPagerControl.PageIndex, selected, search.TimeType);

                if (resultData == null || !resultData.ReturnResult)
                {
                    if (resultData != null)
                    {
                        FrmDialog.ShowDialog(this, resultData.Msg);
                    }
                    else
                    {
                        FrmDialog.ShowDialog(this, "查询失败");
                    }

                    return;
                }
                //设置页眉控件参数
                this.ucPagerControl.PageCount   = resultData.PageCount;
                this.ucPagerControl.RecordCount = resultData.RecordCount;
                //删除曲线
                InitChart();

                //循环读取每个历史数据
                //首先构造ListColumn

                ColumnHeader listColumn = new ColumnHeader();
                listColumn.Name  = "field_device_date";
                listColumn.Text  = "采集时间";
                listColumn.Width = 200;
                listColumn.Tag   = null;
                this.listView.Columns.Add(listColumn);
                //每个参数都创建一列,-9999表示质量戳是坏的值
                for (int i = 0; i < copyDevice.IOParas.Count; i++)
                {
                    if (Device.IOParas[i].IO_POINTTYPE == "模拟量")
                    {
                        listColumn       = new ColumnHeader();
                        listColumn.Name  = copyDevice.IOParas[i].ToString() + "_value";
                        listColumn.Tag   = copyDevice.IOParas[i];
                        listColumn.Text  = copyDevice.IOParas[i].IO_LABEL;
                        listColumn.Width = 100;
                        this.listView.Columns.Add(listColumn);

                        //创建曲线
                        IOParaSeries series = new IOParaSeries(this.Server, this.Communication, copyDevice, copyDevice.IOParas[i]);
                        IOSeries.Add(series);
                    }
                }
                if (resultData.Seres.Count() > 0)
                {
                    Serie s = resultData.Seres.ElementAt(0);
                    //获取首个时间
                    int dateindex = s.Columns.IndexOf("time");
                    if (dateindex >= 0)
                    {
                        for (int i = 0; i < s.Values.Count; i++)
                        {
                            string date = InfluxDbManager.GetInfluxdbValue(s.Values[i][dateindex]);


                            ListViewItem lvi = new ListViewItem(date);
                            for (int c = 0; c < copyDevice.IOParas.Count; c++)
                            {
                                int paraindex = s.Columns.IndexOf("field_" + copyDevice.IOParas[c].IO_NAME.ToLower() + "_value");
                                if (paraindex >= 0)
                                {
                                    IOParaSeries series = IOSeries.Find(x => x.Name.Trim() == copyDevice.IOParas[c].IO_NAME.Trim());

                                    double yValue = -9999;
                                    double.TryParse(InfluxDbManager.GetInfluxdbValue(s.Values[i][paraindex]), out yValue);
                                    string xValue = date;

                                    lvi.SubItems.Add(InfluxDbManager.GetInfluxdbValue(s.Values[i][paraindex]).ToString());

                                    if (series != null)
                                    {
                                        int pointIndex = series.Points.AddXY(date, new object[1] {
                                            yValue
                                        });
                                        if (xValue != "")
                                        {
                                            if (yValue == -9999)
                                            {
                                                series.Points[pointIndex].IsEmpty = true;
                                                series.Points[pointIndex].ToolTip = "坏数据";
                                            }
                                            else
                                            {
                                                series.Points[pointIndex].ToolTip = "时间=" + date + ",采集值=" + yValue;
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    lvi.SubItems.Add("");
                                }
                            }
                            listView.Items.Add(lvi);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                IOCenterManager.QueryFormManager.DisplyException(ex);
            }
        }