using System; using System.Collections.Generic; using System.IO; using log4net; using TBF.BenchControl; namespace TBF.BenchControl.ResultsWriters.Basic { public class Writer : ComponentBase, IOperation, GenericDevices.IResultsWriter { private static readonly ILog log = LogManager.GetLogger(typeof(Writer)); public override string ToString() { return string.Format("ResultsWriters.Basic({0})", Cfg.ToString(1)); } readonly WriterCfg writerCfg; /// /// Results to print /// IList results; DateTime now; StreamWriter writer; public Writer(WriterCfg cfg) : base(cfg) { writerCfg = cfg; log.Debug(this.ToString()); } /// /// Writes the test cycle results into a file, Events: Event.ResultsWritten /// /// Results to write into the file /// Reference to the operation public IOperation WriteResultsOp(IList results) { if ((results == null) || (results.Count == 0)) { writer = null; return this; } this.results = results; now = DateTime.Now; try { string dayDirectory = string.Format("{0}Results\\{1}-{2}-{3}", Program.HomeDir, now.Year, now.Month.ToString("D2"), now.Day.ToString("D2")); string fileName = string.Format("{0}\\{1}-{2}.txt", dayDirectory, now.Hour.ToString("D2"), now.Minute.ToString("D2")); Directory.CreateDirectory(dayDirectory); writer = new StreamWriter(System.IO.File.Create(fileName)); } catch { writer = null; } return this; } /// Start this operation public void Start() { if (writer == null) return; writer.WriteLine("Staatlich anerkante Prüfstelle für Meßgeräte für Wasser WB2"); writer.WriteLine(""); writer.WriteLine(string.Format(" PROTOKOLL Nummer {0}", 0)); writer.WriteLine(""); writer.WriteLine("Ver. 3/13"); writer.WriteLine(string.Format("Datum / Zeit : {0}.{1}.{2} {3}:{4} Seite : 1/1", now.Day.ToString("D2"), now.Month.ToString("D2"), now.Year.ToString("D4"), now.Hour.ToString("D2"), now.Minute.ToString("D2"))); writer.WriteLine(string.Format("Wasserzähler Type : {0}", results[0].ProcedureName)); writer.WriteLine("Gerät Nr. : 1"); writer.WriteLine(string.Format("Benutzer : {0}", Entities.User.CurrentUser.Name)); writer.Write("Impulsrate : "); for (int i = 0; i < Program.WMsCount; i++) { //writer.Write(results[0]. } writer.WriteLine("Bereich : 22,9 °C 947 mbar 43 %"); writer.WriteLine(""); writer.WriteLine("Test Metode MIDFehler Durchfluss Test Zeit T1 T2 Dichte Masse Druck Volume Bor"); writer.WriteLine(" [%] [m3/h] [s] [°C] [°C] [kg/m3] [kg] [MPa] [L] [m3/h]"); writer.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------"); foreach (var tr in results) { if (tr.MetersKind == Entities.MetersKind.Single) { writer.WriteLine(string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11}", tr.Name, tr.Method, tr.Meters[0].VolumeErrorPct, tr.FlowMass, tr.Time, tr.TempInAvrg, tr.TempDivAvrg, tr.DensityOut, tr.MassDiff, tr.PressInAvrg, tr.PressOutAvrg, tr.VolumeCTV)); } else if (tr.MetersKind == Entities.MetersKind.Combined) { writer.WriteLine(string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11}", tr.Name, tr.Method, tr.CombinedMeters[0].VolumeErrorPct, tr.FlowMass, tr.Time, tr.TempInAvrg, tr.TempDivAvrg, tr.DensityOut, tr.MassDiff, tr.PressInAvrg, tr.PressOutAvrg, tr.VolumeCTV)); } } writer.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------"); writer.WriteLine("No| Zähler Nr| Test. Volume [L] | Zählerabweichung [%] | Messunsicherheit k=2 |Prüfergebnis"); writer.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------"); writer.WriteLine(" Qmin Qt Qmax Qmin Qt Qmax Qmin Qt Qmax"); writer.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------"); } /// Run this operation /// Event.ResultsWritten public Event Run() { return Event.ResultsWritten; } /// Stop this operation public void Stop() { if (writer == null) return; writer.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------"); writer.WriteLine(""); writer.WriteLine("Hersteller : Bemerkung : M - Prüfung gegen Waage"); writer.WriteLine(" V - Prüfung gegen MID"); writer.WriteLine(" P - Start / Stopp"); writer.WriteLine(" F - Fliegender Start"); writer.WriteLine(" S - Impulskompensation"); writer.WriteLine(" C - Impulszählung"); writer.WriteLine(""); writer.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------"); if (writer != null) writer.Close(); writer = null; } } }