public DataSet GenerateOutputFileTables(DataSet set, ParserGlobalVariables vars) { var periodizedSet = PeriodizeTimestep(set, vars); var result = new DataSet(); foreach (var opf in vars.OutputFileConfigs) { result.Tables.Add(opf.Name); var t = result.Tables[opf.Name]; foreach (var c in opf.Columns) { t.Columns.Add(c.MessageName + c.MessageColumn); } for (int i = 0; i < ((vars.EndTime - vars.StartTime) / vars.SampleTime); i++) { var r = t.NewRow(); for (int c = 0; c < t.Columns.Count; c++) { try { r[c] = periodizedSet.Tables[opf.Columns[c].MessageName].Rows[i][opf.Columns[c].MessageColumn+1]; } catch (Exception e) { r[c] = 0; } } t.Rows.Add(r); } } return result; }
public DataSet PeriodizeTimestep(DataSet set, ParserGlobalVariables vars) { var result = new DataSet(); var periodizeTheseTables = new List<string>(); foreach (var o in vars.OutputFileConfigs) { foreach (var c in o.Columns) { if (periodizeTheseTables.Contains(c.MessageName)) { continue; } periodizeTheseTables.Add(c.MessageName); } } foreach (DataTable t in set.Tables) { if(periodizeTheseTables.Contains(t.TableName)) result.Tables.Add(PeriodizeTimestep(t, vars.StartTime, vars.EndTime, t.TableName)); } return result; }
public static ParserGlobalVariables ReadXMLToGlobalVars(string XMLPath) { var flightVars = new ParserGlobalVariables(); flightVars.FlightName = XMLPath.Remove(XMLPath.IndexOf(".xml")); var outputFiles = new List<OutputFileConfig>(); OutputFileConfig outputFile = new OutputFileConfig(); OutputColumn outputColumn = new OutputColumn(); using (XmlReader xml = XmlReader.Create(XMLPath, new XmlReaderSettings() { })) { while (xml.Read()) { if (xml.IsStartElement()) { switch (xml.Name) { case "OutputFiles": flightVars.OutputFileConfigs = new List<OutputFileConfig>(); break; case "OutputFile": outputFile = new OutputFileConfig(); flightVars.OutputFileConfigs.Add(outputFile); break; case "Columns": outputFile.Columns = new List<OutputColumn>(); break; case "Column": outputColumn = new OutputColumn(); outputFile.Columns.Add(outputColumn); break; case "Name": if (xml.Read()) outputFile.Name = xml.Value.Trim(); break; case "AircraftNumber": if (xml.Read()) flightVars.AircraftNumber = Convert.ToInt16(xml.Value.Trim()); break; case "StartTime": if (xml.Read()) flightVars.StartTime = Convert.ToDouble(xml.Value.Trim()); break; case "EndTime": if (xml.Read()) flightVars.EndTime = Convert.ToDouble(xml.Value.Trim()); break; case "SampleTime": if (xml.Read()) flightVars.SampleTime = Convert.ToDouble(xml.Value.Trim()); break; case "MessageName": if (xml.Read()) outputColumn.MessageName = xml.Value.TrimEnd(); break; case "MessageColumn": if (xml.Read()) outputColumn.MessageColumn = Convert.ToInt16(xml.Value.Trim()); break; case "LogSourcePath": if (xml.Read()) flightVars.LogSourcePath = xml.Value.Trim(); break; case "Folder": if (xml.Read()) flightVars.Folder = xml.Value.Trim(); break; } } } } return flightVars; }
public static void PrintMatlabMetadata(ParserGlobalVariables vars) { var mFilePath = vars.Folder + '/' + vars.FlightName + ".m"; using (System.IO.StreamWriter file = new System.IO.StreamWriter(mFilePath)) { foreach (var opf in vars.OutputFileConfigs) { file.WriteLine(opf.Name.Remove(opf.Name.IndexOf('.')) + "= dlmread('/" + vars.Folder + '/' + opf.Name+"');"); } file.WriteLine("sampleRate = " + vars.SampleTime + ';'); } }