void ScriptMain() { // DAQ const int _DAQ_TIME = 8; // in s const int _FILE_LIMIT = 10000; //in Ko const int _LOOP_NB = 400; string l_base = "D:\\Data\\POLAR2\\"; Sync.LogFileName = l_base + "\\DAQ\\Log-"; // Open a config file (path is relative to this file) BoardLib.OpenConfigFile(l_base + "Config\\polar2_CTest.xml"); Console.WriteLine("Start DAQ with Data Break"); string daqFilename = l_base + "DAQ\\DataBreak"; BoardLib.SetVariable("Board.UsbEthParam.FileLimit", _FILE_LIMIT); int l_error = 0; for (int l_i=0; l_i<_LOOP_NB; l_i++) { Console.WriteLine(); Console.WriteLine("----------------------------------"); Console.WriteLine(" LOOP :" + l_i.ToString()); Console.WriteLine("----------------------------------"); // Configure the board BoardLib.BoardConfigure(); Sync.Sleep(1); if((l_i%2) == 0) { Console.WriteLine("\n ==== Status Read ==== \n"); BoardLib.UpdateUserParameters("FEE.StatusRegister"); } Sync.Sleep(1); if((l_i%5) == 0) { Console.WriteLine("\n ==== Pedestals Read ====\n"); BoardLib.UpdateUserParameters("FEE.Pedestals"); } Sync.Sleep(1); string l_file = daqFilename + "-" + l_error.ToString(); // only files with errors are saved // start DAQ in asynchronous mode BoardLib.SetVariable("Board.DirectParam.Data_Break", false); BoardLib.StartAcquisition(l_file, true); //------------------------------------------------------------------------------ // DAQ is now started Console.WriteLine("----------------------------------"); Console.WriteLine("DAQ file = " + l_file + ".daq"); Console.WriteLine("DAQ started for " + _DAQ_TIME + "s and limited to " + _FILE_LIMIT/1000 + "Mo"); bool l_continue = true; bool l_data_break = false; while (l_continue && BoardLib.IsTransferingData) { if((l_i%5) != 0) // 1 DAQ out 5 is without data break { Sync.Sleep(100); //BoardConfigure.SetVariable("/POLAR_2_CONFIG/Board/DirectParam/Data_Break") BoardLib.SetVariable("Board.DirectParam.Data_Break", l_data_break); BoardLib.SetDirectParameters(); Sync.Sleep(1); } var l_time = BoardLib.ElapsedTime.Split(':'); int l_seconds; if(int.TryParse(l_time[2], out l_seconds)) { if ((l_seconds>=_DAQ_TIME) && (!l_data_break)) { Sync.Sleep(200); // let databreak push remaining data l_continue = false; } } else { Console.WriteLine("Parse Error on Time=" + l_time[2].ToString()); l_continue = false; } l_data_break = ! l_data_break; } //------------------------------------------------------------------------------ //----- STOP DAQ --------- Console.WriteLine("----------------------------------"); Console.WriteLine(" ==== Stop DAQ"); if(BoardLib.IsTransferingData) BoardLib.StopAcquisition(); Sync.SleepUntil(()=>!BoardLib.IsTransferingData); Console.WriteLine(""); Console.WriteLine("DAQ Total Time (hh:mm:ss): " + BoardLib.ElapsedTime); Console.WriteLine("DAQ Total KBytes: " + BoardLib.XferKBytes); Console.WriteLine("DAQ Xfer rate (KB/s): Avg=" + BoardLib.AvgXferRate + " / Max=" + BoardLib.MaxXferRate); Console.WriteLine(""); //------------------------------------------------------------------------------ //----- STOP DAQ --------- Console.WriteLine("\n ==== Convert File: " + l_file + ".daq"); Sync.Sleep(10); App.CheckAndExtractFEEData(l_file); var l_fi = new FileInfo(l_file + "_err.csv"); if(l_fi.Length > 0) { l_error ++; Console.WriteLine("\n Errors in File, Size (Bytes) = " + l_fi.Length.ToString()); Console.WriteLine("\n Total errors = " + l_error.ToString()); }else Console.WriteLine("\n No Errors (Total errors = " + l_error.ToString() + ")"); } Console.WriteLine("----------------------------------"); Console.WriteLine("END OF LOOP"); Console.WriteLine("\n Total errors = " + l_error); }