static public SpectrCondition GetCond(Form master, SpectrCondition src, bool just_setup) { SpectrCondEditor ed = new SpectrCondEditor(); ed.JustSetup = just_setup; string src_code; if (src == null || src.SourceCode == null || src.SourceCode.Trim().Length == 0) { src_code = SpectrCondition.GetDefaultCondition(); } else { src_code = src.SourceCode; } if (ed.chbShowSourceCode.Checked) { ed.tbSourceCode.Text = src_code; } else { ed.scSimpleEditor.Setup(src_code, ed); } DialogResult dr = ed.ShowDialog(master); if (dr == DialogResult.OK) { return(ed.Cond); } return(null); }
Spectr Measuring(int sp_num, float common) { Common.Dev.CheckConnection(); SpectrCondition cond = new SpectrCondition(Common.Dev.Tick, SpectrCondition.GetDefaultCondition(false, false, (float)nmExpFrom.Value, (float)nmExpTo.Value, (float)(nmExpFrom.Value + nmExpTo.Value) * 9, 10)); Common.Dev.Measuring(cond, null); Dispers disp = new Dispers(); OpticFk fk = new OpticFk(); Spectr sp = new Spectr(cond, disp, fk, "SensTest"); for (int i = 0; i < Common.Dev.LetestResult.Count; i++) { sp.Add(Common.Dev.LetestResult[i]); } Sp[sp_num] = sp; string file_name = GetSpectrName(sp_num); Sp[sp_num].SaveAs(file_name); Common.Log(Common.MLS.Get(MLSConst, "Done...")); return(sp); }
public bool Run() { Report = ""; DateTime from = new DateTime(DateTime.Now.Ticks); SpectrCondition cond = new SpectrCondition(Common.Dev.Tick, SpectrCondition.GetDefaultCondition(false, false, 0.1F, 0.1F, 20)); int[] ss = Common.Dev.Reg.GetSensorSizes(); do { Common.Dev.Measuring(cond, null); for (int s = 0; s < ss.Length; s++) { for (int sh = 0; sh < Common.Dev.LetestResult.Count; sh++) { float[] dt = Common.Dev.LetestResult[sh].GetFullData()[s]; Complex[] cdt = new Complex[dt.Length]; for (int i = 0; i < dt.Length; i++) { cdt[i] = new Complex(dt[i]); } FourierTransform.DFT(cdt, FourierTransform.Direction.Forward); double max = cdt[0].Length; int max_ind = 0; for (int i = 1; i < dt.Length / 2 - 1; i++) { if (max < cdt[i].Length) { max = cdt[i].Length; max_ind = i; } } if (max_ind > 0) { Report = "Found garmonic with period " + cdt.Length / max_ind + " pixels on sensor " + s + " and exposition " + sh + serv.Endl; } } for (int p = 0; p < ss[s]; p++) { double[] data = new double[Common.Dev.LetestResult.Count]; for (int sh = 0; sh < Common.Dev.LetestResult.Count; sh++) { data[sh] = Common.Dev.LetestResult[sh].GetFullDataNoClone()[s][p]; } double ever = 0; for (int i = 0; i < data.Length; i++) { ever += data[i]; } ever /= data.Length; double dlt = 0; for (int i = 0; i < data.Length; i++) { dlt += Math.Sqrt(Math.Abs(data[i] - ever)); } dlt *= dlt; dlt /= data.Length; dlt *= (int)nmStep.Value; for (int i = 0; i < data.Length && Report.Length < 4000; i++) { if (Math.Abs(ever - data[i]) > dlt) { Report += "Splash found at " + (i) + " on data ["; for (int j = 0; j < data.Length; j++) { if (i != j) { Report += " " + data[j] + " "; } else { Report += "!" + data[j] + "!"; } } Report += "]" + serv.Endl; } } } } } while ((DateTime.Now.Ticks - from.Ticks) / 10000000 < nmTimeOut.Value && Report.Length == 0); Spectr sp = new Spectr(cond, Common.Env.DefaultDisp, Common.Env.DefaultOpticFk, "RundomSplashTest"); for (int i = 0; i < Common.Dev.LetestResult.Count; i++) { sp.Add(Common.Dev.LetestResult[i]); } sp.SaveAs(Common.DbNameSienceSensFolder + "\\null_noise_test"); spView.ClearSpectrList(); spView.AddSpectr(sp, ""); if (Report.Length == 0) { return(true); } else { return(false); } }//*/