/// <summary> /// update the statistics /// </summary> /// <param name="bikeEvent">BikeStatEvent bikeEvent</param> public void UpdatePanel(BikeStatEvent bikeEvent) { bpm = bikeEvent.values.ElementAt((int)Stats.StatName.HEARTBEAT); rpm = bikeEvent.values.ElementAt((int)Stats.StatName.RPM); speed = bikeEvent.values.ElementAt((int)Stats.StatName.SPEED); distance = bikeEvent.values.ElementAt((int)Stats.StatName.DISTANCE); power = bikeEvent.values.ElementAt((int)Stats.StatName.PROGRAMWATTAGE); energy = bikeEvent.values.ElementAt((int)Stats.StatName.ENERGY); timeD = bikeEvent.values.ElementAt((int)Stats.StatName.TIME); ap = bikeEvent.values.ElementAt((int)Stats.StatName.WATTAGE); }
/// <summary> /// update the BikeStatEvent /// </summary> /// <param name="e"></param> public void updateStat(BikeStatEvent e) { if ((last == null) || (e.getValues()[(int)Stats.StatName.TIME] != last.getValues()[(int)Stats.StatName.TIME])) { sendData(e); last = e; if (training != null) { var power = training.registerBikeEvent(e); if (power != -1) { bike.connector.sendData("PW " + power); } } } }
/// <summary> /// first check the bikevent with the predefined checks (for calculating averages or setting power) /// Then return the programmed wattage with offset (when below or above threshold) /// </summary> /// <param name="bikeEvent">Parameter is the latest bikeevent, if bikeevent == null then returns -1 (errorvalue)</param> /// <returns></returns> public double registerBikeEvent(BikeStatEvent bikeEvent) { if (bikeEvent == null) { return(-1); } foreach (var check in checks) { var value = check.Invoke(bikeEvent); if (value != null) { switch (value.value) { case TrainingCheckValue.TypeTrainingValue.DOCTOR_MSG: actionListener.Invoke(value.data + ""); break; case TrainingCheckValue.TypeTrainingValue.AVERAGE_CALC: averages[(int)value.averageIndex] += (int)value.data; break; case TrainingCheckValue.TypeTrainingValue.DEFAULT_POWER: if (powerOffset != 0) { powerOffset -= 1; } break; case TrainingCheckValue.TypeTrainingValue.HIGHER_POWER: powerOffset += (int)value.data; break; } } } var power = getPower((int)bikeEvent.values[(int)Stats.StatName.TIME]); if (power != lastPower) { lastPower = power; return(power); } return(-1); }
/// <summary> /// add new data to a following patient /// </summary> private void updateGraphPatientData(BikeStatEvent bikeEvent) { if ((bikeEvent.type != BikeStatEvent.StatTypes.CURRENT_STATISTICS) || (bikeEvent.source != selectedFilter)) { return; } if (InvokeRequired) { Invoke(new MethodInvoker(delegate { updateGraphPatientData(bikeEvent); })); } else { graphPatientData.Series["Heartbeat"].Points.Add(bikeEvent.values[(int)Stats.StatName.HEARTBEAT]); graphPatientData.Series["RPM"].Points.Add(bikeEvent.values[(int)Stats.StatName.RPM]); graphPatientData.Series["Actual power"].Points.Add(bikeEvent.values[(int)Stats.StatName.WATTAGE]); graphPatientData.Series["HeartBeatAverage"].Points.Add(heartbeatAverageValue); updateGraphScrollBar(); } updateGraphAvrageHeartBeatLine(); }
public void updateLabels(BikeStatEvent bikeEvent) { Console.WriteLine("CLIENT IS CHANGING " + bikeEvent); if (bikeEvent.type != current) { return; } if (bikeEvent.source != selectedFilter) { return; } if (InvokeRequired) { Invoke(new MethodInvoker(delegate { updateLabels(bikeEvent); })); } else { var values = bikeEvent.values; var gap = " "; heartbeatLabel.Text = values[(int)Stats.StatName.HEARTBEAT] + gap + "beats/minute" + Stats.getPrefix(current, (int)Stats.StatName.HEARTBEAT); RPMLabel.Text = values[(int)Stats.StatName.RPM] + gap + "rounds/minute" + Stats.getPrefix(current, (int)Stats.StatName.RPM); speedLabel.Text = values[(int)Stats.StatName.SPEED] + gap + "km/hour" + Stats.getPrefix(current, (int)Stats.StatName.SPEED); distanceLabel.Text = values[(int)Stats.StatName.DISTANCE] + gap + "km" + Stats.getPrefix(current, (int)Stats.StatName.DISTANCE); powerLabel.Text = values[(int)Stats.StatName.PROGRAMWATTAGE] + gap + "watt" + Stats.getPrefix(current, (int)Stats.StatName.PROGRAMWATTAGE); energyLabel.Text = values[(int)Stats.StatName.ENERGY] + gap + "kilo joule" + Stats.getPrefix(current, (int)Stats.StatName.ENERGY); timeLabel.Text = values[(int)Stats.StatName.TIME] + gap + "seconds" + Stats.getPrefix(current, (int)Stats.StatName.TIME); acPowerLabel.Text = values[(int)Stats.StatName.WATTAGE] + gap + "watt" + Stats.getPrefix(current, (int)Stats.StatName.WATTAGE); } }