diff --git a/ErgometerIPR/ErgometerApplication/ErgometerTest.cs b/ErgometerIPR/ErgometerApplication/ErgometerTest.cs index 680cce1..e643e08 100644 --- a/ErgometerIPR/ErgometerApplication/ErgometerTest.cs +++ b/ErgometerIPR/ErgometerApplication/ErgometerTest.cs @@ -16,6 +16,7 @@ namespace ErgometerApplication private enum state {WARMUP, WORKLOAD, COOLINGDOWN}; private state currentstate; private int stateStarted; + private int stateHearthbeat; public ErgometerTest(int weight, int length , int age, char gender) { @@ -37,6 +38,7 @@ namespace ErgometerApplication List last10 = MainClient.Metingen.GetRange(MainClient.Metingen.Count - 10, 10); int max = FindMaxValue(MainClient.Metingen, x => x.HeartBeat); int min = FindMaxValue(MainClient.Metingen, x => x.HeartBeat); + MainClient.ComPort.Write("SET PW 25"); if(max - min > 20) //Hartslag niet stabiel { return; @@ -44,10 +46,25 @@ namespace ErgometerApplication else { currentstate = state.WORKLOAD; + stateStarted = MainClient.Metingen.Last().Seconds; } } break; case state.WORKLOAD: + if (stateStarted - MainClient.Metingen.Last().Seconds > 180) + { + //Bereken nieuwe kracht + //Zet nieuwe kracht + //State started weer op de huidige tijd zetten + //Checken of het niet groter dan 75% is + //stateHeartbeat weer op 0 zetten + + } + else if (stateStarted - MainClient.Metingen.Last().Seconds > 160 && stateHearthbeat != 0) + { + List last80 = MainClient.Metingen.GetRange(MainClient.Metingen.Count - 80, 80); + stateHearthbeat = FindAvergeValue(MainClient.Metingen, x => x.HeartBeat); + } break; case state.COOLINGDOWN: break; @@ -97,5 +114,19 @@ namespace ErgometerApplication } return minValue; } + + public int FindAvergeValue(List list, Converter projection) + { + if (list.Count == 0) + { + throw new InvalidOperationException("Empty list"); + } + int totalvalue = 0; + foreach (T item in list) + { + totalvalue += projection(item); + } + return totalvalue / list.Count; + } } }