private void merajEnergyScanCyklus() { cisloKroku = 0; double krok = (Parameters.EnergyScan.StartPoint); //ziskame zaciatocny krok = start point pre TEM //teplomer a tlakomery chceme citat iba kazdych n sekund; ADPrevodnik.setAnalogOutput(krok); voltmeter.read(); ampermeter.read(); Thread.Sleep(500); voltmeter.read(); ampermeter.read(); Thread.Sleep(50); tlak256.read(); tlak256.startReading(); teplomer.read(); teplomer.startReading(); while (cisloKroku <= Parameters.NumberOfSteps) { if (abortStatus) { break; } KrokMerania = new KrokMerania(); ADPrevodnik.setAnalogOutput(krok);//.setPoint(krok); //posle na TEM vypocitany bod ADThread = new Thread(ADPrevodnik.CounterStart); //novy thread ad prevodnika ADThread.IsBackground = true; ADPrevodnik.setAnalogOutput(krok); ADThread.Start(); //nastartovanie prevodnika //precitaj zatial vsetky ostatne pristroje voltmeter.read(); ampermeter.read(); ADThread.Join(); //cakas na skoncenie ADThreadu //vieme, ze AD prevodnik uz zapisal novu hodnotu intenzity KrokMerania.Intensity = ADPrevodnik.Intensity; KrokMerania.Current = ampermeter.LastValue; KrokMerania.X = voltmeter.LastValue; KrokMerania.Y = Parameters.EnergyScan.Constant; KrokMerania.Temperature = teplomer.readNext(); KrokMerania.Capillar = tlak256.readNext(); KrokMerania.Chamber = 0; KrokMerania.StepNumber = cisloKroku+1; //zaznamenat aktualnyCyklus.KrokyMerania.Add(KrokMerania); lock (Graf) { if (showCurrent) { Graf.addDataPoint(KrokMerania.X, KrokMerania.Y, KrokMerania.Intensity, currentCycleNum - 1); } } mainForm.setCurrentStep((cisloKroku+1).ToString() + "/" + (Parameters.NumberOfSteps + 1).ToString()); cisloKroku++; krok = (Parameters.EnergyScan.StartPoint)+cisloKroku*Parameters.EnergyScan.KrokNapatia; } }
public static Meranie loadMeranie(int headerId) { DbCommunication d=new DbCommunication(); DataRow header=d.header(headerId).Tables[0].Rows[0]; MeasurementParameters parametre = new MeasurementParameters( header["name"].ToString(), header["ion_type"].ToString().Equals("true"), header["note"].ToString(), (int)header["cycles"]); string x = ""; string y = ""; if (header["type_name"].Equals("Energy Scan")) { EnergyScanParameters pp=new EnergyScanParameters(); pp.StartPoint= (double)header["start_point"]; pp.EndPoint= (double)header["end_point"]; pp.Constant= Convert.ToInt32(header["constant"]); pp.StepTime= (double)header["steptime"]; pp.NumberOfSteps=(int)header["pocet_krokov"]; parametre.EnergyScan=pp; parametre.Typ = "Energy Scan"; x = "Electron energy"; y = "m/z"; } else if (header["type_name"].Equals("Mass Scan")) { MassScanParameters mp = new MassScanParameters(); mp.StartPoint = (int)header["start_point"]; mp.EndPoint = (int)header["end_point"]; mp.Constant = (double)header["constant"]; mp.TimePerAmu = (double)header["time_for_amu"]; mp.Density = (double)header["density"]; parametre.MassScan = mp; parametre.Typ = "Mass Scan"; x = "m/z"; y = "Electron energy"; } else if (header["type_name"].Equals("2D Scan")){ EnergyScanParameters ep = new EnergyScanParameters(); ep.StartPoint = (double)header["e_start_point"]; ep.EndPoint = (double)header["e_end_point"]; ep.StepTime = (double)header["e_steptime"]; ep.NumberOfSteps = (int)header["pocet_krokov"]; parametre.EnergyScan = ep; MassScanParameters mp = new MassScanParameters(); mp.StartPoint = (int)header["m_start_point"]; mp.EndPoint = (int)header["m_end_point"]; mp.TimePerAmu = (double)header["time_for_amu"]; mp.Density = (double)header["density"]; parametre.Typ = "2D Scan"; parametre.MassScan = mp; x = "m/z"; y = "Electron energy"; } Meranie m=new Meranie(parametre); m.cykly = new List<CyklusMerania>(); for (int c = 0; c < (int)header["cycles"]; c++) { CyklusMerania cyklus = new CyklusMerania(c); cyklus.KrokyMerania = new List<KrokMerania>(); DataTable data=d.meranie(headerId,c).Tables[0]; for (int i=0;i<data.Rows.Count ;i++ ) { KrokMerania krok = new KrokMerania(); krok.Intensity= (ulong)data.Rows[i]["Intensity"]; krok.Temperature = (double)data.Rows[i]["Temperature"]; krok.Chamber = (double)data.Rows[i]["Chamber pressure"]; krok.Capillar = (double)data.Rows[i]["Capillar pressure"]; krok.X = (double)data.Rows[i][x]; krok.Y = (double)data.Rows[i][y]; cyklus.KrokyMerania.Add(krok); } m.cykly.Add(cyklus); } return m; }
private void collectData() { for (int j = 0; j < Parameters.NumberOfCycles; j++) { for (int i = 0; i < Parameters.NumberOfSteps + 1; i++) { CyklusMerania c = new CyklusMerania(j+1); KrokMerania k = new KrokMerania(); k.X = Parameters.MassScan.StartPoint + i * Parameters.MassScan.Step; k.Y = Parameters.MassScan.Constant; k.Chamber = 0; k.Capillar = tlak256.readNext(); k.Temperature = teplomer.readNext(); k.Intensity = intensities[i]; c.KrokyMerania.Add(k); CurrentMeasurement.cykly.Add(c); } } db.open(); db.addMeranie(CurrentMeasurement); db.close(); }