예제 #1
0
        /// <summary>
        /// Starts generating values for the MMS
        /// </summary>
        private void Generated()
        {
            GenItemsString = new List <string>();
            foreach (var item in GeneratedItemsCheckbox)
            {
                if ((bool)item.IsChecked)
                {
                    GenItemsString.Add(item.Name);
                }
            }
            Task task = new Task(() => HostedMB.Generated(ct));

            task.Start();
        }
예제 #2
0
        /// <summary>
        /// Starts accepting Live input for the MMS
        /// </summary>
        /// <returns></returns>
        private bool Live()
        {
            // Checks if the selected master port is being used
            if (!TestSerialPort((string)SerialChooseIED.SelectedValue))
            {
                return(false);
            }
            #region Hosted Master Port settings
            HostedMB.HostedMasterPort = new SerialPort()
            {
                PortName = (string)SerialChooseIED.SelectedItem,
                BaudRate = Convert.ToInt32(BaudRate.Text),
                DataBits = Convert.ToInt32(DataBits.Text),
            };
            switch (ParityComboBox.Text)
            {
            case "None":
                HostedMB.HostedMasterPort.Parity = Parity.None;
                break;

            case "Odd":
                HostedMB.HostedMasterPort.Parity = Parity.Odd;
                break;

            case "Even":
                HostedMB.HostedMasterPort.Parity = Parity.Even;
                break;
            }
            switch (StopBitsComboBox.Text)
            {
            case "1":
                HostedMB.HostedMasterPort.StopBits = StopBits.One;
                break;

            case "2":
                HostedMB.HostedMasterPort.StopBits = StopBits.Two;
                break;
            }
            HostedMB.TimeOutValue = Convert.ToInt32(Timeout.Text);

            Task task = new Task(() => HostedMB.Live(ct));
            task.Start();
            return(true);

            #endregion
        }
예제 #3
0
        /// <summary>
        /// Starts or kills the test
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Start_Click(object sender, RoutedEventArgs e)
        {
            if ((string)Start.Content == "Start")
            {
                // Assigns the token source
                tokenSource = new CancellationTokenSource();
                ct          = tokenSource.Token;

                EnableDisableSettings();
                if (!Client1Settings())
                {
                    return;
                }
                if ((bool)OneClient.IsChecked)
                {
                    HostedMB.SlavesCreated = new bool[1];
                    await Task.Run(() => HostedMB.CreateHostedSlave1());

                    HostedMB.OutputPorts = new string[] { (string)Client1Serial.SelectedValue };
                }
                else if ((bool)TwoClients.IsChecked)
                {
                    HostedMB.SlavesCreated = new bool[2];
                    if (!Client2Settings())
                    {
                        return;
                    }

                    await Task.Run(() => HostedMB.CreateHostedSlave1And2());

                    HostedMB.OutputPorts = new string[] { (string)Client1Serial.SelectedValue, (string)Client2Serial.SelectedValue };
                }
                else
                {
                    HostedMB.SlavesCreated = new bool[3];
                    if (!Client2Settings())
                    {
                        return;
                    }
                    ;

                    if (!Client3Settings())
                    {
                        return;
                    }

                    await Task.Run(() => HostedMB.CreateHostedSlave1And2And3());

                    HostedMB.OutputPorts = new string[] { (string)Client1Serial.SelectedValue, (string)Client2Serial.SelectedValue, (string)Client3Serial.SelectedValue };
                }

                if ((bool)LiveInput.IsChecked)
                {
                    if (!Live())
                    {
                        return;
                    }
                }
                else
                {
                    Generated();
                }

                Start.Content    = "Stop";
                Start.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ff5252"));

                // The process has a set duration
                if ((bool)DurationCheckbox.IsChecked)
                {
                    int hours   = Convert.ToInt32(Hours.Text);
                    int minutes = Convert.ToInt32(Minutes.Text);

                    _time = TimeSpan.FromMinutes(hours * 60 + minutes);

                    _timer = new DispatcherTimer(new TimeSpan(0, 0, 1), DispatcherPriority.Normal, delegate
                    {
                        Timer.Text = _time.ToString("c");
                        if (_time == TimeSpan.Zero)
                        {
                            _timer.Stop();
                        }
                        _time = _time.Add(TimeSpan.FromSeconds(-1));
                    }, Application.Current.Dispatcher);

                    _timer.Start();

                    await Task.Run(() => EndAfterDuration(hours, minutes));

                    Start.Content    = "Start";
                    Start.IsEnabled  = true;
                    Start.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#33cc57"));
                    EnableDisableSettings();
                }
            }
            else
            {
                tokenSource.Cancel();

                while (!ProcessKilled)
                {
                }

                Start.Content    = "Start";
                Start.IsEnabled  = true;
                Start.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#33cc57"));
                EnableDisableSettings();
            }
        }