private void applyAnalogs(hardwareState state)
{
List<string> toRemove = new List<string>(); //In case of errors, keep track of things to delete from the list of changes.
foreach (KeyValuePair<string, double> pairs in state.analogs)
{
try
{
if (calibrations.ContainsKey(pairs.Key))
{
SetAnalogOutput(pairs.Key, pairs.Value, true);
}
else
{
SetAnalogOutput(pairs.Key, pairs.Value);
}
controlWindow.WriteToConsole("Set channel '" + pairs.Key.ToString() + "' to " + pairs.Value.ToString());
}
catch (CalibrationException)
{
controlWindow.WriteToConsole("Failed to set channel '"+ pairs.Key.ToString() + "' to new value");
toRemove.Add(pairs.Key);
}
}
foreach (string s in toRemove) //Remove those from the list of changes, as nothing was done to the Hardware.
{
state.analogs.Remove(s);
}
}