// Called when the x-axis selection is changed. Updates the plotting mapper also private void OnXAxisSelectionChanged(object sender, EventArgs e) { currentXAxis = (ControlEnums.AXISOPTIONS)FindSelectedTextInEnum(XAxisSelectionBox.Text, typeof(ControlEnums.AXISOPTIONS)); // Populate the unit selection box with available units XAxisUnitSelectionBox.Items.Clear(); foreach (Enum unit in Enum.GetValues(ControlEnums.GetAttribute(currentXAxis).units.GetType())) { XAxisUnitSelectionBox.Items.Add(ControlEnums.GetAttribute(unit).disp); } XAxisUnitSelectionBox.SelectedIndex = 0; // Update mapper based on selected axis and unit if (currentXAxis == ControlEnums.AXISOPTIONS.TIME) { CalculateTimeUnitConversion(series1Mapper, (ControlEnums.TIMEUNITS)currentXAxisUnit, true); } else if (currentXAxis == ControlEnums.AXISOPTIONS.VOLTAGE) { CalculateVoltageUnitConversion(series1Mapper, (ControlEnums.VOLTAGEUNITS)currentXAxisUnit, true); } else { CalculateBaseUnitConversion(series1Mapper, currentXAxis, (ControlEnums.BASEUNITS)currentXAxisUnit, true); } WipeGraph(); }
// Calculates the unit conversion factors for position, velocity and acceleration, in deg, rad and revs public double GetBaseUnitConversionFactor(ControlEnums.AXISOPTIONS axis, ControlEnums.BASEUNITS unit) { if (unit == ControlEnums.BASEUNITS.DEG) { return(360.0 / 2000.0); } if (unit == ControlEnums.BASEUNITS.RAD) { return(2.0 * Math.PI / 2000.0); } if (unit == ControlEnums.BASEUNITS.REVS) { if (axis == ControlEnums.AXISOPTIONS.POSITION) { return(1.0 / 2000.0); } else { return(60.0 / 2000.0); } } return(1.0); }
// Called when the y-axis 2 selection changes. Updates the plotting mapper also private void OnYAxis2SelectionChanged(object sender, EventArgs e) { currentYAxis2 = (ControlEnums.AXISOPTIONS)FindSelectedTextInEnum(YAxis2SelectionBox.Text, typeof(ControlEnums.AXISOPTIONS)); // Populate unit selection box with available units YAxis2UnitSelectionBox.Items.Clear(); foreach (Enum unit in Enum.GetValues(ControlEnums.GetAttribute(currentYAxis2).units.GetType())) { YAxis2UnitSelectionBox.Items.Add(ControlEnums.GetAttribute(unit).disp); } YAxis2UnitSelectionBox.SelectedIndex = 0; // Update mapper based on selected axis and unit if (currentYAxis2 == ControlEnums.AXISOPTIONS.TIME) { CalculateTimeUnitConversion(series2Mapper, (ControlEnums.TIMEUNITS)currentYAxis2Unit, false); } else if (currentYAxis2 == ControlEnums.AXISOPTIONS.VOLTAGE) { CalculateVoltageUnitConversion(series2Mapper, (ControlEnums.VOLTAGEUNITS)currentYAxis2Unit, false); } else { CalculateBaseUnitConversion(series2Mapper, currentYAxis2, (ControlEnums.BASEUNITS)currentYAxis2Unit, false); } if (currentYAxis2 == ControlEnums.AXISOPTIONS.ACCELERATION && Series2EnabledCheckbox.Checked) { Chart.Series.Add(setLine3); } else if (Chart.Series.Contains(setLine3)) { Chart.Series.Remove(setLine3); } WipeGraph(); }
// Sets the unit conversion factors for position, velocity and acceleration, for either axis mapper public void CalculateBaseUnitConversion(CartesianMapper <GraphingEntry> mapper, ControlEnums.AXISOPTIONS axis, ControlEnums.BASEUNITS unit, bool xAxis) { if (axis == ControlEnums.AXISOPTIONS.POSITION) { if (xAxis) { mapper.X(entry => entry.position * GetBaseUnitConversionFactor(axis, unit)); } else { mapper.Y(entry => entry.position * GetBaseUnitConversionFactor(axis, unit)); } } if (axis == ControlEnums.AXISOPTIONS.VELOCITY) { if (xAxis) { mapper.X(entry => entry.velocity * GetBaseUnitConversionFactor(axis, unit)); } else { mapper.Y(entry => entry.velocity * GetBaseUnitConversionFactor(axis, unit)); } } if (axis == ControlEnums.AXISOPTIONS.ACCELERATION) { if (xAxis) { mapper.X(entry => entry.acceleration * GetBaseUnitConversionFactor(axis, unit)); } else { mapper.Y(entry => entry.acceleration * GetBaseUnitConversionFactor(axis, unit)); } } }