Ver código fonte

Implement all workloads

Kenneth van Ewijk 10 anos atrás
pai
commit
73a64eed2e
1 arquivos alterados com 80 adições e 14 exclusões
  1. 80 14
      ErgometerIPR/ErgometerApplication/ErgometerTest.cs

+ 80 - 14
ErgometerIPR/ErgometerApplication/ErgometerTest.cs

@@ -26,6 +26,7 @@ namespace ErgometerApplication
             this.age = age;
             this.gender = gender;
             currentstate = state.WARMUP;
+            workloadnumber = 1;
             MainClient.ComPort.Write("SET PW 25");
         }
 
@@ -39,7 +40,7 @@ namespace ErgometerApplication
                         List<ErgometerLibrary.Meting> 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);
-                        if(max - min > 20) //Hartslag niet stabiel
+                        if(max - min > 10) //Hartslag niet stabiel
                         {
                             return;
                         }
@@ -55,21 +56,13 @@ namespace ErgometerApplication
                     if (MainClient.GetLastMeting().Seconds - workloadStarted > 180)
                     {
                         //Checken of de heartrate niet groter is dan 75%, anders stoppen
-                        if(workloadnumber == 0)
+                        if (workloadHearthbeat > CalculateMaximumHeartRate())
                         {
-                            if(workloadHearthbeat < 80)
-                                MainClient.ComPort.Write("SET PW 125");
-                            else if (workloadHearthbeat < 89)
-                                MainClient.ComPort.Write("SET PW 100");
-                            else if (workloadHearthbeat < 100)
-                                MainClient.ComPort.Write("SET PW 75");
-                            else if (workloadHearthbeat > 100)
-                                MainClient.ComPort.Write("SET PW 50");
-                        }
-                        else
-                        {
-                            MainClient.ComPort.Write((MainClient.GetLastMeting().Power + 25).ToString());
+                            currentstate = state.COOLINGDOWN;
                         }
+
+                        MainClient.ComPort.Write("PW " + GetWorkloadPower(workloadnumber));
+
                         workloadStarted = MainClient.GetLastMeting().Seconds;
                         workloadHearthbeat = 0;
                         workloadnumber++;
@@ -87,6 +80,79 @@ namespace ErgometerApplication
             }
         }
 
+        //          WORKLOAD                //
+
+
+        private int GetWorkloadPower(int workload)
+        {
+            if (gender == 'V')
+            {
+                if (workloadnumber == 1)
+                {
+                    if (workloadHearthbeat < 80)
+                        return 125;
+                    else if (workloadHearthbeat < 89)
+                        return 100;
+                    else if (workloadHearthbeat < 100)
+                        return 75;
+                    else
+                        return 50;
+                }
+                else
+                {
+                    return MainClient.GetLastMeting().Power + 25;
+                }
+            }
+            else if(gender == 'M')
+            {
+                if(workloadnumber == 1)
+                {
+                    if (workloadHearthbeat < 90)
+                        return 150;
+                    else if (workloadHearthbeat < 105)
+                        return 125;
+                    else
+                        return 100;
+                }
+                else if(workloadnumber == 2)
+                {
+                    if(workloadHearthbeat < 120)
+                    {
+                        if (MainClient.GetLastMeting().Power == 150)
+                            return 225;
+                        else if (MainClient.GetLastMeting().Power == 125)
+                            return 200;
+                        else
+                            return 175;
+                    }
+                    else if(workloadHearthbeat < 135)
+                    {
+                        if (MainClient.GetLastMeting().Power == 150)
+                            return 200;
+                        else if (MainClient.GetLastMeting().Power == 125)
+                            return 175;
+                        else
+                            return 150;
+                    }
+                    else
+                    {
+                        if (MainClient.GetLastMeting().Power == 150)
+                            return 175;
+                        else if (MainClient.GetLastMeting().Power == 125)
+                            return 150;
+                        else
+                            return 125;
+                    }
+                }
+                else
+                {
+                    return MainClient.GetLastMeting().Power + 25;
+                }
+            }
+
+            return 25;
+        }
+
 
         //          HELPER FUNCTIONS         //