示例#1
0
        private static ServiceProvider BuildDependencies()
        {
            var commandSenderHost      = new CommandSenderHostThreadSafe();
            var targetAddressHost      = new TargetAddressHostThreadSafe(1);
            var notifySendingEnabled   = new NotifySendingEnabledThreadSafe(false);
            var paramLoggerAndRegPoint = new ParamLoggerRegistrationPointThreadSafe();

            var serviceCollection = new ServiceCollection()

                                    /*.AddLogging(loggingBuilder =>
                                     * {
                                     *  loggingBuilder.SetMinimumLevel(LogLevel.Trace);
                                     *  loggingBuilder.AddNLog(new NLogProviderOptions
                                     *  {
                                     *      CaptureMessageTemplates = true,
                                     *      CaptureMessageProperties = true
                                     *  });
                                     * })*/
                                    .AddSingleton <IThreadNotifier, AvaloniaThreadNotifier>()
                                    .AddSingleton <IParamLoggerRegistrationPoint>(sp => paramLoggerAndRegPoint)
                                    .AddSingleton <IParameterLogger>(sp => paramLoggerAndRegPoint)

                                    // Adding services.
                                    .AddSingleton <IIOListener>(sp => commandSenderHost)
                                    .AddSingleton <ICommandSenderHostSettable>(sp => commandSenderHost)
                                    .AddSingleton <ICommandSenderHost>(sp => commandSenderHost)
                                    .AddSingleton <ITargetAddressHostSettable>(sp => targetAddressHost)
                                    .AddSingleton <ITargetAddressHost>(sp => targetAddressHost)
                                    .AddSingleton <INotifySendingEnabledRaisable>(sp => notifySendingEnabled)
                                    .AddSingleton <INotifySendingEnabled>(sp => notifySendingEnabled)
                                    .AddSingleton <IAinsCounterRaisable>(sp => new AinsCounterThreadSafe(3))

                                    // TODO: need to change interface and to make proper implementation.
                                    .AddSingleton <IParameterSetter, ParameterSetterNothing>()

                                    // Adding PSN parameters classes.
                                    .AddSingleton(sp =>
                                                  new PsnProtocolConfigurationLoaderFromXml("psn.Буровая.АИН1.xml").LoadConfiguration())
                                    .AddSingleton <IPsnParamsList, PsnParamsListSimple>()
                                    .AddSingleton <IParamListener, CommandPartAndParamListenerSimple>()
                                    .AddSingleton <IParametersPresenterXmlBuilder>(sp => new ParametersPresenterXmlBuilder("params.xml"))
                                    .AddSingleton <IParameterVMsHolder, ParameterVMsHolder>()

                                    // Adding models.
                                    .AddSingleton <IDeviceConnectionModel, DeviceConnectionModel>()

                                    // Adding ViewModels.
                                    .AddSingleton <IDeviceConnectionViewModel, DeviceConnectionViewModel>()
                                    .AddSingleton <IAinsCountSelectionViewModel, AinsCountSelectionViewModel>();

            //.AddSingleton<ITelemetry100ViewModel, Telemetry100ViewModel>();

            return(serviceCollection.BuildServiceProvider());
        }
示例#2
0
        public SharedAppAbilities(string psnProtocolFileName)
        {
            var isFullVersion       = File.Exists("FullVersion.txt");
            var isHalfOrFullVersion = isFullVersion;

            if (!isHalfOrFullVersion)
            {
                isHalfOrFullVersion = File.Exists("HalfVersion.txt");
            }

            Version = isFullVersion ? AppVersion.Full :
                      isHalfOrFullVersion ? AppVersion.Half : AppVersion.Base;

            IsHourCountersVisible = File.Exists("HourCounters.txt");

            PsnProtocolConfiguration = new PsnProtocolConfigurationLoaderFromXml(Path.Combine(Environment.CurrentDirectory, psnProtocolFileName)).LoadConfiguration();

            var allPsnParams = new Dictionary <string, Tuple <IPsnProtocolCommandPartConfiguration, IPsnProtocolParameterConfigurationVariable> >();

            foreach (var psnCommandPart in PsnProtocolConfiguration.CommandParts)
            {
                foreach (var param in psnCommandPart.VarParams)
                {
                    allPsnParams.Add(param.Id.IdentyString, new Tuple <IPsnProtocolCommandPartConfiguration, IPsnProtocolParameterConfigurationVariable>(psnCommandPart, param));
                }
            }

            PsnProtocolConfigurationParams = allPsnParams;
            RtuParamReceiver = new ModbusRtuParamReceiver();

            CmdNotifierStd = new StdNotifier();
            CmdNotifierStd.AddListener(RtuParamReceiver);
            _channels = new Dictionary <string, SerialChannelWithTimeoutMonitorAndSendReplyAbility>();


            var paramLoggerAndRegPoint = new ParamLoggerRegistrationPointThreadSafe();

            ParameterLogger = paramLoggerAndRegPoint;
            ParamLoggerRegistrationPoint = paramLoggerAndRegPoint;

            var paramListener = new CommandPartAndParamListenerSimple(CmdNotifierStd);

            foreach (var cmdPart in PsnProtocolConfiguration.CommandParts)
            {
                paramListener.AddPsnCommandPartConfigurationToListen(cmdPart);
            }

            ParamListener       = paramListener;
            CommandPartListener = paramListener;
        }
示例#3
0
        private void App_OnStartup(object sender, StartupEventArgs e)
        {
            var colorsForGraphics = new List <Color>
            {
                Colors.LawnGreen,
                Colors.Red,
                Colors.Cyan,
                Colors.Yellow,
                Colors.Coral,
                Colors.LightGreen,
                Colors.HotPink,
                Colors.DeepSkyBlue,
                Colors.Gold,
                Colors.Orange,
                Colors.Violet,
                Colors.White,
                Colors.Fuchsia,
                Colors.LightSkyBlue,
                Colors.LightGray,
                Colors.Khaki,
                Colors.SpringGreen,
                Colors.Tomato,
                Colors.LightCyan,
                Colors.Goldenrod,
                Colors.SlateBlue,
                Colors.Cornsilk,
                Colors.MediumPurple,
                Colors.RoyalBlue,
                Colors.MediumVioletRed,
                Colors.MediumTurquoise
            };

            _debugLogger = new RelayMultiLoggerWithStackTraceSimple(
                new RelayLoggerWithStackTrace(
                    new RelayActionLogger(s => { }),
                    new StackTraceFormatterWithNullSuport(" > ", "[NO STACK INFO]")),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.Red, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false),
                new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterWithNullSuport(" > ", "[NO STACK INFO]")),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.Yellow, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false),
                new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterWithNullSuport(" > ", "[NO STACK INFO]")),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.DarkCyan, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false),
                new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterNothing()),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.Cyan, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false),
                new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterNothing()),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.Green, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", false, true, false), new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterWithNullSuport(" > ", string.Empty)),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.White, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false), new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterNothing()));

            var loggerAndRegPoint = new LoggerRegistrationPointThreadSafe();

            _commonLogger   = loggerAndRegPoint;
            _loggerRegPoint = loggerAndRegPoint;

            var paramLoggerAndRegPoint = new ParamLoggerRegistrationPointThreadSafe();

            _commonParamLogger   = paramLoggerAndRegPoint;
            _paramLoggerRegPoint = paramLoggerAndRegPoint;


            var cmdSenderHost = new CommandSenderHostThreadSafe();

            _cmdSenderHostSettable = cmdSenderHost;
            _cmdSenderHost         = cmdSenderHost;

            var targetAddressHost = new TargetAddressHostThreadSafe(1);

            _targetAddressHostSettable = targetAddressHost;
            _targetAddressHost         = targetAddressHost;

            var notifySendingEnabled = new NotifySendingEnabledThreadSafe(false);

            _notifySendingEnabledRaisable = notifySendingEnabled;
            _notifySendingEnabled         = notifySendingEnabled;

            var ainsCounter = new AinsCounterThreadSafe(1);

            _ainsCounterRaisable = ainsCounter;
            _ainsCounter         = ainsCounter;

            _cycleThreadHolder = new CycleThreadHolderThreadSafe();

            var ainSettingsStorage = new AinSettingsStorageThreadSafe(_ainsCounter, _notifySendingEnabled);

            _ainSettingsStorage              = ainSettingsStorage;
            _ainSettingsStorageSettable      = ainSettingsStorage;
            _ainSettingsStorageUpdatedNotify = ainSettingsStorage;

            var ainSettingsReader = new AinSettingsReader(_cmdSenderHost, _targetAddressHost, _commonLogger,
                                                          _ainSettingsStorageSettable, _debugLogger);

            _ainSettingsReader             = ainSettingsReader;
            _ainSettingsReadNotify         = ainSettingsReader;
            _ainSettingsReadNotifyRaisable = ainSettingsReader;

            _ainSettingsWriter = new AinSettingsWriter(_cmdSenderHost, _targetAddressHost, _ainsCounterRaisable,
                                                       _ainSettingsReader);
            _autoTimeSetter =
                new AutoTimeSetter(_cmdSenderHost, _notifySendingEnabled, _targetAddressHost, _commonLogger);


            var engineSettingsStorage = new EngineSettingsStorageThreadSafe();

            _engineSettingsStorage              = engineSettingsStorage;
            _engineSettingsStorageSettable      = engineSettingsStorage;
            _engineSettingsStorageUpdatedNotify = engineSettingsStorage;

            var engineSettingsReader = new EngineSettingsReader(_cmdSenderHost, _targetAddressHost, _commonLogger,
                                                                _engineSettingsStorageSettable, _debugLogger);

            _engineSettingsReader             = engineSettingsReader;
            _engineSettingsReadNotify         = engineSettingsReader;
            _engineSettingsReadNotifyRaisable = engineSettingsReader;

            _engineSettingsWriter = new EngineSettingsWriter(_cmdSenderHost, _targetAddressHost, _engineSettingsReader);


            _autoSettingsReader = new AutoSettingsReader(
                _notifySendingEnabled,
                _ainsCounterRaisable,
                _ainSettingsReader,
                _ainSettingsStorageSettable,
                _commonLogger,
                _engineSettingsReader,
                _engineSettingsStorageSettable);



            _bsEthernetLogsReadCycleModel = new ReadCycleModel(_cmdSenderHost, targetAddressHost, notifySendingEnabled);

            var uiRoot = new SimpleUiRoot(new WpfUiNotifierAsync(Dispatcher.CurrentDispatcher));

            var ainCommandAndCommonTelemetryVm = new AinCommandAndCommonTelemetryViewModel(
                new AinCommandAndMinimalCommonTelemetryViewModel(
                    _cmdSenderHost,
                    _targetAddressHost,
                    uiRoot,
                    _commonLogger,
                    _notifySendingEnabled,
                    0,
                    _ainSettingsStorage,
                    _ainSettingsStorageUpdatedNotify),
                new TelemetryCommonViewModel(),
                _cmdSenderHost,
                _targetAddressHost,
                uiRoot,
                _notifySendingEnabled);


            // TODO: Register something but not VM?
            _cycleThreadHolder.RegisterAsCyclePart(ainCommandAndCommonTelemetryVm);


            new CommandWindow {
                DataContext = new CommandWindowViewModel(ainCommandAndCommonTelemetryVm)
            }.Show();

            new BsEthernetLogsWindow {
                DataContext = new WindowViewModel(uiRoot, _bsEthernetLogsReadCycleModel)
            }.Show();



            var mainViewModel = new MainViewModel(
                new SimpleUiRoot(new WpfUiNotifierAsync(Dispatcher.CurrentDispatcher)),
                new WpfWindowSystem(),
                colorsForGraphics,
                _cmdSenderHostSettable,
                _targetAddressHost,
                _debugLogger,
                _loggerRegPoint,
                _notifySendingEnabledRaisable,
                _commonParamLogger,
                _ainsCounterRaisable,
                _cycleThreadHolder,
                _ainSettingsReader,
                _ainSettingsReadNotify,
                _ainSettingsReadNotifyRaisable,
                _ainSettingsWriter, _ainSettingsStorage, _ainSettingsStorageSettable,
                _ainSettingsStorageUpdatedNotify, _bsEthernetLogsReadCycleModel,
                _engineSettingsReader,
                _engineSettingsWriter,
                _engineSettingsReadNotify,
                _engineSettingsReadNotifyRaisable,
                _engineSettingsStorage,
                _engineSettingsStorageSettable,
                _engineSettingsStorageUpdatedNotify);

            new MainWindow {
                DataContext = mainViewModel
            }.Show();
        }