Exemple #1
0
 internal void ConfigureSerialPortOKClicked(SerialPortConfigurations _configs)
 {
     if (OnSerialPortConfigsUpdated != null)
     {
         OnSerialPortConfigsUpdated(this, _configs);
     }
 }
        public SerialPortConfig()
        {
            InitializeComponent();
            DataContext = this;

            _configs = new SerialPortConfigurations();

            ReadConfigFile();
        }
        private void ReadConfigFile()
        {
            if (_serialPortConfigs == null)
            {
                _serialPortConfigs = new SerialPortConfigurations();
            }

            IniFileHelper ini = new IniFileHelper(AppDomain.CurrentDomain.BaseDirectory + @"\config.ini");

            try
            {
                _serialPortConfigs.PortName  = ini.Read("SerialPortConfigurations", "PortName", "COM1");
                _serialPortConfigs.BaudRate  = Convert.ToInt32(ini.Read("SerialPortConfigurations", "BaudRate", "9600"));
                _serialPortConfigs.Parity    = ParseEnum <Parity>(ini.Read("SerialPortConfigurations", "Parity", "None"));
                _serialPortConfigs.DataBits  = Convert.ToInt16(ini.Read("SerialPortConfigurations", "DataBits", "8"));
                _serialPortConfigs.StopBits  = ParseEnum <StopBits>(ini.Read("SerialPortConfigurations", "StopBits", "One"));
                _serialPortConfigs.Handshake = ParseEnum <Handshake>(ini.Read("SerialPortConfigurations", "Handshake", "None"));
            }
            finally
            {
                ini = null;
            }
        }
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;

            StopSerialPort.IsEnabled = false;

            Closing += (obj, e) =>
            {
                if (SerialPortManager.Instance.IsOpen)
                {
                    SerialPortManager.Instance.Close();
                }
            };

            // Create clock
            DispatcherTimer clock = new DispatcherTimer(DispatcherPriority.Background);

            clock.Interval  = TimeSpan.FromSeconds(1);
            clock.IsEnabled = true;
            clock.Tick     += (obj, e) =>
            {
                ClockText.Text = DateTime.Now.ToLocalTime().ToString();
            };

            // Subscribe SerialPort events
            SerialPortManager.Instance.OnDataReceived += (obj, e) =>
            {
                double temp;
                try
                {
                    temp = Convert.ToDouble(e);
                }
                catch
                {
                    temp = 0;
                }

                if (_stabilityCount < 5)
                {
                    _stabilityCount++;
                    return;
                }

                if (_stabilityCount == 5 && _secondCount == 60)
                {
                    ExportDataToCSV(DateTime.Now, temp);
                    _secondCount = 0;
                }
                else
                {
                    _secondCount++;
                }

                App.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    MainTempText.Text = string.Format("{0} °C", Math.Round(temp, 2));
                    UpdateMainTempBoxColor(temp);
                    UpdateMinMaxTemp(temp);
                    AddToDataCollection(DateTime.Now, temp);
                }));
            };
            SerialPortManager.Instance.OnSerialPortOpened += (obj, e) =>
            {
                if (e == true)
                {
                    StartSerialPort.IsEnabled = false;
                    StopSerialPort.IsEnabled  = true;
                }
                else
                {
                    StartSerialPort.IsEnabled = true;
                    StopSerialPort.IsEnabled  = false;
                }
            };

            // Subscribe events from EventPasser
            EventPasser.Instance.OnSerialPortConfigsUpdated += (obj, e) =>
            {
                _serialPortConfigs            = e;
                popupSerialPortConfig.IsOpen  = false;
                ConfigureSerialPort.IsEnabled = true;
            };
            ReadConfigFile();

            // OxyPlot
            Plot1 = CreatePlotModel();
        }