//public static string getT2Id(int tunnelId) //{ // StringBuilder sqlStr = new StringBuilder(); // sqlStr.Append("SELECT [PROBE_ID] FROM " + ProbeManageDbConstNames.TABLE_NAME); // sqlStr.Append(" WHERE "); // sqlStr.Append("TUNNEL_ID = " + tunnelId); // sqlStr.Append(" AND [PROBE_NAME]='T2'"); // ManageDataBase db = new ManageDataBase(DATABASE_TYPE.GasEmissionDB); // DataSet ds = db.ReturnDS(sqlStr.ToString()); // if (ds.Tables[0].Rows.Count <= 0) // return string.Empty; // else // { // return ds.Tables[0].Rows[0][0].ToString(); // } //} #region 实时监控 /// <summary> /// 获取指定探头的最新实时数据 /// </summary> /// <param name="iProbeId"></param> /// <returns></returns> /// <summary> /// 开始按钮Click事件 /// 原始数据实时监控 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void _btnStart_Click(object sender, EventArgs e) { // 没有选择巷道 if (tunnelId == Const.INVALID_ID) { Alert.alert(Const_GE.TUNNEL_NAME_MUST_INPUT); return; } // 没有选择探头 if (cbxSensors.SelectedIndex < 0) { Alert.alert(Const_GE.PROBE_MUST_CHOOSE); return; } if (_btnStart.Text == "开始") { //this.timer2.Enabled = true; // 设置TeeChart1(监控系统原始数据M) TeeChartUtil.resetTeeChart(tChartM); // 设置TeeChart2(T2瓦斯浓度平均增加值Q) TeeChartUtil.resetTeeChart(tChartT2); // 设置TeeChart3(同一工序条件下瓦斯浓度变化值N) TeeChartUtil.resetTeeChart(tChartN); // 获取点击开始按钮时候的系统时间 _StartTime = DateTime.Now; _btnStart.Text = "停止"; timer1.Interval = 15000; DEFAULT_DATA_SHOW_COUNT = 120; timer1.Enabled = true; } else { _btnStart.Text = "开始"; timer1.Enabled = false; } // 清空datagridview _dgvData.Rows.Clear(); }
// 更新M_N数据 // 同一工序下,瓦斯浓度变化值N private void UpdateMnData() { if (CurrentProbe == null) { return; } var datas = GasConcentrationProbeData.FindNewRealData(CurrentProbe.ProbeId, 2); var time = datas[0].RecordTime; var value = datas[0].ProbeValue; var value1 = datas[1].ProbeValue; var valueN = value - value1; // 判断是否是最新数据 if (time != _lastTimeMn && _lastTimeMn != DateTime.MinValue) { _lastTimeMn = time; // 往DGV中填充数据 dgvData.Rows.Add(value + "%", time); if (dgvData.Rows.Count > 0) { // 定位滚动条 dgvData.FirstDisplayedScrollingRowIndex = dgvData.Rows.Count - 1; // 瓦斯浓度超过安全范围 if (value >= YellowDataThreshold && value <= RedDataThreshold) { dgvData.Rows[dgvData.Rows.Count - 1].DefaultCellStyle.BackColor = Color.Yellow; } else if (value > RedDataThreshold) { dgvData.Rows[dgvData.Rows.Count - 1].DefaultCellStyle.BackColor = Color.Red; } } TeeChartUtil.addSingleData2TeeChart(tChartM, DataCountPerFrame, time, value); TeeChartUtil.addSingleData2TeeChart(tChartN, DataCountPerFrame, time, valueN); } else { _lastTimeMn = time; } }
private void UpdateT2Data() { if (T2Probe.ProbeId == string.Empty) { return; } var datas = GasConcentrationProbeData.FindNewRealData(T2Probe.ProbeId, 2); var time = datas[0].RecordTime; var value0 = datas[0].ProbeValue; var value1 = datas[1].ProbeValue; // 判断是否是最新数据 if (time == _lastTimeT2) { return; } _lastTimeT2 = time; var value = value1 - value0; TeeChartUtil.addSingleData2TeeChart(tChartT2, DataCountPerFrame, time, value); }
/// <summary> /// 开始实时监控 /// </summary> private void StartRealTimeCurveMonitoring() { // 检查是否选择了巷道和传感器 if (!Check()) { return; } // reset Tee Chart TeeChartUtil.resetTeeChart(tChartM); // tChart1, 监控系统原始数据M TeeChartUtil.resetTeeChart(tChartT2); // tChart2, T2瓦斯浓度平均增加值Q TeeChartUtil.resetTeeChart(tChartN); // tChart3, 同一工序条件下瓦斯浓度变化值N // 清空datagridview dgvData.Rows.Clear(); // 获取指定探头的旧数据 ----------用来填充曲线。 var dsData = GasConcentrationProbeData.FindHistaryDataTop(CurrentProbe.ProbeId, DataCountPerFrame); AddDataSet2TeeChart(tChartM, dsData, "M"); AddDataSet2TeeChart(tChartN, dsData, "N"); if (!String.IsNullOrEmpty(T2Probe.ProbeId)) { var ds = GasConcentrationProbeData.FindHistaryDataTop(T2Probe.ProbeId, DataCountPerFrame); AddDataSet2TeeChart(tChartT2, ds, "T2"); } if (dgvData.Rows.Count > 0) { // 定位滚动条 dgvData.FirstDisplayedScrollingRowIndex = dgvData.Rows.Count - 1; } // 获取旧数据 ---------- End timer1.Enabled = true; // 启动定时器 }
// 更新M_N数据 // 同一工序下,瓦斯浓度变化值N private void updateMNData() { var datas = GasConcentrationProbeData.FindNewRealData(currentProbeId, 2); var time = datas[0].RecordTime; var time1 = datas[1].RecordTime; var value = datas[0].ProbeValue; var value1 = datas[1].ProbeValue; var valueN = value - value1; // 判断是否是最新数据 if (time != _LastTimeMN) { _LastTimeMN = time; // 往DGV中填充数据 _dgvData.Rows.Add(value + "%", time); if (_dgvData.Rows.Count > 0) { // 定位滚动条 _dgvData.FirstDisplayedScrollingRowIndex = _dgvData.Rows.Count - 1; // 瓦斯浓度超过安全范围 if (value >= yellowDataThreshold && value <= redDataThreshold) { _dgvData.Rows[_dgvData.Rows.Count - 1].DefaultCellStyle.BackColor = Color.Yellow; } else if (value > redDataThreshold) { _dgvData.Rows[_dgvData.Rows.Count - 1].DefaultCellStyle.BackColor = Color.Red; } } TeeChartUtil.addSingleData2TeeChart(tChartM, DEFAULT_DATA_SHOW_COUNT, time, value); TeeChartUtil.addSingleData2TeeChart(tChartN, DEFAULT_DATA_SHOW_COUNT, time, valueN); } }
/// <summary> /// 获取指定探头的最新2行实时数据 /// </summary> /// <param name="iProbeId"></param> /// <returns></returns> //public static DataSet getLatest2RowsData(string iProbeId) //{ // StringBuilder sqlStr = new StringBuilder(); // sqlStr.Append("SELECT TOP 2 * FROM " + GasConcentrationProbeDataDbConstNames.TABLE_NAME); // sqlStr.Append(" WHERE " + GasConcentrationProbeDataDbConstNames.PROBE_ID + " = " + iProbeId); // sqlStr.Append(" ORDER BY " + GasConcentrationProbeDataDbConstNames.PROBE_DATA_ID + " DESC"); // ManageDataBase db = new ManageDataBase(DATABASE_TYPE.GasEmissionDB); // DataSet ds = db.ReturnDS(sqlStr.ToString()); // return ds; //} private void updateT2Data() { if (_T2Id == string.Empty) { tChartT2.Header.Text = "该巷道没有设置T2传感器."; return; } var datas = GasConcentrationProbeData.FindNewRealData(_T2Id, 2); var time = datas[0].RecordTime; var value0 = datas[0].ProbeValue; var value1 = datas[1].ProbeValue; // 判断是否是最新数据 if (time != _LastTimeT2) { _LastTimeT2 = time; var value = value1 - value0; t2DeltaSumValue += value; value = t2DeltaSumValue / ++t2DataCount; TeeChartUtil.addSingleData2TeeChart(tChartT2, DEFAULT_DATA_SHOW_COUNT, time, value); } }