public void Start()
        {
            this.SerialDevices.Clear();

            Task t = new Task(() =>
            {
                int n = 0;
                while (!this.Stopped)
                {
                    bool res = true;
                    for (int i = 0; i < this.SerialDevices.Count; i++)
                    {
                        ExSerialDevice device = this.SerialDevices[i];
                        if (device.IsOpen == false)
                        {
                            try
                            {
                                device.Open();
                                res &= true;
                            }
                            catch (Exception ex)
                            {
                                res &= false;
                                Console.WriteLine(ex.Message);
                                this.SerialDevices.Remove(device);
                                continue;
                            }
                        }
                    }

                    if (MainWindow.App.MainWindowViewModel != null)
                    {
                        //MainWindow.App.MainWindowViewModel.SimConnectViewModel.SerialPortConnected = res;
                        this.Connected = res && this.SerialDevices.Count > 0;
                    }
                    if (n++ % 10 == 0)
                    {
                        this.InitPorts();
                    }

                    Thread.Sleep(1000);
                }
            });

            t.Start();
        }
        public void InitPorts()
        {
            foreach (string pname in System.IO.Ports.SerialPort.GetPortNames())
            {
                if (Settings.Default.DisabledComports.Contains(pname) == false)
                {
                    ExSerialDevice sd = this.SerialDevices.Where(k => k.PortName == pname).FirstOrDefault();
                    if (sd == null)
                    {
                        ExSerialDevice sp = new ExSerialDevice(pname, 9600);

                        sp.CallbackProcessHandle += new ExSerialDevice.CallbackProcess(Process);
                        //this.SerialDevices.Add(sp);
                        System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(() =>
                        {
                            this.SerialDevices.Add(sp);
                        });
                    }
                }
            }
        }