public bool GetSingleBeam(int spectrometerIndex, ref Spectrometer.SpecInfo SpInfo, bool isBKGrdFlag) { if (isBKGrdFlag) { this.SetParameters(Spectrometer.spectrometerIndex, Spectrometer.IntegrationTimeBK); } else { this.SetParameters(Spectrometer.spectrometerIndex, Spectrometer.IntegrationTime); } SpInfo.numPixls = this.wrapper.getNumberOfPixels(spectrometerIndex); try { SpInfo.WavelengthArray = this.wrapper.getWavelengths(spectrometerIndex); } catch (Exception ex) { int num = (int)MessageBox.Show(ex.ToString()); } DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss-fff"); SpInfo.DataA = this.wrapper.getSpectrum(spectrometerIndex); DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss-fff"); if (SpInfo.WavelengthArray.Length <= 10 || SpInfo.DataA.Length <= 10) { return(false); } SpInfo.DataX = SpInfo.WavelengthArray; return(true); }
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (this.timer1.Enabled) { SpInfo = (Spectrometer.SpecInfo)e.Result; this.DrawEnergyValue(); } }
public void GetSingleBeamOnly(int spectrometerIndex, ref Spectrometer.SpecInfo SpInfo) { for (int index = 0; index < SpInfo.DataA.Length; ++index) { SpInfo.DataA[index] = 0.0; } this.wrapper.setIntegrationTime(spectrometerIndex, Spectrometer.IntegrationTime); SpInfo.DataA = this.wrapper.getSpectrum(spectrometerIndex); }
public void ReadDK(ref Spectrometer.SpecInfo SpInfo) { if (File.Exists(Environment.CurrentDirectory.ToString() + "\\dark")) { int length = this.DataIOmy.TXTReadData(Environment.CurrentDirectory.ToString() + "\\dark", ref SpInfo.DataX, ref SpInfo.DataAD, true); SpInfo.DataAD = new double[length]; this.DataIOmy.TXTReadData(Environment.CurrentDirectory.ToString() + "\\dark", ref SpInfo.DataX, ref SpInfo.DataAD, false); } else { int num = (int)MessageBox.Show("背景文件不存在,请先采集背景!"); } }
public bool GetSpec(int spectrometerIndex, ref Spectrometer.SpecInfo SpInfo, int WaitTime, BackgroundWorker bk) { this.SetParameters(Spectrometer.spectrometerIndex, Spectrometer.IntegrationTime); SpInfo.numPixls = this.wrapper.getNumberOfPixels(spectrometerIndex); SpInfo.WavelengthArray = this.wrapper.getWavelengths(spectrometerIndex); this.wrapper.setScansToAverage(spectrometerIndex, Spectrometer.ScanTimes); for (int percentProgress = 0; percentProgress < 5; ++percentProgress) { Thread.Sleep(1000); bk.ReportProgress(percentProgress); } SpInfo.DataA = this.wrapper.getSpectrum(spectrometerIndex); bk.ReportProgress(5); if (SpInfo.WavelengthArray.Length <= 10 || SpInfo.DataA.Length <= 10) { return(false); } SpInfo.DataX = SpInfo.WavelengthArray; if (SpInfo.DataAB.Length != SpInfo.DataA.Length) { return(false); } SpInfo.DataY = new double[SpInfo.numPixls]; for (int index = 0; index < SpInfo.DataA.Length; ++index) { try { SpInfo.DataY[index] = !Spectrometer.isClearDarks ? Convert.ToDouble(Math.Log10(Math.Abs(SpInfo.DataAB[index] / SpInfo.DataA[index]))) : Convert.ToDouble(Math.Log10(Math.Abs((SpInfo.DataAB[index] - SpInfo.DataAD[index]) / (SpInfo.DataA[index] - SpInfo.DataAD[index])))); } catch { SpInfo.DataY[index] = index <= 0 ? 0.0 : SpInfo.DataY[index - 1]; } } return(true); }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { Spectrometer.SpecInfo argument = (Spectrometer.SpecInfo)e.Argument; this.MySpectrometer.GetSingleBeam(Spectrometer.spectrometerIndex, ref argument, false); e.Result = argument; }