private void OpenPort()
        {
            Progress = 0.0;
            ISerialPortContainer portContainer;

            if (_selectedComName == _appAbilities.TestPortName)
            {
                var filename = _windowSystem.ShowOpenFileDialog("Текстовый файл с данными", "Текстовые файлы|*.txt|Все файлы|*.*");
                portContainer = !string.IsNullOrEmpty(filename)
                    ? new SerialPortContainerTest(File.ReadAllText(filename)
                                                  .Split(new[] { " ", Environment.NewLine, "\t", "\n", "\r" },
                                                         StringSplitOptions.RemoveEmptyEntries).Select(t => byte.Parse(t, NumberStyles.HexNumber))
                                                  .ToArray())
                    : new SerialPortContainerTest();
            }
            else
            {
                portContainer = new SerialPortContainerReal(_selectedComName, 57600);
            }

            _channel.Channel.SelectPortAsync(portContainer, ex => _notifier.Notify(() =>
            {
                if (ex == null)
                {
                    IsPortOpened = true;
                    _logger.Log("Порт " + _selectedComName + " открыт");
                    _closePortCommand.RaiseCanExecuteChanged();
                    _openPortCommand.RaiseCanExecuteChanged();
                }
                else
                {
                    _logger.Log("Ошибка во время открытия порта: " + ex);
                }
            }));
        }
Пример #2
0
        static void Main(string[] args)
        {
            /*
             * _logConsoleYellow = new RelayLoggerWithStackTrace(
             *  new RelayLogger(new ColoredConsoleLogger(ConsoleColor.Yellow, ConsoleColor.Black),
             *      new ChainedFormatter(new List<ITextFormatter>
             *      {
             *          new ThreadFormatter(LogSeporator, true, false, false), new DateTimeFormatter(LogSeporator)
             *      })),
             *  new StackTraceFormatterWithNullSuport(LogSeporator, NoStackInfoText));
             */

            var argPortName = args.First(a => a.StartsWith(ArgStartPortName)).Split(':')[1];
            var argBaudRate = int.Parse(args.First(a => a.StartsWith(ArgStartBaudRate)).Split(':')[1]);

            var psnConfig = new PsnProtocolConfigurationLoaderFromXml(Path.Combine(Environment.CurrentDirectory, "psn.S2G-climatic-interior.xml")).LoadConfiguration();

            var serialPortContainer = new SerialPortContainerReal(argPortName, argBaudRate);
            var sch = new SerialChannel(
                new CommandPartSearcherPsnConfigBasedFast(psnConfig) /*, _logConsoleYellow*/);

            sch.CommandHeared += SchOnCommandHeared;
            sch.SelectPortAsync(serialPortContainer, null);
            //Thread.Sleep(5000);
            //sch.SelectPortAsync("COM2");
            //Thread.Sleep(5000);

            Console.ReadKey();
            sch.CloseCurrentPortAsync(null);
            sch.StopWork();
            Console.ReadKey();
        }