Advanced Distributed Systems module at HSLU
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

93 lines
3.1 KiB

using RobotClientWpf.Utilities;
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
namespace RobotClientWpf.Views
{
/// <summary>
/// Interaction logic for ConfigView.xaml
/// </summary>
public partial class ConfigView : UserControl
{
private static readonly NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
private ChallengeFactory? challenge;
public ConfigView()
{
InitializeComponent();
}
public void SetChallengeFactory(ChallengeFactory challenge)
{
this.challenge = challenge;
this.challenge.RobotMobile.LineSensor.NewCalibrationDataArrived += LineSensor_NewCalibrationDataArrived;
}
private void btnApplyConfiguration_Click(object sender, RoutedEventArgs e)
{
List<TextBox> splitFlapTextboxes = new List<TextBox>() { tbSf1, tbSf2, tbSf3, tbSf4 };
int setupIdCounter = 0; // counting setup ID from 0
foreach (var textbox in splitFlapTextboxes)
{
this.GetHwIdFromTbAndSendMqtt(textbox, setupIdCounter++);
UIAccessHelpers.SetTextboxText(textbox, "");
}
}
private void GetHwIdFromTbAndSendMqtt(TextBox tb, int id)
{
if(challenge != null)
{
string text = UIAccessHelpers.GetTextboxText(tb);
// if nothing is in the textbox
if (String.IsNullOrEmpty(text))
{
return;
}
int hwId;
if(int.TryParse(text, out hwId) == false)
{
log.Warn($"Failed to parse HardwareID={text} given for Splitflap id={id}");
return;
}
this.challenge.RobotStationary.SplitFlap.ConfigureSplitflap(id, hwId);
}
else
{
log.Error("challenge object is null");
}
}
private void btnStartCalibration_Click(object sender, RoutedEventArgs e)
{
this.challenge?.RobotMobile.LineSensor.StartCalibration(true);
}
private void btnEndCalibration_Click(object sender, RoutedEventArgs e)
{
this.challenge?.RobotMobile.LineSensor.StartCalibration(false);
this.challenge?.RobotMobile.LineSensor.GetCalibrationData();
}
private void btnGetCalibrationData_Click(object sender, RoutedEventArgs e)
{
this.challenge?.RobotMobile.LineSensor.GetCalibrationData();
}
private void LineSensor_NewCalibrationDataArrived(object? sender, RobotLib.Movement.LineSensorCalibrationDataEventArgs e)
{
UIAccessHelpers.SetTextboxText(this.tbCalibrationData, e.CalibrationValues);
UIAccessHelpers.SetTextboxText(this.tbCalibrationState, e.State);
}
private void btnInitSplitflaps_Click(object sender, RoutedEventArgs e)
{
this.challenge?.RobotStationary.SplitFlap.InitializeAllSplitflaps();
}
}
}