public ERROR_CODES GetPolledData(bool[] demodDataToFetch, int dataPointsToRead, out IDemodulatorDataPacket[] data) { lock (this) { data = new IDemodulatorDataPacket[zilockAmp.DEMODE_COUNT]; for (int i = 0; i < zilockAmp.DEMODE_COUNT; i++) { if (demodDataToFetch[i] == true) { data[i] = new DemodulatorDataPacket(i, demodulatorData[i], dataPointsToRead); } demodulatorData[i].Clear(); } } return ERROR_CODES.AA_OK; }
public void AddNewvRMSIterationData(double[] inputSignal, IDemodulatorDataPacket[] demodulaorData, IHarmonicData maxHarmonic, double currentScale) { FrequencyDomainAlgorithmIterationData newData = new FrequencyDomainAlgorithmIterationData(); newData.InputSingal = inputSignal; for (int i = 0; i < 8; i++) { newData.vRMSData[i] = demodulaorData[i].R.Mean; } newData.MaxHarmonic = maxHarmonic; newData.ScaleFactor = currentScale; newData.CurrentHarmonicValue = demodulaorData[CurrentHarmonic - 1].R.Mean; scaleValue.Add(currentScale); currentHarmonicValue.Add(newData.CurrentHarmonicValue); IterationData.Add(newData); if (BestIterationSoFar == null) { BestIterationSoFar = newData; } else { double currentR, bestR; currentR = newData.vRMSData[CurrentHarmonic - 1]; bestR = BestIterationSoFar.vRMSData[CurrentHarmonic - 1]; if (currentR < bestR ) { if (newData.MaxHarmonic.vRMS < BestIterationSoFar.MaxHarmonic.vRMS* 1.2) { BestIterationSoFar = newData; bestScale = currentScale; } } } }