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); } })); }
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(); }