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); } } }
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); } } } }
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); } }