Пример #1
0
        private static void Main(string[] args)
        {
            string inputFileName = args.Length > 0 ? args[0] : "input.txt";
            string outputFileName = Path.ChangeExtension(inputFileName, "log");

            FormatManager formatManager =
                new FormatManager()
                    .AddFormatter<SautReadyA>(f => string.Format("Переключение САУТ: {0}", f.Track))
                    .AddFormatter<InputData>(f => f.Index == 1 ? string.Format("Запрос на переключение пути: {0}", GetTrackName(f.Data)) : null)
                    .AddFormatter<SysData>(f => f.Index == 1 ? string.Format("Подтверждение переключения пути: {0}", GetTrackName(f.Data)) : null)
                    .AddFormatter<SautPtkReady2A1>(
                        f => string.Format("[Кабина 1] {0} перегон; генератор: {1} ({2}); маршрут: {3}", f.SpanNumber, f.GeneratorNumber, f.GeneratorKind, f.RouteNumber))
                    .AddFormatter<SautPtkReady2A2>(
                        f => string.Format("[Кабина 2] {0} перегон; генератор: {1} ({2}); маршрут: {3}", f.SpanNumber, f.GeneratorNumber, f.GeneratorKind, f.RouteNumber));

            DateTime date = DateTime.MinValue;
            ICanLogSource logSource = new TextCanLogSource(inputFileName);
            using (var tw = File.CreateText(outputFileName))
            {
                foreach (CanFrame frame in logSource.ReadFrames())
                {
                    try
                    {
                        BlokFrame blokFrame = BlokFrame.GetBlokFrame(frame);
                        if (blokFrame is IpdDate)
                            date = ((IpdDate)blokFrame).Time;
                        if (date != DateTime.MinValue)
                        {
                            string s = formatManager.FormatString(blokFrame);
                            if (s != null)
                            {
                                Console.WriteLine("{0:T}   {1}", date, s);
                                tw.WriteLine("{0:T}   {1}", date, s);
                            }
                        }
                    }
                    catch (ApplicationException) { }
                }
            }
            Console.ReadLine();
        }