Beispiel #1
0
 public OldData(ClientApplicatie clientapp)
 {
     InitializeComponent();
     MainClient.SendNetCommand(new NetCommand(NetCommand.RequestType.ALLSESSIONS, MainClient.Session));
     this.clientapp = clientapp;
     timer1.Start();
 }
 private void button1_Click(object sender, EventArgs e)
 {
     if (richTextBox1.TextLength > 1)
     {
         AddChatItem(new ChatMessage("Anon", richTextBox1.Text, false));
         MainClient.SendNetCommand(new NetCommand(richTextBox1.Text, false, MainClient.Session));
         richTextBox1.ResetText();
     }
 }
 public void CreateNewTest(char geslacht, int leeftijd, int gewicht, int lengte)
 {
     panelTopBar.Visible = true;
     panelClientContainer.BringToFront();
     chat = panelClientChat;
     MainClient.SendNetCommand(new NetCommand(gewicht, lengte, leeftijd, geslacht, MainClient.Session));
     MainClient.ComPort.Write("RS");
     MainClient.ComPort.Read();
     Thread.Sleep(200);
     MainClient.ComPort.Write("CM");
     MainClient.ComPort.Read();
     ergotest = new ErgometerTest(gewicht, lengte, leeftijd, geslacht, this);
     updateTimer.Start();
     beeptimer.Start();
 }
Beispiel #4
0
        public void timerTick()
        {
            if (MainClient.GetLastMeting().Seconds > 5 && currentPower != MainClient.GetLastMeting().Power)
            {
                MainClient.ComPort.Write("PW " + currentPower);
                MainClient.ComPort.Read();
                MainClient.QuickBeepAudio();
            }

            if (MainClient.GetLastMeting().RPM < 45 || MainClient.GetLastMeting().RPM > 55)
            {
                deviation++;
            }
            else
            {
                deviation = Math.Max(deviation - 1, 0);
            }

            if (deviation >= 60 && !failed)
            {
                workloadStarted = MainClient.GetLastMeting().Seconds;
                currentstate    = state.COOLINGDOWN;
                MainClient.SwitchTestModeAudio();
                client.updateStepsText("U wijkt te vaak af van 50rpm, de test wordt gestopt. U begint nu aan de cooldown.");
                failed = true;
                MainClient.ComPort.Write("PW 25");
                MainClient.ComPort.Read();
                currentPower = 25;
            }

            switch (currentstate)
            {
            case state.WARMUP:
                if (MainClient.GetLastMeting().Seconds > 30)
                {
                    List <ErgometerLibrary.Meting> last20 = MainClient.Metingen.GetRange(MainClient.Metingen.Count - 20, 20);
                    int max = FindMaxValue(last20, x => x.HeartBeat);
                    int min = FindMinValue(last20, x => x.HeartBeat);
                    if (max + min < 20)
                    {
                        client.updateStepsText("We detecteren geen hartslag. Controleer of de hartslagmeter is verbonden. De test gaat automatisch verder.");
                    }
                    else if (max - min > 10)     //Hartslag niet stabiel
                    {
                        client.updateStepsText("Uw hartslag is niet stabiel, probeer een tempo van 50 rpm aan te houden. De test gaat automatisch verder.");
                        return;
                    }
                    else
                    {
                        currentstate = state.WORKLOAD;
                        MainClient.SwitchTestModeAudio();
                        workloadStarted = MainClient.GetLastMeting().Seconds;
                        client.updateStepsText("De warmup is voltooid. De test gaat nu beginnen. U begint nu aan de " + NumToText(GetCurrentWorkload()) + " workload.");
                    }
                }
                if (MainClient.GetLastMeting().Seconds > 9 && MainClient.GetLastMeting().Seconds < 11)
                {
                    if (MainClient.GetLastMeting().HeartBeat < 20)
                    {
                        client.updateStepsText("We detecteren geen hartslag. Controleer of de hartslagmeter is verbonden.");
                    }
                }
                break;

            case state.WORKLOAD:
                if (MainClient.GetLastMeting().Seconds - workloadStarted > 180)
                {
                    currentPower = GetWorkloadPower(GetCurrentWorkload());
                    workloads.Add(new Workload(MainClient.GetLastMeting().Power, workloadHearthbeat));
                    MainClient.ComPort.Write("PW " + currentPower);
                    MainClient.ComPort.Read();
                    client.updateStepsText("U heeft de workload afgerond, u begint nu aan de " + NumToText(GetCurrentWorkload()) + " workload. Uw nieuwe weerstand is " + currentPower + " Watt.");
                    MainClient.SwitchWorkloadAudio();

                    workloadStarted    = MainClient.GetLastMeting().Seconds;
                    workloadHearthbeat = 0;
                    Console.WriteLine("3:00 gefietst, workload" + (GetCurrentWorkload()) + " af, nieuwe waardes maken");

                    //Checken of de heartrate niet groter is dan 75%, anders stoppen
                    if (workloadHearthbeat > (CalculateMaximumHeartRate() * 0.80))
                    {
                        workloadStarted = MainClient.GetLastMeting().Seconds;
                        currentstate    = state.COOLINGDOWN;
                        MainClient.SwitchTestModeAudio();
                        client.updateStepsText("Uw hartslag heeft het kritieke punt bereikt, we beginnen nu aan de cooldown.");
                        MainClient.ComPort.Write("PW 25");
                        MainClient.ComPort.Read();
                        currentPower = 25;
                    }
                }
                else if (MainClient.GetLastMeting().Seconds - workloadStarted > 160 && workloadHearthbeat == 0)
                {
                    List <ErgometerLibrary.Meting> last150 = MainClient.Metingen.GetRange(MainClient.Metingen.Count - 150, 150);
                    workloadHearthbeat = FindAverageValue(last150, x => x.HeartBeat);
                    Console.WriteLine("2:40 gefiets, gemiddelde harstslag berekenen:" + workloadHearthbeat);
                    client.updateStepsText("U bent nu met de " + NumToText(GetCurrentWorkload()) + " workload bezig. Uw gemiddelde hartslag is berekend als " + workloadHearthbeat + "bpm.");
                }
                else if (MainClient.GetLastMeting().Seconds - workloadStarted > 9 && MainClient.GetLastMeting().Seconds - workloadStarted < 11)
                {
                    client.updateStepsText("U bent nu met de " + NumToText(GetCurrentWorkload()) + " workload bezig. De fiets staat nu ingesteld op " + MainClient.GetLastMeting().Power + " Watt");
                }
                break;

            case state.COOLINGDOWN:
                if (MainClient.GetLastMeting().Seconds - workloadStarted > 360)
                {
                    currentstate = state.STOP;
                    MainClient.SwitchTestModeAudio();
                    client.updateStepsText("De test is afgelopen.");
                }
                else if (MainClient.GetLastMeting().Seconds - workloadStarted > 9 && MainClient.GetLastMeting().Seconds - workloadStarted < 11)
                {
                    client.updateStepsText("U bent momenteel met de cooldown bezig.");
                }
                break;

            case state.STOP:
                MainClient.Client.updateTimer.Stop();
                MainClient.Client.beeptimer.Stop();
                MainClient.ComPort.Write("RS");
                MainClient.ComPort.Read();
                currentPower = 0;
                if (failed)
                {
                    MainClient.Client.updateStepsText("De test is mislukt omdat u te vaak heeft afgeweken van 50rpm. Onze excuses voor het ongemak.");
                }
                else if (workloads.Count > 1)
                {
                    MainClient.Client.updateStepsText(String.Format("De test is afgelopen. Uw test resultaten zijn: \n VO2MAX: {0:0.00} MET: {1:0.00} Gemiddelde: {2:0.00} \n {3} ", CalculateVOMax(), CalculateMET(), CalculatePopulationAverage(), CalculateRating()));
                    MainClient.SendNetCommand(new ErgometerLibrary.NetCommand(CalculateVOMax(), CalculateMET(), CalculatePopulationAverage(), CalculateZScore(), CalculateRating(), MainClient.Session));
                }
                else
                {
                    MainClient.Client.updateStepsText("Er zijn te weinig workload tests afgenomen om een resultaat te maken. Onze excuses voor het ongemak.");
                }
                break;
            }
        }
 public void updateStepsText(string text)
 {
     steps.setText(text);
     MainClient.SendNetCommand(new NetCommand(MainClient.Session, text));
 }