コード例 #1
0
        private void StartButtonOnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                if (XbeeTransceiver.StartCar())
                {
                    StartButton.IsEnabled       = false;
                    DisconnectButton.IsEnabled  = false;
                    SaveButton.IsEnabled        = false;
                    SpeedSlider.IsEnabled       = false;
                    MinDistanceSlider.IsEnabled = false;
                    StopButton.IsEnabled        = true;
                    Logger.Write("Car started!");

                    _timer.Start();
                    _isStopRequested = false;
                }
            }

            catch (XbeeReadException ex)
            {
                Logger.Write("Failed to start the car!");
                Logger.Write($"Reason: {ex.Error}");
            }
        }
コード例 #2
0
        private async void OnLoaded(object sender, RoutedEventArgs e)
        {
            Logger.LogWritten += OnLogWritten;

            _timer = new DispatcherTimer {
                Interval = TimeSpan.FromSeconds(0.5)
            };
            _timer.Tick += TimerOnTick;

            await Task.Delay(500);

            Viewport.Camera.LookDirection = new Vector3D(-2, 16, -20);
            Viewport.ZoomExtents(new Rect3D(0, -10, 0, 20, 20, 20), 20);


            var status = XbeeTransceiver.ConnectToCar(out string carName);

            switch (status)
            {
            case XbeeConnectStatus.Connected:
                CarNameTextBlock.Text = carName;
                break;

            case XbeeConnectStatus.NoXbeeFound:
                MessageBox.Show("Please connect the Xbee module to the PC before launching this application.", "Attention!", MessageBoxButton.OK, MessageBoxImage.Information);
                Application.Current.Shutdown(1);
                return;

            case XbeeConnectStatus.NoCarFound:
                MessageBox.Show("Please turn on the car before launching this application.", "Attention!", MessageBoxButton.OK, MessageBoxImage.Information);
                Application.Current.Shutdown(2);
                return;

            default:
                break;
            }

            try
            {
                var speed       = XbeeTransceiver.GetSpeedSettings();
                var minDistance = XbeeTransceiver.GetMinDistanceSettings();

                SpeedSlider.Value       = speed;
                MinDistanceSlider.Value = minDistance;

                StartButton.IsEnabled       = true;
                DisconnectButton.IsEnabled  = true;
                SaveButton.IsEnabled        = true;
                SpeedSlider.IsEnabled       = true;
                MinDistanceSlider.IsEnabled = true;
            }

            catch (XbeeReadException ex)
            {
                Logger.Write("Failed to get settings value from the car!");
                Logger.Write($"Reason: {ex.Error}");
                await ExitAsync(3);
            }
        }
コード例 #3
0
        private void SaveButtonOnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                XbeeTransceiver.SetSpeedSettings((int)SpeedSlider.Value);
                XbeeTransceiver.SetMinDistanceSettings((int)MinDistanceSlider.Value);
            }

            catch (XbeeReadException ex)
            {
                Logger.Write("Failed to send settings to the car!");
                Logger.Write($"Reason: {ex.Error}");
            }
        }
コード例 #4
0
        private async void DisconnectButtonOnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                if (XbeeTransceiver.DisconnectFromCar())
                {
                    StartButton.IsEnabled      = false;
                    StopButton.IsEnabled       = false;
                    DisconnectButton.IsEnabled = false;

                    Logger.Write("Disconnected from car!");
                    await ExitAsync(0);
                }
            }

            catch (XbeeReadException ex)
            {
                Logger.Write("Failed to disconnect from the car!");
                Logger.Write($"Reason: {ex.Error}");
            }
        }
コード例 #5
0
        private async void TimerOnTick(object sender, EventArgs e)
        {
            try
            {
                _timer.Stop();

                var data = XbeeTransceiver.GetMapData();
                await Draw(data);
            }

            catch (XbeeReadException ex)
            {
                Logger.Write("Failed to get map data from the car!");
                Logger.Write($"Reason: {ex.Error}");
            }

            finally
            {
                if (!_isStopRequested)
                {
                    _timer.Start();
                }
            }
        }