Beispiel #1
0
        public void OpenPort()
        {
            try
            {
                _serialPort               = new SerialPort();
                _serialPort.PortName      = SelectedPort;
                _serialPort.BaudRate      = 115200;
                _serialPort.Handshake     = System.IO.Ports.Handshake.None;
                _serialPort.Parity        = Parity.None;
                _serialPort.DataBits      = 8;
                _serialPort.StopBits      = StopBits.One;
                _serialPort.ReadTimeout   = 200;
                _serialPort.WriteTimeout  = 50;
                _serialPort.DataReceived += _serialPort_DataReceived;
                _serialPort.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Could not open serial port: {ex.Message}");
                _serialPort.Close();
            }

            OpenPortCommand.RaiseCanExecuteChanged();
            ClosePortCommand.RaiseCanExecuteChanged();
            SendTextCommand.RaiseCanExecuteChanged();
            NextTextCommand.RaiseCanExecuteChanged();
            SendResetCommand.RaiseCanExecuteChanged();
            PreviousTextCommand.RaiseCanExecuteChanged();
            SendZeroCommand.RaiseCanExecuteChanged();
            IncrementStepsCommand.RaiseCanExecuteChanged();
            DecrementStepsCommand.RaiseCanExecuteChanged();
            SendCoefficientsCommand.RaiseCanExecuteChanged();
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsPortClosed)));
        }
        /// <summary>
        /// toggles between the states of enable/disable of the connect/disconnect command buttons, with a slight delay to prevent connection spamming
        /// </summary>
        /// <param name="delay"></param>
        private async void ToggleBlockConnectionCommands(bool delay)
        {
            if (delay)
            {
                await Task.Factory.StartNew(() => Thread.Sleep(1000));
            }

            BlockConnectionCommands = !BlockConnectionCommands;

            ConnectCommand.RaiseCanExecuteChanged();
            DisconnectCommand.RaiseCanExecuteChanged();
            SendTextCommand.RaiseCanExecuteChanged();
            RollDiceCommand.RaiseCanExecuteChanged();
        }
Beispiel #3
0
 public void ClosePort()
 {
     if (_serialPort != null)
     {
         _serialPort.Close();
         _serialPort.Dispose();
         _serialPort = null;
         OpenPortCommand.RaiseCanExecuteChanged();
         ClosePortCommand.RaiseCanExecuteChanged();
         SendTextCommand.RaiseCanExecuteChanged();
         NextTextCommand.RaiseCanExecuteChanged();
         SendResetCommand.RaiseCanExecuteChanged();
         PreviousTextCommand.RaiseCanExecuteChanged();
         SendZeroCommand.RaiseCanExecuteChanged();
         IncrementStepsCommand.RaiseCanExecuteChanged();
         DecrementStepsCommand.RaiseCanExecuteChanged();
         SendCoefficientsCommand.RaiseCanExecuteChanged();
         PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsPortClosed)));
     }
 }