diff --git a/Models/VariablesModel.cs b/Models/VariablesModel.cs new file mode 100644 index 0000000..10f9690 --- /dev/null +++ b/Models/VariablesModel.cs @@ -0,0 +1,9 @@ +namespace TestingRoom_NN_Kajk_UI.Models +{ + public class VariablesModel + { + public string Name { get; set; } + public string Value { get; set; } + public bool IsDefault { get; set; } + } +} diff --git a/Pages/Counter.razor b/Pages/Counter.razor deleted file mode 100644 index 6186185..0000000 --- a/Pages/Counter.razor +++ /dev/null @@ -1,18 +0,0 @@ -@page "/variables" - -Counter - -

Counter

- -

Current count: @currentCount

- - - -@code { - private int currentCount = 0; - - private void IncrementCount() - { - currentCount++; - } -} diff --git a/Pages/Home.razor b/Pages/Home.razor index f144154..1700103 100644 --- a/Pages/Home.razor +++ b/Pages/Home.razor @@ -2,6 +2,7 @@ @using TestingRoom_NN_Kajk_UI.Models @inject HttpClient HttpClient +@implements IDisposable Control @@ -11,14 +12,14 @@
-

+

Žádané otáčky:

- +
@@ -30,7 +31,7 @@
-
+
@foreach (int i in RPM_Presets) @@ -39,7 +40,13 @@ }
-

+

+

+ +
+

Rychlost náběhu: @(Math.Round(RPM_Acceleration_speed * 1000, 0))

+ +

@@ -49,18 +56,23 @@ -@code{ +@code { string RPM_Actual_Variable_Name = "actual_rpm"; string RPM_Requested_Variable_Name = "requested_rpm"; string RPM_Max_Variable_Name = "max_rpm"; + string RPM_Acceleration_Variable_Name = "control_step_U"; float RPM_Actual = 0; float RPM_Max = 1900; float RPM_Requested = 0; List RPM_Presets = new() { 0, 1500, 1800 }; - private System.Timers.Timer RPM_Actual_Timer = new System.Timers.Timer(500); //actual RPM reader timer - private System.Timers.Timer RPM_Requested_Timer = new System.Timers.Timer(5000); //requested RPM reader timer + float RPM_Acceleration_speed = 0; + + private System.Timers.Timer? RPM_Actual_Timer = new System.Timers.Timer(500); //actual RPM reader timer + private System.Timers.Timer? RPM_Requested_Timer = new System.Timers.Timer(5000); //requested RPM reader timer + private System.Timers.Timer? RPM_Max_Timer = new System.Timers.Timer(10000); //max RPM reader timer + private System.Timers.Timer? RPM_Acceleration_Timer = new System.Timers.Timer(1000); //Acceleration RPM reader timer protected override void OnInitialized() { @@ -71,22 +83,42 @@ RPM_Actual_Timer.Elapsed += RequestActualRPM; RPM_Actual_Timer.Start(); + RequestRequestedRPM(null, null); + GetRPMMax(null, null); + GetRPMAcceleration(null, null); + //requested RPM request timer RPM_Requested_Timer.AutoReset = true; RPM_Requested_Timer.Elapsed += RequestRequestedRPM; RPM_Requested_Timer.Start(); + + //max RPM request timer + RPM_Max_Timer.AutoReset = true; + RPM_Max_Timer.Elapsed += GetRPMMax; + RPM_Max_Timer.Start(); + + //acceleration RPM request timer + RPM_Acceleration_Timer.AutoReset = true; + RPM_Acceleration_Timer.Elapsed += GetRPMAcceleration; + RPM_Acceleration_Timer.Start(); } - private void SetRPMRequested(int rpm) + private void SetRPMRequested(float rpm) { + if (RPM_Requested_Timer == null) + return; + RPM_Requested_Timer.Stop(); RPM_Requested = rpm; SetRPMRequested(); RPM_Requested_Timer.Start(); } - private void AddRPMRequested(int add) + private void AddRPMRequested(float add) { + if (RPM_Requested_Timer == null) + return; + RPM_Requested_Timer.Stop(); RPM_Requested += add; @@ -101,26 +133,79 @@ private async void RequestActualRPM(object? sender, System.Timers.ElapsedEventArgs e) { - //RPM_Actual = float.Parse(await HttpClient.GetStringAsync($"/api/variables/{RPM_Actual_Variable_Name}")); + string response = await HttpClient.GetStringAsync($"/api/variables/{RPM_Actual_Variable_Name}"); + if (float.TryParse(response.Replace("\"", "").Replace(".", ","), out float result)) + { + RPM_Actual = result; + } + else + { + RPM_Actual = -1; + } await InvokeAsync(StateHasChanged); } - private async void RequestRequestedRPM(object? sender, System.Timers.ElapsedEventArgs e) + private async void RequestRequestedRPM(object? sender, System.Timers.ElapsedEventArgs? e) { - //RPM_Requested = int.Parse(await HttpClient.GetStringAsync($"/api/variables/{RPM_Requested_Variable_Name}")); + RPM_Requested = int.Parse((await HttpClient.GetStringAsync($"/api/variables/{RPM_Requested_Variable_Name}")).Replace("\"", "").Replace(".", ",")); await InvokeAsync(StateHasChanged); } private async void SetRPMRequested() { - //await HttpClient.PostAsJsonAsync($"/api/variables/{RPM_Requested_Variable_Name}", new VariablePostModel { data = RPM_Requested.ToString(), Isdefault = false }); + await HttpClient.PostAsJsonAsync($"/api/variables/{RPM_Requested_Variable_Name}", new VariablePostModel { data = RPM_Requested.ToString(), Isdefault = false }); } - private async void GetRPMMax() + private async void GetRPMMax(object? sender, System.Timers.ElapsedEventArgs? e) { - //RPM_Max = int.Parse(await HttpClient.GetStringAsync($"/api/variables/{RPM_Requested_Variable_Name}")); + RPM_Max = float.Parse((await HttpClient.GetStringAsync($"/api/variables/{RPM_Max_Variable_Name}")).Replace("\"", "").Replace(".", ",")); await InvokeAsync(StateHasChanged); } + private async void PostRPMAcceleration(float value) + { + if (RPM_Acceleration_Timer == null) + return; + + RPM_Acceleration_Timer.Stop(); + + RPM_Acceleration_speed = value / 1000; + await InvokeAsync(StateHasChanged); + await HttpClient.PostAsJsonAsync($"/api/variables/{RPM_Acceleration_Variable_Name}", new VariablePostModel { data = RPM_Acceleration_speed.ToString().Replace(",", "."), Isdefault = false }); + RPM_Acceleration_Timer.Start(); + } + + private async void GetRPMAcceleration(object? sender, System.Timers.ElapsedEventArgs? e) + { + RPM_Acceleration_speed = float.Parse((await HttpClient.GetStringAsync($"/api/variables/{RPM_Acceleration_Variable_Name}")).Replace("\"", "").Replace(".", ",")); + } + + + + private bool disposed; + public void Dispose() + { + if (disposed) return; + + disposed = true; + + RPM_Actual_Timer.Stop(); + RPM_Actual_Timer.Dispose(); + RPM_Actual_Timer = null; + + RPM_Requested_Timer.Stop(); + RPM_Requested_Timer.Dispose(); + RPM_Requested_Timer = null; + + RPM_Max_Timer.Stop(); + RPM_Max_Timer.Dispose(); + RPM_Max_Timer = null; + + RPM_Acceleration_Timer.Stop(); + RPM_Acceleration_Timer.Dispose(); + RPM_Acceleration_Timer = null; + + this.Dispose(); + } } \ No newline at end of file diff --git a/Pages/Variables.razor b/Pages/Variables.razor new file mode 100644 index 0000000..947a1f0 --- /dev/null +++ b/Pages/Variables.razor @@ -0,0 +1,103 @@ +@page "/variables" + +@using Newtonsoft.Json +@using TestingRoom_NN_Kajk_UI.Models + +@inject HttpClient HttpClient + +Variables +
+
+ + + + + + + + + + + @foreach (VariablesModel s in VariableDetails) + { + + + + + + + + + + } + +
ProměnnáHodnotaUložVýchozí?
@s.Name + @if (float.TryParse(s.Value.Replace(".", ","), out float parsed2)) + { + + } + else + { + + } + + + +
+ +
+
+
+
+ + +@code { + private List VariableDetails = new List(); + + protected override void OnInitialized() + { + base.OnInitialized(); + + GetVariablesDerails(); + } + + private async Task> GetVariablesNames() + { + string str = await HttpClient.GetStringAsync("/api/variables/"); + Console.WriteLine(str); + List list = JsonConvert.DeserializeObject>(str); + list.Sort(); + return list; + } + + private async void GetVariablesDerails() + { + List VariableNames = await GetVariablesNames(); + Console.WriteLine($"Variable Count: {VariableNames.Count}"); + foreach (string name in VariableNames) + { + Console.WriteLine(name); + VariableDetails.Add(new VariablesModel + { + Name = name, + IsDefault = false, + Value = (await HttpClient.GetStringAsync($"/api/variables/{name}")).Replace("\"", "") + }); + await InvokeAsync(StateHasChanged); + } + } + + private async void PostVariableData(VariablesModel variables) + { + await HttpClient.PostAsJsonAsync($"/api/variables/{variables.Name}", new VariablePostModel { data = variables.Value, Isdefault = variables.IsDefault }); + } + + + + + + + + + +} diff --git a/Program.cs b/Program.cs index 561f3db..a1190cc 100644 --- a/Program.cs +++ b/Program.cs @@ -6,6 +6,7 @@ var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add("#app"); builder.RootComponents.Add("head::after"); -builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); +//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://10.0.0.190") }); await builder.Build().RunAsync(); diff --git a/TestingRoom_NN_Kajk_UI.csproj b/TestingRoom_NN_Kajk_UI.csproj index db3c071..47592b9 100644 --- a/TestingRoom_NN_Kajk_UI.csproj +++ b/TestingRoom_NN_Kajk_UI.csproj @@ -10,6 +10,7 @@ +