コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        private void comboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBoxEdit1.SelectedIndex >= 0)
            {
                HHDeviceProperty devProp = comboBoxEdit1.SelectedItem as HHDeviceProperty;


                IList <HHDevice> listDev = devProp.DevGrp.Devices;

                comboBoxEdit2.Properties.Items.Clear();


                comboBoxEdit2.Text = "";
                for (int i = 0; i < listDev.Count; i++)
                {
                    comboBoxEdit2.Properties.Items.Add(listDev[i]);
                }

                if (listDev.Count > 0)
                {
                    comboBoxEdit2.SelectedIndex = 0;
                }
            }
        }
コード例 #3
0
ファイル: FormDayCurve.cs プロジェクト: zky001/RecordAnalyse
        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();
        }
コード例 #4
0
        void FormDataWizard_SignalArgsChanged(object sender, RecordAnalyse.Signal.SignalArgs e)
        {
            if (exportSrcIndex >= 0 && selectDevice != null)
            {
                HHSourceGroup srcGrp = selectDevice.DevGroup.SourceGroups[exportSrcIndex];

                foreach (HHDeviceProperty prop in srcGrp.Properties)
                {
                    HHDeviceProperty devProp   = selectDevice.GetProperty(prop);
                    DevAnalog        devAnalog = devProp.Analog;
                    List <DevCurve>  devCurves = devProp.Curves;
                    switch (prop.MonitorType)
                    {
                    case Common.SignalType.SignalAC:
                        if (devAnalog != null)
                        {
                            DataStorage.DatabaseModule.GetInstance().AddAnalog(devAnalog.Group.Type, devAnalog.Index, e.ACAmpl, e.Time);
                        }
                        break;

                    case Common.SignalType.SignalDC:
                        if (devAnalog != null)
                        {
                            DataStorage.DatabaseModule.GetInstance().AddAnalog(devAnalog.Group.Type, devAnalog.Index, e.DCAmpl, e.Time);
                        }
                        break;

                    case Common.SignalType.SignalCarrier:
                        if (e.LowFreq > 0 && devAnalog != null)
                        {
                            DataStorage.DatabaseModule.GetInstance().AddAnalog(devAnalog.Group.Type, devAnalog.Index, e.CarrierFreq, e.Time);
                        }
                        break;

                    case Common.SignalType.SignalLow:
                        if (e.LowFreq > 0 && devAnalog != null)
                        {
                            DataStorage.DatabaseModule.GetInstance().AddAnalog(devAnalog.Group.Type, devAnalog.Index, e.LowFreq, e.Time);
                        }
                        break;

                    case Common.SignalType.SignalACCurve:
                        if (devCurves != null && devCurves.Count > 0)
                        {
                            DataStorage.DatabaseModule.GetInstance().AddCurve(devCurves[0].Group.Type, devCurves[0].Index, e.Time, 25, e.ACCurve);
                        }
                        break;

                    case Common.SignalType.SignalDCCurve:
                        break;

                    case Common.SignalType.SignalAngle:
                        if (devAnalog != null)
                        {
                            DataStorage.DatabaseModule.GetInstance().AddAnalog(devAnalog.Group.Type, devAnalog.Index, e.AngleDiff, e.Time);
                        }
                        break;
                    }
                }
            }
        }
コード例 #5
0
        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)
            {
            }
        }
コード例 #6
0
        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();
        }