diff --git a/ErgometerSimulator/ErgometerSimulator/CommandParser.cs b/ErgometerSimulator/ErgometerSimulator/CommandParser.cs index 7b4b1f7..6718b15 100644 --- a/ErgometerSimulator/ErgometerSimulator/CommandParser.cs +++ b/ErgometerSimulator/ErgometerSimulator/CommandParser.cs @@ -8,9 +8,15 @@ namespace ErgometerSimulator { class CommandParser { - private static Random rand = new Random(); + private Random rand = new Random(); + private DataGenerator dg; - public static string Parse(string input) + public CommandParser(DataGenerator dg) + { + this.dg = dg; + } + + public string Parse(string input) { string response = ""; @@ -21,14 +27,14 @@ namespace ErgometerSimulator response = "ACK"; break; case "ST": - response += rand.Next(90, 140) + "\t"; //Heartbeat - response += rand.Next(20, 40) + "\t"; //RPM - response += rand.Next(50, 350) + "\t"; //Speed - response += rand.Next(10, 999) + "\t"; //Distance - response += rand.Next(25, 400) + "\t"; //Power - response += rand.Next(5, 55) + "\t"; //Energy - response += rand.Next(0, 24) + ":" + rand.Next(0, 60) + "\t"; //Time - response += rand.Next(25, 400); //ActualPower + response += dg.HeartBeat.currentvalue + "\t"; //Heartbeat + response += dg.RPM.currentvalue + "\t"; //RPM + response += dg.Speed.currentvalue + "\t"; //Speed + response += dg.Distance.currentvalue + "\t"; //Distance + response += dg.Power.currentvalue + "\t"; //Power + response += dg.Energy.currentvalue + "\t"; //Energy + response += dg.Time.currentvalue /60 + ":" + dg.Time.currentvalue % 60 + "\t"; //Time + response += dg.ActualPower.currentvalue; //ActualPower break; default: break; diff --git a/ErgometerSimulator/ErgometerSimulator/DataGenerator.cs b/ErgometerSimulator/ErgometerSimulator/DataGenerator.cs index 7d8cc17..513b4c8 100644 --- a/ErgometerSimulator/ErgometerSimulator/DataGenerator.cs +++ b/ErgometerSimulator/ErgometerSimulator/DataGenerator.cs @@ -39,7 +39,74 @@ namespace ErgometerSimulator //Hearbeat if(HeartBeat.random) { - + HeartBeat.currentvalue = rand.Next(HeartBeat.value1, HeartBeat.value2); + } + else + { + HeartBeat.currentvalue = HeartBeat.value1; + } + //RPM + if (RPM.random) + { + RPM.currentvalue = rand.Next(RPM.value1, RPM.value2); + } + else + { + RPM.currentvalue = RPM.value1; + } + //Speed + if (Speed.random) + { + Speed.currentvalue = rand.Next(Speed.value1, Speed.value2); + } + else + { + Speed.currentvalue = Speed.value1; + } + //Distance + if (Distance.random) + { + Distance.currentvalue = rand.Next(Distance.value1, Distance.value2); + } + else + { + Distance.currentvalue = Distance.value1; + } + //Power + if (Power.random) + { + Power.currentvalue = rand.Next(Power.value1, Power.value2); + } + else + { + Power.currentvalue = Power.value1; + } + //Energy + if (Energy.random) + { + Energy.currentvalue = rand.Next(Energy.value1, Energy.value2); + } + else + { + Energy.currentvalue = Energy.value1; + } + //ActualPower + if (ActualPower.random) + { + ActualPower.currentvalue = rand.Next(ActualPower.value1, ActualPower.value2); + } + else + { + ActualPower.currentvalue = ActualPower.value1; + } + //Time + if (Time.random) // false = up; true = down; + { + Time.currentvalue = Time.value1 - 1; + } + else + { + Time.currentvalue = Time.value1 + 1; } } } diff --git a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.Designer.cs b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.Designer.cs index 7b6af19..e9ed167 100644 --- a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.Designer.cs +++ b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.Designer.cs @@ -96,9 +96,7 @@ namespace ErgometerSimulator // ComPortBox // this.ComPortBox.FormattingEnabled = true; - this.ComPortBox.Items.AddRange(new object[] { - "COM8", - "COM9"}); + this.ComPortBox.Items.AddRange(SerialPort.GetPortNames()); this.ComPortBox.Location = new System.Drawing.Point(15, 308); this.ComPortBox.Name = "ComPortBox"; this.ComPortBox.Size = new System.Drawing.Size(121, 24); @@ -144,6 +142,7 @@ namespace ErgometerSimulator this.setHeartBeat.TabIndex = 6; this.setHeartBeat.Text = "Set"; this.setHeartBeat.UseVisualStyleBackColor = true; + this.setHeartBeat.Click += new System.EventHandler(this.setHeartBeat_Click); // // setRPM // @@ -153,6 +152,7 @@ namespace ErgometerSimulator this.setRPM.TabIndex = 11; this.setRPM.Text = "Set"; this.setRPM.UseVisualStyleBackColor = true; + this.setRPM.Click += new System.EventHandler(this.setRPM_Click); // // text2RPM // @@ -194,6 +194,7 @@ namespace ErgometerSimulator this.setSpeed.TabIndex = 16; this.setSpeed.Text = "Set"; this.setSpeed.UseVisualStyleBackColor = true; + this.setSpeed.Click += new System.EventHandler(this.setSpeed_Click); // // text2Speed // @@ -235,6 +236,7 @@ namespace ErgometerSimulator this.setDistance.TabIndex = 21; this.setDistance.Text = "Set"; this.setDistance.UseVisualStyleBackColor = true; + this.setDistance.Click += new System.EventHandler(this.setDistance_Click); // // text2Distance // @@ -276,6 +278,7 @@ namespace ErgometerSimulator this.setPower.TabIndex = 26; this.setPower.Text = "Set"; this.setPower.UseVisualStyleBackColor = true; + this.setPower.Click += new System.EventHandler(this.setPower_Click); // // text2Power // @@ -317,6 +320,7 @@ namespace ErgometerSimulator this.setEnergy.TabIndex = 31; this.setEnergy.Text = "Set"; this.setEnergy.UseVisualStyleBackColor = true; + this.setEnergy.Click += new System.EventHandler(this.setEnergy_Click); // // text2Energy // @@ -358,6 +362,7 @@ namespace ErgometerSimulator this.setActualPower.TabIndex = 36; this.setActualPower.Text = "Set"; this.setActualPower.UseVisualStyleBackColor = true; + this.setActualPower.Click += new System.EventHandler(this.setActualPower_Click); // // text2ActualPower // diff --git a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.cs b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.cs index f82f0e2..1c105c1 100644 --- a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.cs +++ b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.cs @@ -16,12 +16,14 @@ namespace ErgometerSimulator { ComPort comPort; DataGenerator dg; + CommandParser parser; public ErgometerSimulator() { InitializeComponent(); comPort = new ComPort(this); dg = new DataGenerator(); + parser = new CommandParser(dg); } private void connectButton_Click(object sender, EventArgs e) @@ -47,7 +49,7 @@ namespace ErgometerSimulator public void ReceivedCommand(string command) { - string response = CommandParser.Parse(command); + string response = parser.Parse(command); string display = command + " :_: " + response; Console.WriteLine(display); comPort.Write(response); @@ -57,5 +59,61 @@ namespace ErgometerSimulator { dg.Update(); } + + private void setHeartBeat_Click(object sender, EventArgs e) + { + if(text1HeartBeat.Text != "" && text2HeartBeat.Text != "") + { + dg.HeartBeat = new ValueSetting(randomHeartBeat.Checked, int.Parse(text1HeartBeat.Text), int.Parse(text2HeartBeat.Text)); + } + } + + private void setRPM_Click(object sender, EventArgs e) + { + if (text1RPM.Text != "" && text2RPM.Text != "") + { + dg.RPM = new ValueSetting(randomRPM.Checked, int.Parse(text1RPM.Text), int.Parse(text2RPM.Text)); + } + } + + private void setSpeed_Click(object sender, EventArgs e) + { + if (text1Speed.Text != "" && text2Speed.Text != "") + { + dg.Speed = new ValueSetting(randomSpeed.Checked, int.Parse(text1Speed.Text), int.Parse(text2Speed.Text)); + } + } + + private void setDistance_Click(object sender, EventArgs e) + { + if (text1Distance.Text != "" && text2Distance.Text != "") + { + dg.Distance = new ValueSetting(randomDistance.Checked, int.Parse(text1Distance.Text), int.Parse(text2Distance.Text)); + } + } + + private void setPower_Click(object sender, EventArgs e) + { + if (text1Power.Text != "" && text2Power.Text != "") + { + dg.Power = new ValueSetting(randomPower.Checked, int.Parse(text1Power.Text), int.Parse(text2Power.Text)); + } + } + + private void setEnergy_Click(object sender, EventArgs e) + { + if (text1Energy.Text != "" && text2Energy.Text != "") + { + dg.Energy = new ValueSetting(randomEnergy.Checked, int.Parse(text1Energy.Text), int.Parse(text2Energy.Text)); + } + } + + private void setActualPower_Click(object sender, EventArgs e) + { + if (text1ActualPower.Text != "" && text2ActualPower.Text != "") + { + dg.ActualPower = new ValueSetting(randomActualPower.Checked, int.Parse(text1ActualPower.Text), int.Parse(text2ActualPower.Text)); + } + } } }