//******************************************************************************************************************** // Save //******************************************************************************************************************** #region Save //1. Main-Funktion zu speichern*********************************************** public void Save_AllFiles() { //1. Average files if (GUI.mySettings.Save_Aver_Heat) { Save_SingleFile(Average_Heat_Compressed, "Average of " + GUI.rthTEC_Rack1.Cycles.ToString(), ".aver.TTAheat"); } if (GUI.mySettings.Save_Aver_Cool) { Save_SingleFile(Average_Meas_Compressed, "Average of " + GUI.rthTEC_Rack1.Cycles.ToString(), ".aver.TTAcool"); } //2. Single files if (GUI.mySettings.Save_Signle_Cool | GUI.mySettings.Save_Single_Heat) { //Felder für einzelne Listen definieren List <TTA_DataPoint>[] all_single_heating_compressed = new List <TTA_DataPoint> [GUI.rthTEC_Rack1.Cycles]; List <TTA_DataPoint>[] all_single_cooling_compressed = new List <TTA_DataPoint> [GUI.rthTEC_Rack1.Cycles]; //Daten aus Binary_Raw_Files herauslösen und komprimieren for (int i = 1; i <= GUI.rthTEC_Rack1.Cycles; i++) { //Raw Daten aus gesamten Feld herauslösen long[] help_heat = new long[Heat_to_Meas[i - 1] - Start_to_Heat[i - 1] + Puffer_Messpunkte]; long[] help_meas = new long[Meas_to_End[i - 1] - Heat_to_Meas[i - 1] + Puffer_Messpunkte]; //Mit daten befüllen for (long akt_Messpunkt = -Puffer_Messpunkte; akt_Messpunkt < help_heat.Length - Puffer_Messpunkte; akt_Messpunkt++) { help_heat[akt_Messpunkt + Puffer_Messpunkte] = Binary_Raw_Files[i - 1, akt_Messpunkt + Start_to_Heat[i - 1]]; } for (long akt_Messpunkt = -Puffer_Messpunkte; akt_Messpunkt < help_meas.Length - Puffer_Messpunkte; akt_Messpunkt++) { help_meas[akt_Messpunkt + Puffer_Messpunkte] += Binary_Raw_Files[i - 1, akt_Messpunkt + Heat_to_Meas[i - 1]]; } //Komprimieren all_single_heating_compressed[i - 1] = Compress_Data(help_heat, 1); all_single_cooling_compressed[i - 1] = Compress_Data(help_meas, 1); } if (GUI.mySettings.Save_Single_Heat) { for (int i = 1; i <= GUI.rthTEC_Rack1.Cycles; i++) { Save_SingleFile(all_single_heating_compressed[i - 1], "Cycle " + i.ToString() + "/" + GUI.rthTEC_Rack1.Cycles.ToString(), "." + i.ToString("0000") + ".TTAheat"); } } if (GUI.mySettings.Save_Signle_Cool) { for (int i = 1; i <= GUI.rthTEC_Rack1.Cycles; i++) { Save_SingleFile(all_single_cooling_compressed[i - 1], "Cycle " + i.ToString() + "/" + GUI.rthTEC_Rack1.Cycles.ToString(), "." + i.ToString("0000") + ".TTAcool"); } } } //3. Raw files if (GUI.mySettings.Save_Raw) { for (int i = 1; i <= GUI.rthTEC_Rack1.Cycles; i++) { //Daten einer Messung herauslösen short[] help_raw = new short[Binary_Raw_Files.GetLength(1)]; for (int j = 0; j < help_raw.Length; j++) { help_raw[j] = Binary_Raw_Files[i - 1, j]; } //Speichern Save_SingleFile(help_raw, "Raw_Data of cycle" + i.ToString() + "/" + GUI.rthTEC_Rack1.Cycles.ToString() + GUI.rthTEC_Rack1.Cycles.ToString(), "." + i.ToString("0000") + ".TTAraw"); } } }
/// <summary> /// Sucht die Umschaltpunkte in den Raw-Files in binärer Form /// </summary> /// <param name="return">true if no error occured; otherwise, false.</param> private Boolean Search_for_switching_points() { //Felder definiern Start_to_Heat = new long[MyRack.Cycles]; Heat_to_Meas = new long[MyRack.Cycles]; Meas_to_End = new long[MyRack.Cycles]; //Suchkriterien definiern decimal schwelle_in_mV = MyDAQ.Trigger_Level_UI * 1000; short schwelle_in_Bit = (short)((schwelle_in_mV - MyRack.U_offset) / MyDAQ.Range * (decimal)Math.Pow(2, 15)); short hysterese = 3000; //Umschaltpunkte finden //Jede Messreihe (jeder Zyklus) wird nacheinander durchlaufen, um alle drei Umschaltpunkte zu finden for (int akt_Zyklus_Nr = 0; akt_Zyklus_Nr < this.MyRack.Cycles; akt_Zyklus_Nr++) { //Alle Messpunkte durchlaufen um die Umschaltpunkte zu finden long akt_Messpunkt = Puffer_Messpunkte + 1; //Laufvariable //Umschaltpung: OFF --> Heat [Überspringen der Schwellspannung] //******************************************************************************************* //Try funktion um ein herrauslaufen des Indexes aus dem Feld zu vermeiden try { while ((long)Binary_Raw_Files[akt_Zyklus_Nr, akt_Messpunkt] - (long)Binary_Raw_Files[akt_Zyklus_Nr, akt_Messpunkt - 1] < hysterese) { akt_Messpunkt++; } //Punkt Übernehmen Start_to_Heat[akt_Zyklus_Nr] = akt_Messpunkt; //long test = (long)Spectrum_raw_files[akt_Zyklus_Nr, akt_Messpunkt] - (long)Spectrum_raw_files[akt_Zyklus_Nr, akt_Messpunkt - 1]; //akt_Messpunkt weiterschieben um Einschwingen nicht zu untersuchen (1ms) [N = f * t] akt_Messpunkt += ((long)MyDAQ.Frequency * 1 / 1000); } catch (IndexOutOfRangeException) { MessageBox.Show("Off to Heat not found", "Error"); return(false); } //Umschaltpung: Heat --> Meas [Um Hysterese nach unten] //******************************************************************************************* try { while ((long)Binary_Raw_Files[akt_Zyklus_Nr, akt_Messpunkt] - (long)Binary_Raw_Files[akt_Zyklus_Nr, akt_Messpunkt - 1] > -hysterese) { akt_Messpunkt++; } //Punkt Übernehmen Heat_to_Meas[akt_Zyklus_Nr] = akt_Messpunkt; //akt_Messpunkt weiterschieben um Einschwingen nicht zu untersuchen (1ms) [N = f * t] akt_Messpunkt += ((long)MyDAQ.Frequency * 1 / 1000); } catch (IndexOutOfRangeException) { MessageBox.Show("Heat to Meas not Found", "Error"); return(false); } //Umschaltpung: Meas --> Off [Überspringen der Schwellspannung] //******************************************************************************************* try { while (akt_Messpunkt <Binary_Raw_Files.GetLength(1) - 1 & (long)Binary_Raw_Files[akt_Zyklus_Nr, akt_Messpunkt] - (long)Binary_Raw_Files[akt_Zyklus_Nr, akt_Messpunkt - 1]> -hysterese) { akt_Messpunkt++; } //Punkt Übernehmen Meas_to_End[akt_Zyklus_Nr] = akt_Messpunkt; var test = (long)Binary_Raw_Files[akt_Zyklus_Nr, akt_Messpunkt]; } catch (IndexOutOfRangeException) { Meas_to_End[akt_Zyklus_Nr] = Binary_Raw_Files.GetLength(1) - 1; MessageBox.Show("Meas to Off not Found", "Error"); return(false); } } return(true); }