示例#1
0
        public void ExportFFTToCSV(Stream returnStream, NameValueCollection requestParameters)
        {
            int eventId = int.Parse(requestParameters["eventID"]);

            using (AdoDataConnection connection = new AdoDataConnection("dbOpenXDA"))
                using (StreamWriter writer = new StreamWriter(returnStream))
                {
                    double startTime = requestParameters["startDate"] == null ? 0.0 : double.Parse(requestParameters["startDate"]);
                    int    cycles    = requestParameters["cycles"] == null ? 0 : int.Parse(requestParameters["cycles"]);

                    Event evt   = (new TableOperations <Event>(connection)).QueryRecordWhere("ID = {0}", eventId);
                    Meter meter = new TableOperations <Meter>(connection).QueryRecordWhere("ID = {0}", evt.MeterID);
                    meter.ConnectionFactory = () => new AdoDataConnection("dbOpenXDA");

                    AnalyticController ctrl      = new AnalyticController();
                    DataGroup          dataGroup = OpenSEEController.QueryDataGroup(evt.ID, meter);

                    List <D3Series> harmonics = ctrl.GetFFTLookup(dataGroup, startTime, cycles); // AnalyticController.GetFFTLookup(dataGroup, startTime, cycles);

                    List <string> headers = new List <string>()
                    {
                        "Harmonic"
                    };

                    headers = headers.Concat(harmonics.Select(item => item.LegendGroup + " " + item.LegendVertical + " " + item.LegendHorizontal)).ToList();

                    if (headers.Count == 1)
                    {
                        return;
                    }

                    // Write the CSV header to the file
                    writer.WriteLine(string.Join(",", headers));

                    for (int i = 0; i < harmonics.First().DataPoints.Count(); ++i)
                    {
                        List <string> line = new List <string>()
                        {
                            harmonics.First().DataPoints[i][0].ToString()
                        };

                        line = line.Concat(harmonics.Select(item => item.DataPoints[i][1].ToString())).ToList();

                        writer.WriteLine(string.Join(",", line));
                    }
                }
        }
示例#2
0
        private List <D3Series> QueryAnalyticData(Meter meter, Event evt, string analytic, int order, double Trc, int harmonic)
        {
            DataGroup        dataGroup        = OpenSEEBaseController.QueryDataGroup(evt.ID, meter);
            VICycleDataGroup viCycleDataGroup = OpenSEEBaseController.QueryVICycleDataGroup(evt.ID, meter);

            AnalyticController controller = new AnalyticController();

            if (analytic == "FirstDerivative")
            {
                return(controller.GetFirstDerivativeLookup(dataGroup, viCycleDataGroup));
            }
            if (analytic == "ClippedWaveforms")
            {
                return(controller.GetClippedWaveformsLookup(dataGroup));
            }
            if (analytic == "Frequency")
            {
                return(controller.GetFrequencyLookup(new VIDataGroup(dataGroup)));
            }
            if (analytic == "Impedance")
            {
                return(controller.GetImpedanceLookup(viCycleDataGroup));
            }
            if (analytic == "Power")
            {
                return(controller.GetPowerLookup(viCycleDataGroup));
            }
            if (analytic == "RemoveCurrent")
            {
                return(controller.GetRemoveCurrentLookup(dataGroup));
            }
            if (analytic == "MissingVoltage")
            {
                return(controller.GetMissingVoltageLookup(dataGroup));
            }
            if (analytic == "LowPassFilter")
            {
                return(controller.GetLowPassFilterLookup(dataGroup, order));
            }
            if (analytic == "HighPassFilter")
            {
                return(controller.GetHighPassFilterLookup(dataGroup, order));
            }
            if (analytic == "SymmetricalComponents")
            {
                return(controller.GetSymmetricalComponentsLookup(viCycleDataGroup));
            }
            if (analytic == "Unbalance")
            {
                return(controller.GetUnbalanceLookup(viCycleDataGroup));
            }
            if (analytic == "Rectifier")
            {
                return(controller.GetRectifierLookup(new VIDataGroup(dataGroup), Trc));
            }
            if (analytic == "RapidVoltageChange")
            {
                return(controller.GetRapidVoltageChangeLookup(viCycleDataGroup));
            }
            if (analytic == "THD")
            {
                return(controller.GetTHDLookup(dataGroup, true));
            }
            if (analytic == "SpecifiedHarmonic")
            {
                return(controller.GetSpecifiedHarmonicLookup(dataGroup, harmonic, true));
            }
            if (analytic == "OverlappingWaveform")
            {
                return(controller.GetOverlappingWaveformLookup(dataGroup));
            }



            return(new List <D3Series>());
        }
 void Awake()
 {
     s = this;
 }