diff --git a/ErgometerSimulator/ErgometerSimulator/CommandParser.cs b/ErgometerSimulator/ErgometerSimulator/CommandParser.cs index 7b4b1f7..0180f51 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 new file mode 100644 index 0000000..e919849 --- /dev/null +++ b/ErgometerSimulator/ErgometerSimulator/DataGenerator.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ErgometerSimulator +{ + class DataGenerator + { + Random rand; + + public ValueSetting HeartBeat { get; set; } + public ValueSetting RPM { get; set; } + public ValueSetting Speed { get; set; } + public ValueSetting Distance { get; set; } + public ValueSetting Power { get; set; } + public ValueSetting Energy { get; set; } + public ValueSetting ActualPower { get; set; } + public ValueSetting Time { get; set; } + + private double lastTime; + + public DataGenerator() + { + rand = new Random(); + HeartBeat = new ValueSetting(false, 0, 0); + RPM = new ValueSetting(false, 0, 0); + Speed = new ValueSetting(false, 0, 0); + Distance = new ValueSetting(false, 0, 0); + Power = new ValueSetting(false, 0, 0); + Energy = new ValueSetting(false, 0, 0); + ActualPower = new ValueSetting(false, 0, 0); + Time = new ValueSetting(false, 0, 0); + + lastTime = (DateTime.Now - DateTime.Parse("1/1/1870 0:0:0")).TotalMilliseconds; + } + + + + public void Update() + { + //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 ((DateTime.Now - DateTime.Parse("1/1/1870 0:0:0")).TotalMilliseconds - lastTime > 1000) + { + if (Time.random) // false = up; true = down; + { + if (Time.value1 - 1 <= 0) + Time.value1 = 0; + else + Time.value1 = Time.value1 - 1; + + Time.currentvalue = Time.value1; + } + else + { + Time.value1 = Time.value1 + 1; + Time.currentvalue = Time.value1; + } + + lastTime = (DateTime.Now - DateTime.Parse("1/1/1870 0:0:0")).TotalMilliseconds; + } + } + } +} diff --git a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.Designer.cs b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.Designer.cs index 9d50884..847bc62 100644 --- a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.Designer.cs +++ b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.Designer.cs @@ -30,13 +30,62 @@ namespace ErgometerSimulator /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); this.connectButton = new System.Windows.Forms.Button(); this.ComPortBox = new System.Windows.Forms.ComboBox(); + this.labelHeartBeat = new System.Windows.Forms.Label(); + this.randomHeartBeat = new System.Windows.Forms.CheckBox(); + this.text1HeartBeat = new System.Windows.Forms.TextBox(); + this.text2HeartBeat = new System.Windows.Forms.TextBox(); + this.setHeartBeat = new System.Windows.Forms.Button(); + this.setRPM = new System.Windows.Forms.Button(); + this.text2RPM = new System.Windows.Forms.TextBox(); + this.text1RPM = new System.Windows.Forms.TextBox(); + this.randomRPM = new System.Windows.Forms.CheckBox(); + this.labelRPM = new System.Windows.Forms.Label(); + this.setSpeed = new System.Windows.Forms.Button(); + this.text2Speed = new System.Windows.Forms.TextBox(); + this.text1Speed = new System.Windows.Forms.TextBox(); + this.randomSpeed = new System.Windows.Forms.CheckBox(); + this.labelSpeed = new System.Windows.Forms.Label(); + this.setDistance = new System.Windows.Forms.Button(); + this.text2Distance = new System.Windows.Forms.TextBox(); + this.text1Distance = new System.Windows.Forms.TextBox(); + this.randomDistance = new System.Windows.Forms.CheckBox(); + this.labelDistance = new System.Windows.Forms.Label(); + this.setPower = new System.Windows.Forms.Button(); + this.text2Power = new System.Windows.Forms.TextBox(); + this.text1Power = new System.Windows.Forms.TextBox(); + this.randomPower = new System.Windows.Forms.CheckBox(); + this.labelPower = new System.Windows.Forms.Label(); + this.setEnergy = new System.Windows.Forms.Button(); + this.text2Energy = new System.Windows.Forms.TextBox(); + this.text1Energy = new System.Windows.Forms.TextBox(); + this.randomEnergy = new System.Windows.Forms.CheckBox(); + this.labelEnergy = new System.Windows.Forms.Label(); + this.setActualPower = new System.Windows.Forms.Button(); + this.text2ActualPower = new System.Windows.Forms.TextBox(); + this.text1ActualPower = new System.Windows.Forms.TextBox(); + this.randomActualPower = new System.Windows.Forms.CheckBox(); + this.labelActualPower = new System.Windows.Forms.Label(); + this.setTime = new System.Windows.Forms.Button(); + this.text1Time = new System.Windows.Forms.TextBox(); + this.countTime = new System.Windows.Forms.CheckBox(); + this.labelTime = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.labelCurrentTime = new System.Windows.Forms.Label(); + this.updateTimer = new System.Windows.Forms.Timer(this.components); this.SuspendLayout(); // // connectButton // - this.connectButton.Location = new System.Drawing.Point(139, 12); + this.connectButton.Location = new System.Drawing.Point(151, 305); this.connectButton.Name = "connectButton"; this.connectButton.Size = new System.Drawing.Size(101, 27); this.connectButton.TabIndex = 0; @@ -48,23 +97,523 @@ namespace ErgometerSimulator // this.ComPortBox.FormattingEnabled = true; this.ComPortBox.Items.AddRange(new object[] { - "COM5", - "COM4"}); - this.ComPortBox.Location = new System.Drawing.Point(12, 12); + "COM8", + "COM9"}); + this.ComPortBox.Location = new System.Drawing.Point(15, 308); this.ComPortBox.Name = "ComPortBox"; this.ComPortBox.Size = new System.Drawing.Size(121, 24); this.ComPortBox.TabIndex = 1; // + // labelHeartBeat + // + this.labelHeartBeat.AutoSize = true; + this.labelHeartBeat.Location = new System.Drawing.Point(12, 27); + this.labelHeartBeat.Name = "labelHeartBeat"; + this.labelHeartBeat.Size = new System.Drawing.Size(71, 17); + this.labelHeartBeat.TabIndex = 2; + this.labelHeartBeat.Text = "Heartbeat"; + // + // randomHeartBeat + // + this.randomHeartBeat.AutoSize = true; + this.randomHeartBeat.Enabled = false; + this.randomHeartBeat.Location = new System.Drawing.Point(114, 28); + this.randomHeartBeat.Name = "randomHeartBeat"; + this.randomHeartBeat.Size = new System.Drawing.Size(18, 17); + this.randomHeartBeat.TabIndex = 3; + this.randomHeartBeat.UseVisualStyleBackColor = true; + this.randomHeartBeat.CheckedChanged += new System.EventHandler(this.randomHeartBeat_CheckedChanged); + // + // text1HeartBeat + // + this.text1HeartBeat.Enabled = false; + this.text1HeartBeat.Location = new System.Drawing.Point(151, 24); + this.text1HeartBeat.Name = "text1HeartBeat"; + this.text1HeartBeat.Size = new System.Drawing.Size(100, 22); + this.text1HeartBeat.TabIndex = 4; + // + // text2HeartBeat + // + this.text2HeartBeat.Enabled = false; + this.text2HeartBeat.Location = new System.Drawing.Point(257, 24); + this.text2HeartBeat.Name = "text2HeartBeat"; + this.text2HeartBeat.Size = new System.Drawing.Size(100, 22); + this.text2HeartBeat.TabIndex = 5; + // + // setHeartBeat + // + this.setHeartBeat.Enabled = false; + this.setHeartBeat.Location = new System.Drawing.Point(363, 24); + this.setHeartBeat.Name = "setHeartBeat"; + this.setHeartBeat.Size = new System.Drawing.Size(75, 23); + this.setHeartBeat.TabIndex = 6; + this.setHeartBeat.Text = "Set"; + this.setHeartBeat.UseVisualStyleBackColor = true; + this.setHeartBeat.Click += new System.EventHandler(this.setHeartBeat_Click); + // + // setRPM + // + this.setRPM.Enabled = false; + this.setRPM.Location = new System.Drawing.Point(363, 50); + this.setRPM.Name = "setRPM"; + this.setRPM.Size = new System.Drawing.Size(75, 23); + this.setRPM.TabIndex = 11; + this.setRPM.Text = "Set"; + this.setRPM.UseVisualStyleBackColor = true; + this.setRPM.Click += new System.EventHandler(this.setRPM_Click); + // + // text2RPM + // + this.text2RPM.Enabled = false; + this.text2RPM.Location = new System.Drawing.Point(257, 50); + this.text2RPM.Name = "text2RPM"; + this.text2RPM.Size = new System.Drawing.Size(100, 22); + this.text2RPM.TabIndex = 10; + // + // text1RPM + // + this.text1RPM.Enabled = false; + this.text1RPM.Location = new System.Drawing.Point(151, 50); + this.text1RPM.Name = "text1RPM"; + this.text1RPM.Size = new System.Drawing.Size(100, 22); + this.text1RPM.TabIndex = 9; + // + // randomRPM + // + this.randomRPM.AutoSize = true; + this.randomRPM.Enabled = false; + this.randomRPM.Location = new System.Drawing.Point(114, 54); + this.randomRPM.Name = "randomRPM"; + this.randomRPM.Size = new System.Drawing.Size(18, 17); + this.randomRPM.TabIndex = 8; + this.randomRPM.UseVisualStyleBackColor = true; + this.randomRPM.CheckedChanged += new System.EventHandler(this.randomRPM_CheckedChanged); + // + // labelRPM + // + this.labelRPM.AutoSize = true; + this.labelRPM.Location = new System.Drawing.Point(12, 53); + this.labelRPM.Name = "labelRPM"; + this.labelRPM.Size = new System.Drawing.Size(38, 17); + this.labelRPM.TabIndex = 7; + this.labelRPM.Text = "RPM"; + // + // setSpeed + // + this.setSpeed.Enabled = false; + this.setSpeed.Location = new System.Drawing.Point(363, 78); + this.setSpeed.Name = "setSpeed"; + this.setSpeed.Size = new System.Drawing.Size(75, 23); + this.setSpeed.TabIndex = 16; + this.setSpeed.Text = "Set"; + this.setSpeed.UseVisualStyleBackColor = true; + this.setSpeed.Click += new System.EventHandler(this.setSpeed_Click); + // + // text2Speed + // + this.text2Speed.Enabled = false; + this.text2Speed.Location = new System.Drawing.Point(257, 78); + this.text2Speed.Name = "text2Speed"; + this.text2Speed.Size = new System.Drawing.Size(100, 22); + this.text2Speed.TabIndex = 15; + // + // text1Speed + // + this.text1Speed.Enabled = false; + this.text1Speed.Location = new System.Drawing.Point(151, 78); + this.text1Speed.Name = "text1Speed"; + this.text1Speed.Size = new System.Drawing.Size(100, 22); + this.text1Speed.TabIndex = 14; + // + // randomSpeed + // + this.randomSpeed.AutoSize = true; + this.randomSpeed.Enabled = false; + this.randomSpeed.Location = new System.Drawing.Point(114, 82); + this.randomSpeed.Name = "randomSpeed"; + this.randomSpeed.Size = new System.Drawing.Size(18, 17); + this.randomSpeed.TabIndex = 13; + this.randomSpeed.UseVisualStyleBackColor = true; + this.randomSpeed.CheckedChanged += new System.EventHandler(this.randomSpeed_CheckedChanged); + // + // labelSpeed + // + this.labelSpeed.AutoSize = true; + this.labelSpeed.Location = new System.Drawing.Point(12, 81); + this.labelSpeed.Name = "labelSpeed"; + this.labelSpeed.Size = new System.Drawing.Size(49, 17); + this.labelSpeed.TabIndex = 12; + this.labelSpeed.Text = "Speed"; + // + // setDistance + // + this.setDistance.Enabled = false; + this.setDistance.Location = new System.Drawing.Point(363, 108); + this.setDistance.Name = "setDistance"; + this.setDistance.Size = new System.Drawing.Size(75, 23); + this.setDistance.TabIndex = 21; + this.setDistance.Text = "Set"; + this.setDistance.UseVisualStyleBackColor = true; + this.setDistance.Click += new System.EventHandler(this.setDistance_Click); + // + // text2Distance + // + this.text2Distance.Enabled = false; + this.text2Distance.Location = new System.Drawing.Point(257, 108); + this.text2Distance.Name = "text2Distance"; + this.text2Distance.Size = new System.Drawing.Size(100, 22); + this.text2Distance.TabIndex = 20; + // + // text1Distance + // + this.text1Distance.Enabled = false; + this.text1Distance.Location = new System.Drawing.Point(151, 108); + this.text1Distance.Name = "text1Distance"; + this.text1Distance.Size = new System.Drawing.Size(100, 22); + this.text1Distance.TabIndex = 19; + // + // randomDistance + // + this.randomDistance.AutoSize = true; + this.randomDistance.Enabled = false; + this.randomDistance.Location = new System.Drawing.Point(114, 112); + this.randomDistance.Name = "randomDistance"; + this.randomDistance.Size = new System.Drawing.Size(18, 17); + this.randomDistance.TabIndex = 18; + this.randomDistance.UseVisualStyleBackColor = true; + this.randomDistance.CheckedChanged += new System.EventHandler(this.randomDistance_CheckedChanged); + // + // labelDistance + // + this.labelDistance.AutoSize = true; + this.labelDistance.Location = new System.Drawing.Point(12, 111); + this.labelDistance.Name = "labelDistance"; + this.labelDistance.Size = new System.Drawing.Size(63, 17); + this.labelDistance.TabIndex = 17; + this.labelDistance.Text = "Distance"; + // + // setPower + // + this.setPower.Enabled = false; + this.setPower.Location = new System.Drawing.Point(363, 137); + this.setPower.Name = "setPower"; + this.setPower.Size = new System.Drawing.Size(75, 23); + this.setPower.TabIndex = 26; + this.setPower.Text = "Set"; + this.setPower.UseVisualStyleBackColor = true; + this.setPower.Click += new System.EventHandler(this.setPower_Click); + // + // text2Power + // + this.text2Power.Enabled = false; + this.text2Power.Location = new System.Drawing.Point(257, 137); + this.text2Power.Name = "text2Power"; + this.text2Power.Size = new System.Drawing.Size(100, 22); + this.text2Power.TabIndex = 25; + // + // text1Power + // + this.text1Power.Enabled = false; + this.text1Power.Location = new System.Drawing.Point(151, 137); + this.text1Power.Name = "text1Power"; + this.text1Power.Size = new System.Drawing.Size(100, 22); + this.text1Power.TabIndex = 24; + // + // randomPower + // + this.randomPower.AutoSize = true; + this.randomPower.Enabled = false; + this.randomPower.Location = new System.Drawing.Point(114, 141); + this.randomPower.Name = "randomPower"; + this.randomPower.Size = new System.Drawing.Size(18, 17); + this.randomPower.TabIndex = 23; + this.randomPower.UseVisualStyleBackColor = true; + this.randomPower.CheckedChanged += new System.EventHandler(this.randomPower_CheckedChanged); + // + // labelPower + // + this.labelPower.AutoSize = true; + this.labelPower.Location = new System.Drawing.Point(12, 140); + this.labelPower.Name = "labelPower"; + this.labelPower.Size = new System.Drawing.Size(47, 17); + this.labelPower.TabIndex = 22; + this.labelPower.Text = "Power"; + // + // setEnergy + // + this.setEnergy.Enabled = false; + this.setEnergy.Location = new System.Drawing.Point(363, 166); + this.setEnergy.Name = "setEnergy"; + this.setEnergy.Size = new System.Drawing.Size(75, 23); + this.setEnergy.TabIndex = 31; + this.setEnergy.Text = "Set"; + this.setEnergy.UseVisualStyleBackColor = true; + this.setEnergy.Click += new System.EventHandler(this.setEnergy_Click); + // + // text2Energy + // + this.text2Energy.Enabled = false; + this.text2Energy.Location = new System.Drawing.Point(257, 166); + this.text2Energy.Name = "text2Energy"; + this.text2Energy.Size = new System.Drawing.Size(100, 22); + this.text2Energy.TabIndex = 30; + // + // text1Energy + // + this.text1Energy.Enabled = false; + this.text1Energy.Location = new System.Drawing.Point(151, 166); + this.text1Energy.Name = "text1Energy"; + this.text1Energy.Size = new System.Drawing.Size(100, 22); + this.text1Energy.TabIndex = 29; + // + // randomEnergy + // + this.randomEnergy.AutoSize = true; + this.randomEnergy.Enabled = false; + this.randomEnergy.Location = new System.Drawing.Point(114, 170); + this.randomEnergy.Name = "randomEnergy"; + this.randomEnergy.Size = new System.Drawing.Size(18, 17); + this.randomEnergy.TabIndex = 28; + this.randomEnergy.UseVisualStyleBackColor = true; + this.randomEnergy.CheckedChanged += new System.EventHandler(this.randomEnergy_CheckedChanged); + // + // labelEnergy + // + this.labelEnergy.AutoSize = true; + this.labelEnergy.Location = new System.Drawing.Point(12, 169); + this.labelEnergy.Name = "labelEnergy"; + this.labelEnergy.Size = new System.Drawing.Size(53, 17); + this.labelEnergy.TabIndex = 27; + this.labelEnergy.Text = "Energy"; + // + // setActualPower + // + this.setActualPower.Enabled = false; + this.setActualPower.Location = new System.Drawing.Point(363, 196); + this.setActualPower.Name = "setActualPower"; + this.setActualPower.Size = new System.Drawing.Size(75, 23); + this.setActualPower.TabIndex = 36; + this.setActualPower.Text = "Set"; + this.setActualPower.UseVisualStyleBackColor = true; + this.setActualPower.Click += new System.EventHandler(this.setActualPower_Click); + // + // text2ActualPower + // + this.text2ActualPower.Enabled = false; + this.text2ActualPower.Location = new System.Drawing.Point(257, 196); + this.text2ActualPower.Name = "text2ActualPower"; + this.text2ActualPower.Size = new System.Drawing.Size(100, 22); + this.text2ActualPower.TabIndex = 35; + // + // text1ActualPower + // + this.text1ActualPower.Enabled = false; + this.text1ActualPower.Location = new System.Drawing.Point(151, 196); + this.text1ActualPower.Name = "text1ActualPower"; + this.text1ActualPower.Size = new System.Drawing.Size(100, 22); + this.text1ActualPower.TabIndex = 34; + // + // randomActualPower + // + this.randomActualPower.AutoSize = true; + this.randomActualPower.Enabled = false; + this.randomActualPower.Location = new System.Drawing.Point(114, 200); + this.randomActualPower.Name = "randomActualPower"; + this.randomActualPower.Size = new System.Drawing.Size(18, 17); + this.randomActualPower.TabIndex = 33; + this.randomActualPower.UseVisualStyleBackColor = true; + this.randomActualPower.CheckedChanged += new System.EventHandler(this.randomActualPower_CheckedChanged); + // + // labelActualPower + // + this.labelActualPower.AutoSize = true; + this.labelActualPower.Location = new System.Drawing.Point(12, 199); + this.labelActualPower.Name = "labelActualPower"; + this.labelActualPower.Size = new System.Drawing.Size(90, 17); + this.labelActualPower.TabIndex = 32; + this.labelActualPower.Text = "Actual Power"; + // + // setTime + // + this.setTime.Enabled = false; + this.setTime.Location = new System.Drawing.Point(363, 262); + this.setTime.Name = "setTime"; + this.setTime.Size = new System.Drawing.Size(75, 23); + this.setTime.TabIndex = 41; + this.setTime.Text = "Set"; + this.setTime.UseVisualStyleBackColor = true; + this.setTime.Click += new System.EventHandler(this.setTime_Click); + // + // text1Time + // + this.text1Time.Enabled = false; + this.text1Time.Location = new System.Drawing.Point(151, 262); + this.text1Time.Name = "text1Time"; + this.text1Time.Size = new System.Drawing.Size(101, 22); + this.text1Time.TabIndex = 39; + // + // countTime + // + this.countTime.AutoSize = true; + this.countTime.Enabled = false; + this.countTime.Location = new System.Drawing.Point(77, 263); + this.countTime.Name = "countTime"; + this.countTime.Size = new System.Drawing.Size(65, 21); + this.countTime.TabIndex = 38; + this.countTime.Text = "Down"; + this.countTime.UseVisualStyleBackColor = true; + // + // labelTime + // + this.labelTime.AutoSize = true; + this.labelTime.Location = new System.Drawing.Point(12, 265); + this.labelTime.Name = "labelTime"; + this.labelTime.Size = new System.Drawing.Size(39, 17); + this.labelTime.TabIndex = 37; + this.labelTime.Text = "Time"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label9.Location = new System.Drawing.Point(12, 4); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(49, 17); + this.label9.TabIndex = 42; + this.label9.Text = "Name"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label10.Location = new System.Drawing.Point(75, 4); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(67, 17); + this.label10.TabIndex = 43; + this.label10.Text = "Random"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label11.Location = new System.Drawing.Point(148, 4); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(33, 17); + this.label11.TabIndex = 44; + this.label11.Text = "Min"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label12.Location = new System.Drawing.Point(254, 4); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(36, 17); + this.label12.TabIndex = 45; + this.label12.Text = "Max"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.Location = new System.Drawing.Point(148, 239); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(49, 17); + this.label2.TabIndex = 48; + this.label2.Text = "Value"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(75, 239); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(50, 17); + this.label3.TabIndex = 47; + this.label3.Text = "Count"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(12, 239); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(49, 17); + this.label4.TabIndex = 46; + this.label4.Text = "Name"; + // + // labelCurrentTime + // + this.labelCurrentTime.AutoSize = true; + this.labelCurrentTime.Location = new System.Drawing.Point(258, 264); + this.labelCurrentTime.Name = "labelCurrentTime"; + this.labelCurrentTime.Size = new System.Drawing.Size(44, 17); + this.labelCurrentTime.TabIndex = 49; + this.labelCurrentTime.Text = "00:00"; + // + // updateTimer + // + this.updateTimer.Interval = 200; + this.updateTimer.Tick += new System.EventHandler(this.updateTimer_Tick); + // // ErgometerSimulator // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(351, 87); + this.ClientSize = new System.Drawing.Size(452, 344); + this.Controls.Add(this.labelCurrentTime); + this.Controls.Add(this.label2); + this.Controls.Add(this.label3); + this.Controls.Add(this.label4); + this.Controls.Add(this.label12); + this.Controls.Add(this.label11); + this.Controls.Add(this.label10); + this.Controls.Add(this.label9); + this.Controls.Add(this.setTime); + this.Controls.Add(this.text1Time); + this.Controls.Add(this.countTime); + this.Controls.Add(this.labelTime); + this.Controls.Add(this.setActualPower); + this.Controls.Add(this.text2ActualPower); + this.Controls.Add(this.text1ActualPower); + this.Controls.Add(this.randomActualPower); + this.Controls.Add(this.labelActualPower); + this.Controls.Add(this.setEnergy); + this.Controls.Add(this.text2Energy); + this.Controls.Add(this.text1Energy); + this.Controls.Add(this.randomEnergy); + this.Controls.Add(this.labelEnergy); + this.Controls.Add(this.setPower); + this.Controls.Add(this.text2Power); + this.Controls.Add(this.text1Power); + this.Controls.Add(this.randomPower); + this.Controls.Add(this.labelPower); + this.Controls.Add(this.setDistance); + this.Controls.Add(this.text2Distance); + this.Controls.Add(this.text1Distance); + this.Controls.Add(this.randomDistance); + this.Controls.Add(this.labelDistance); + this.Controls.Add(this.setSpeed); + this.Controls.Add(this.text2Speed); + this.Controls.Add(this.text1Speed); + this.Controls.Add(this.randomSpeed); + this.Controls.Add(this.labelSpeed); + this.Controls.Add(this.setRPM); + this.Controls.Add(this.text2RPM); + this.Controls.Add(this.text1RPM); + this.Controls.Add(this.randomRPM); + this.Controls.Add(this.labelRPM); + this.Controls.Add(this.setHeartBeat); + this.Controls.Add(this.text2HeartBeat); + this.Controls.Add(this.text1HeartBeat); + this.Controls.Add(this.randomHeartBeat); + this.Controls.Add(this.labelHeartBeat); this.Controls.Add(this.ComPortBox); this.Controls.Add(this.connectButton); this.Name = "ErgometerSimulator"; this.Text = "Ergometer Simulator"; this.ResumeLayout(false); + this.PerformLayout(); } @@ -72,6 +621,54 @@ namespace ErgometerSimulator private System.Windows.Forms.Button connectButton; private System.Windows.Forms.ComboBox ComPortBox; + private System.Windows.Forms.Label labelHeartBeat; + private System.Windows.Forms.CheckBox randomHeartBeat; + private System.Windows.Forms.TextBox text1HeartBeat; + private System.Windows.Forms.TextBox text2HeartBeat; + private System.Windows.Forms.Button setHeartBeat; + private System.Windows.Forms.Button setRPM; + private System.Windows.Forms.TextBox text2RPM; + private System.Windows.Forms.TextBox text1RPM; + private System.Windows.Forms.CheckBox randomRPM; + private System.Windows.Forms.Label labelRPM; + private System.Windows.Forms.Button setSpeed; + private System.Windows.Forms.TextBox text2Speed; + private System.Windows.Forms.TextBox text1Speed; + private System.Windows.Forms.CheckBox randomSpeed; + private System.Windows.Forms.Label labelSpeed; + private System.Windows.Forms.Button setDistance; + private System.Windows.Forms.TextBox text2Distance; + private System.Windows.Forms.TextBox text1Distance; + private System.Windows.Forms.CheckBox randomDistance; + private System.Windows.Forms.Label labelDistance; + private System.Windows.Forms.Button setPower; + private System.Windows.Forms.TextBox text2Power; + private System.Windows.Forms.TextBox text1Power; + private System.Windows.Forms.CheckBox randomPower; + private System.Windows.Forms.Label labelPower; + private System.Windows.Forms.Button setEnergy; + private System.Windows.Forms.TextBox text2Energy; + private System.Windows.Forms.TextBox text1Energy; + private System.Windows.Forms.CheckBox randomEnergy; + private System.Windows.Forms.Label labelEnergy; + private System.Windows.Forms.Button setActualPower; + private System.Windows.Forms.TextBox text2ActualPower; + private System.Windows.Forms.TextBox text1ActualPower; + private System.Windows.Forms.CheckBox randomActualPower; + private System.Windows.Forms.Label labelActualPower; + private System.Windows.Forms.Button setTime; + private System.Windows.Forms.TextBox text1Time; + private System.Windows.Forms.CheckBox countTime; + private System.Windows.Forms.Label labelTime; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label labelCurrentTime; + private System.Windows.Forms.Timer updateTimer; } } diff --git a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.cs b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.cs index 375c94b..4fb89f7 100644 --- a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.cs +++ b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.cs @@ -15,11 +15,15 @@ namespace ErgometerSimulator public partial class ErgometerSimulator : Form { 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) @@ -29,7 +33,8 @@ namespace ErgometerSimulator if (comPort.Connect(ComPortBox.Text)) { connectButton.Text = "Disconnect"; - ComPortBox.Enabled = false; + ToggleAllComponents(true); + updateTimer.Start(); } } else @@ -37,18 +42,280 @@ namespace ErgometerSimulator if (comPort.Disconnect()) { connectButton.Text = "Connect"; - ComPortBox.Enabled = true; - + ToggleAllComponents(false); + updateTimer.Stop(); } } } 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); } + + private void updateTimer_Tick(object sender, EventArgs e) + { + labelCurrentTime.Text = dg.Time.currentvalue / 60 + ":" + dg.Time.currentvalue % 60; + dg.Update(); + } + + private void setHeartBeat_Click(object sender, EventArgs e) + { + if(text1HeartBeat.Text != "" && (text2HeartBeat.Text != "" || !randomHeartBeat.Checked)) + { + dg.HeartBeat = new ValueSetting(randomHeartBeat.Checked, int.Parse(text1HeartBeat.Text), (text2HeartBeat.Enabled ? int.Parse(text2HeartBeat.Text) : 0)); + text1HeartBeat.Text = ""; + text2HeartBeat.Text = ""; + } + } + + private void setRPM_Click(object sender, EventArgs e) + { + if (text1RPM.Text != "" && (text2RPM.Text != "" || !randomRPM.Checked)) + { + dg.RPM = new ValueSetting(randomRPM.Checked, int.Parse(text1RPM.Text), (text2RPM.Enabled ? int.Parse(text2RPM.Text) : 0)); + text1RPM.Text = ""; + text2RPM.Text = ""; + } + } + + private void setSpeed_Click(object sender, EventArgs e) + { + if (text1Speed.Text != "" && (text2Speed.Text != "" || !randomSpeed.Checked)) + { + dg.Speed = new ValueSetting(randomSpeed.Checked, int.Parse(text1Speed.Text), (text2Speed.Enabled ? int.Parse(text2Speed.Text) : 0)); + text1Speed.Text = ""; + text2Speed.Text = ""; + } + } + + private void setDistance_Click(object sender, EventArgs e) + { + if (text1Distance.Text != "" && (text2Distance.Text != "" || !randomDistance.Checked)) + { + dg.Distance = new ValueSetting(randomDistance.Checked, int.Parse(text1Distance.Text), (text2Distance.Enabled ? int.Parse(text2Distance.Text) : 0)); + text1Distance.Text = ""; + text2Distance.Text = ""; + } + } + + private void setPower_Click(object sender, EventArgs e) + { + if (text1Power.Text != "" && (text2Power.Text != "" || !randomPower.Checked)) + { + dg.Power = new ValueSetting(randomPower.Checked, int.Parse(text1Power.Text), (text2Power.Enabled ? int.Parse(text2Power.Text) : 0)); + text1Power.Text = ""; + text2Power.Text = ""; + } + } + + private void setEnergy_Click(object sender, EventArgs e) + { + if (text1Energy.Text != "" && (text2Energy.Text != "" || !randomEnergy.Checked)) + { + dg.Energy = new ValueSetting(randomEnergy.Checked, int.Parse(text1Energy.Text), (text2Energy.Enabled ? int.Parse(text2Energy.Text) : 0)); + text1Energy.Text = ""; + text2Energy.Text = ""; + } + } + + private void setActualPower_Click(object sender, EventArgs e) + { + if (text1ActualPower.Text != "" && (text2ActualPower.Text != "" || !randomActualPower.Checked)) + { + dg.ActualPower = new ValueSetting(randomActualPower.Checked, int.Parse(text1ActualPower.Text), (text2ActualPower.Enabled ? int.Parse(text2ActualPower.Text) : 0)); + text1ActualPower.Text = ""; + text2ActualPower.Text = ""; + } + } + + private void setTime_Click(object sender, EventArgs e) + { + if(text1Time.Text != "") + { + string[] temp = text1Time.Text.Split(':'); + if(temp.Length == 2) + { + int minutes = int.Parse(temp[0]); + int seconds = int.Parse(temp[1]) + (minutes * 60); + dg.Time = new ValueSetting(countTime.Checked, seconds, 0); + text1Time.Text = ""; + } + + } + } + + private void ToggleAllComponents(bool enabled) + { + //Random checkboxes + randomActualPower.Enabled = enabled; + randomActualPower.Checked = false; + + randomDistance.Enabled = enabled; + randomDistance.Checked = false; + + randomEnergy.Enabled = enabled; + randomEnergy.Checked = false; + + randomHeartBeat.Enabled = enabled; + randomHeartBeat.Checked = false; + + randomRPM.Enabled = enabled; + randomRPM.Checked = false; + + randomSpeed.Enabled = enabled; + randomSpeed.Checked = false; + + randomPower.Enabled = enabled; + randomPower.Checked = false; + + countTime.Enabled = enabled; + countTime.Checked = false; + + + //First text boxes + text1ActualPower.Enabled = enabled; + text1ActualPower.Text = ""; + + text1Distance.Enabled = enabled; + text1Distance.Text = ""; + + text1Energy.Enabled = enabled; + text1Energy.Text = ""; + + text1HeartBeat.Enabled = enabled; + text1HeartBeat.Text = ""; + + text1Power.Enabled = enabled; + text1Power.Text = ""; + + text1RPM.Enabled = enabled; + text1RPM.Text = ""; + + text1Speed.Enabled = enabled; + text1Speed.Text = ""; + + text1Time.Enabled = enabled; + text1Time.Text = ""; + + + //Second text boxes + text2ActualPower.Enabled = false; + text2ActualPower.Text = ""; + + text2Distance.Enabled = false; + text2Distance.Text = ""; + + text2Energy.Enabled = false; + text2Energy.Text = ""; + + text2HeartBeat.Enabled = false; + text2HeartBeat.Text = ""; + + text2Power.Enabled = false; + text2Power.Text = ""; + + text2RPM.Enabled = false; + text2RPM.Text = ""; + + text2Speed.Enabled = false; + text2Speed.Text = ""; + + labelCurrentTime.Text = "00:00"; + + + //Buttons + setHeartBeat.Enabled = enabled; + setDistance.Enabled = enabled; + setPower.Enabled = enabled; + setActualPower.Enabled = enabled; + setTime.Enabled = enabled; + setRPM.Enabled = enabled; + setEnergy.Enabled = enabled; + setSpeed.Enabled = enabled; + + //ComPort Box + ComPortBox.Enabled = !enabled; + } + + private void randomHeartBeat_CheckedChanged(object sender, EventArgs e) + { + if(randomHeartBeat.Checked) + text2HeartBeat.Enabled = true; + else + { + text2HeartBeat.Enabled = false; + text2HeartBeat.Text = ""; + } + } + + private void randomRPM_CheckedChanged(object sender, EventArgs e) + { + if (randomRPM.Checked) + text2RPM.Enabled = true; + else + { + text2RPM.Enabled = false; + text2RPM.Text = ""; + } + } + + private void randomSpeed_CheckedChanged(object sender, EventArgs e) + { + if (randomSpeed.Checked) + text2Speed.Enabled = true; + else + { + text2Speed.Enabled = false; + text2Speed.Text = ""; + } + } + + private void randomDistance_CheckedChanged(object sender, EventArgs e) + { + if (randomDistance.Checked) + text2Distance.Enabled = true; + else + { + text2Distance.Enabled = false; + text2Distance.Text = ""; + } + } + + private void randomPower_CheckedChanged(object sender, EventArgs e) + { + if (randomPower.Checked) + text2Power.Enabled = true; + else + { + text2Power.Enabled = false; + text2Power.Text = ""; + } + } + + private void randomEnergy_CheckedChanged(object sender, EventArgs e) + { + if (randomEnergy.Checked) + text2Energy.Enabled = true; + else + { + text2Energy.Enabled = false; + text2Energy.Text = ""; + } + } + + private void randomActualPower_CheckedChanged(object sender, EventArgs e) + { + if (randomActualPower.Checked) + text2ActualPower.Enabled = true; + else + { + text2ActualPower.Enabled = false; + text2ActualPower.Text = ""; + } + } } } diff --git a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.csproj b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.csproj index 5e97215..3e595e1 100644 --- a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.csproj +++ b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.csproj @@ -48,6 +48,7 @@ + Form @@ -56,6 +57,7 @@ + ErgometerSimulator.cs diff --git a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.resx b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.resx index 1af7de1..711e1bf 100644 --- a/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.resx +++ b/ErgometerSimulator/ErgometerSimulator/ErgometerSimulator.resx @@ -117,4 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + \ No newline at end of file diff --git a/ErgometerSimulator/ErgometerSimulator/ValueSetting.cs b/ErgometerSimulator/ErgometerSimulator/ValueSetting.cs new file mode 100644 index 0000000..541a6a4 --- /dev/null +++ b/ErgometerSimulator/ErgometerSimulator/ValueSetting.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ErgometerSimulator +{ + class ValueSetting + { + public bool random { get; } + public int value1 { get; set; } + public int value2 { get; } + public int currentvalue { get; set; } + + public ValueSetting(bool random, int value1, int value2) + { + this.random = random; + this.value1 = value1; + this.value2 = value2; + this.currentvalue = 0; + } + + public override string ToString() + { + string str = ""; + str += random + "|"; + str += value1 + "|"; + str += value2 + "|"; + str += currentvalue; + return str; + } + + } +}