/// <summary> /// Find again absorbtion edge wavelength around clicked point. /// Rewrite corresponding temperature and time. /// </summary> /// <param name="clickedWavelength"></param> public double AnalyzeMeasurement(double clickedWavelength) { // clickedWavelength => clickedIndex. // Apply any defensive coding here as necessary. var wavelengths = MSpectraProcessor.Wavelengths; var minDifference = double.MaxValue; int clickedIndex = 0; for (int i = 0; i < wavelengths.Length; i++) { double difference = Math.Abs(wavelengths[i] - clickedWavelength); if (difference < minDifference) { minDifference = difference; clickedIndex = i; } } MTemperatureHistory.RemoveLast(); MSpectraProcessor.MaxDerivativeIndex = clickedIndex; MSpectraProcessor.OnDataReady(reanalyze: true); // RETRIGGER ANALYSE MEASUREMENT return(AnalyzeMeasurement()); }
/// <summary> /// ExposureFinished event => Read and write spectrum. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Spectrometer_ExposureFinished(object sender, Spectrometer.ExposureFinishedEventArgs e) { MSpectraProcessor.AddSpectra( wavelengths: Spectrometer.Wavelengths, intensities: Array.ConvertAll(Spectrometer.Intensities, v => (double)v), ticks: Spectrometer.Time.Ticks); if (mParameters.AutoExposureTime) { Front.LabelBoldAutoExposureTime(e.Adapted); Front.ExposureTime = e.ExposureTime; } }
/// <summary> /// Return last temperature. /// </summary> /// <param name="fileNames"></param> /// <returns></returns> public double BtnLoadSpectra(string[] fileNames) { MSpectraProcessor.SpectraToLoad = 1; // No averaging. double temperature = -1; bool save = mParameters.Save; // Just load, no saving. Add 'siletn' AddSpectra(). mParameters.Save = false; foreach (string file in fileNames) { DateTime modification = File.GetLastWriteTime(file); var waveIntens = LoadData(file); MSpectraProcessor.AddSpectra( wavelengths: waveIntens.Item1, intensities: waveIntens.Item2, ticks: modification.Ticks); MSpectraProcessor.MaxDerivativeIndex = null; temperature = AnalyzeMeasurement(); } mParameters.Save = save; // Reset. return(temperature); }