private void comboBoxEdit2_SelectedIndexChanged(object sender, EventArgs e) { if (comboBoxEdit1.SelectedIndex >= 0 && comboBoxEdit2.SelectedIndex >= 0) { HHDeviceProperty prop = comboBoxEdit1.SelectedItem as HHDeviceProperty; HHDevice dev = comboBoxEdit2.SelectedItem as HHDevice; HHDeviceProperty devProp = dev.GetProperty(prop); List <DevCurve> curves = devProp.Curves; List <DateTime> listTime = DataStorage.DatabaseModule.GetInstance().QueryCurveTimeList(curves[0].Group.Type, curves[0].Index); comboBoxEdit3.Properties.Items.Clear(); comboBoxEdit3.Text = ""; for (int i = 0; i < listTime.Count; i++) { comboBoxEdit3.Properties.Items.Add(listTime[i]); } if (comboBoxEdit3.Properties.Items.Count > 0) { comboBoxEdit3.SelectedIndex = 0; } else { DrawCurve(); } } }
public void DrawCurve() { dayCurveGroup.ClearChartObject(); DateTime time = dateEdit1.DateTime.Date; this.dayCurveGroup.XAxes.SetOrgTime(ChartGraph.DateTime2ChartTime(time), 0); if (selectDev == null) { return; } IList <HHDeviceProperty> listProp = selectDev.DevGroup.AnalogProperties; int colorIndex = -1; DateTime drawTime = DateTime.MinValue; for (int i = 0; i < listProp.Count; i++) { if (listProp[i].Selected == false) { continue; } colorIndex++; HHDeviceProperty devProp = selectDev.GetProperty(listProp[i]); int analogIndex = devProp.Analog.Index; LineArea la = new LineArea(chart, listProp[i].Name, false); la.YAxes.YAxesMin = 0; la.YAxes.YAxesMax = 200; LineCurve lc = new LineCurve(chart, listProp[i].Name, 0); lc.LineColor = colorList[colorIndex % colorList.Length]; la.AddLine(lc); lc.YAxes.Mode = YAxesMode.Manual; lc.YAxes.YAxesMin = devProp.Analog.ADMin; lc.YAxes.YAxesMax = devProp.Analog.ADMax; lc.YAxes.UnitString = listProp[i].Unit; if (devProp.Analog.ADMax < 1) { lc.YAxes.Precision = 2; } else if (devProp.Analog.ADMax < 10) { lc.YAxes.Precision = 1; } List <AnalogRecordGroup> r = DatabaseModule.GetInstance().QueryAnalogHistory(devProp.Analog.Group.Type, analogIndex, time, time.AddDays(1)); r.Sort(); //不考虑回溯 if (r != null && r.Count > 0) { for (int m = 0; m < r.Count; m++) { List <AnalogRecord> records = r[m].Records; for (int j = 0; j < records.Count; j++) { if (drawTime == DateTime.MinValue) { drawTime = records[j].Time; } else if (drawTime > records[j].Time) { drawTime = records[j].Time; } long tm = ChartGraph.DateTime2ChartTime(records[j].Time); lc.AddPoint(new LinePoint(tm, records[j].Value)); } } } dayCurveGroup.AddChartObject(la); } if (drawTime == DateTime.MinValue) { drawTime = time; } this.dayCurveGroup.XAxes.SetOrgTime(ChartGraph.DateTime2ChartTime(drawTime), 0); chart.Draw(); }
private void ExportProc() { try { exportTotal = 0; exportedSize = 0; for (int i = 0; i < MaxSrcs; i++) { if (selectChannels[i] != null) { exportTotal += selectChannels[i].File.Length; } } for (int i = 0; i < MaxSrcs; i += PropChannelNum) { if (selectChannels[i] != null) { exportFile = selectChannels[i].File; if (i > 0 && (selectChannels[i - PropChannelNum] != null)) { exportedSize += selectChannels[i - PropChannelNum].File.Length; } SignalChannel sigChannel = selectChannels[i].File.Channels[selectChannels[i].Channel - 1]; int srcIndex = i / PropChannelNum; sigChannel.DecodeFM = false; sigChannel.DecodeCurve = 0; sigChannel.DecodeAngle = false; sigChannel.DecodeFM = selectDevice.DevGroup.SourceGroups[srcIndex].AllowFM; int allowCurve = selectDevice.DevGroup.SourceGroups[srcIndex].AllowCurve; sigChannel.DecodeCurve = allowCurve; bool allowAngle = selectDevice.DevGroup.SourceGroups[srcIndex].AllowAngle; sigChannel.DecodeAngle = allowAngle; if (allowAngle && selectChannels[i + 1] != null) //参考相位 { SignalChannel sigChannel1 = selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1]; sigChannel1.DecodeAngle = true; sigChannel1.IsReference = true; selectChannels[i + 1].File.SignalArgsChanged += new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } else if (allowCurve > 0) //解码道岔曲线 { HHDeviceProperty devBindProp = selectDevice.GetProperty(selectDevice.DevGroup.SourceGroups[srcIndex].Properties[0]); DevCurve devCurve = devBindProp.Curves[0]; sigChannel.TimeInterval = devCurve.TimeInterval; if (devCurve.MonitorType == Common.SignalType.SignalDCCurve) { sigChannel.DecodeCurve = 2; } else { sigChannel.DecodeCurve = 1; } if ((selectChannels[i + 1] == null) && (selectChannels[i + 2] == null)) //单相 { sigChannel.SignalArgsChanged += new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } else { curveGrp = new Common.CurveGroup(3, devCurve.Group.Type, devCurve.Index); sigChannel.SignalArgsChanged += new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedA); if (selectChannels[i + 1] != null) { selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1].SignalArgsChanged += new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedB); //B相 } if (selectChannels[i + 2] != null) { selectChannels[i + 2].File.Channels[selectChannels[i + 2].Channel - 1].SignalArgsChanged += new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedC); //C相 } } } else { sigChannel.SignalArgsChanged += new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } exportSrcIndex = srcIndex; selectChannels[i].File.Export(); if (allowAngle && selectChannels[i + 1] != null) //参考相位 { SignalChannel sigChannel1 = selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1]; sigChannel1.DecodeAngle = true; sigChannel1.SignalArgsChanged -= new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } else if ((allowCurve > 0) && ((selectChannels[i + 1] != null) || (selectChannels[i + 2] != null))) //有2条以上曲线 { HHDeviceProperty devBindProp = selectDevice.GetProperty(selectDevice.DevGroup.SourceGroups[srcIndex].Properties[0]); DevCurve devCurve = devBindProp.Curves[0]; sigChannel.SignalArgsChanged -= new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedA); if (selectChannels[i + 1] != null) { selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1].SignalArgsChanged -= new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedB); //B相 } if (selectChannels[i + 2] != null) { selectChannels[i + 2].File.Channels[selectChannels[i + 2].Channel - 1].SignalArgsChanged -= new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedC); //C相 } } else { sigChannel.SignalArgsChanged -= new EventHandler <RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged); } } } exportOK = true; } catch (Exception) { } }
private void DrawCurve() { HHDevice device = comboBoxEdit2.SelectedItem as HHDevice; HHDeviceProperty devProp = comboBoxEdit1.SelectedItem as HHDeviceProperty; DateTime timeSel = DateTime.Now; if (comboBoxEdit3.SelectedIndex >= 0) { timeSel = (DateTime)comboBoxEdit3.SelectedItem; } HHDeviceProperty devBindProp = device.GetProperty(devProp); List <DevCurve> curves = devBindProp.Curves; UltraChart.CurveGroup grp = chart.GroupList[0]; grp.ClearChartObject(); LineArea area = new LineArea(chart, "道岔曲线", true); area.IsShowFoldFlag = false; area.IsFold = false; area.YAxes.Mode = YAxesMode.Manual; area.YAxes.YAxesMin = curves[0].ADMin; area.YAxes.YAxesMax = curves[0].ADMax; area.YAxes.Precision = 3; area.YAxes.UnitString = ""; grp.AddChartObject(area); grp.XAxes.SetOrgTime(ChartGraph.DateTime2ChartTime(timeSel), 0); chart.AutoSetXScale(); List <StationCurve> listCurve = DataStorage.DatabaseModule.GetInstance().QueryCurveHistory(curves[0].Group.Type, curves[0].Index, timeSel); string[][] curveNames = new string[][] { new string[] { "曲线" }, new string[] { "曲线1", "曲线2" }, new string[] { "A相", "B相", "C相" }, }; for (int i = 0; i < curves.Count; i++) { LineCurve line = new LineCurve(chart, curveNames[curves.Count - 1][i], 0); line.LineColor = ColorList[i % ColorList.Length]; area.AddLine(line); if (listCurve != null && listCurve.Count > 0 && listCurve[i] != null) { for (int j = 0; j < listCurve[i].Points.Length; j++) { DateTime time = timeSel.AddMilliseconds(curves[i].TimeInterval * j); //40毫秒 LinePoint point = new LinePoint(); point.Value = listCurve[i].Points[j]; point.Time = ChartGraph.DateTime2ChartTime(time); line.AddPoint(point); } } } chart.AutoSetXScale(); chart.Draw(); }