From 8484d450e6144ec29321c13d9c35dedf43df96d5 Mon Sep 17 00:00:00 2001 From: LNisbet Date: Tue, 25 Oct 2022 14:18:46 +0100 Subject: [PATCH 01/10] Added UI elements --- Renishaw_XL80_App/Renishaw_XL80_App.csproj | 24 ++++--- .../measurementDeviceWindow.xaml.cs | 71 +++++++++++++++++++ 2 files changed, 86 insertions(+), 9 deletions(-) diff --git a/Renishaw_XL80_App/Renishaw_XL80_App.csproj b/Renishaw_XL80_App/Renishaw_XL80_App.csproj index 0240cd2..330c3e5 100644 --- a/Renishaw_XL80_App/Renishaw_XL80_App.csproj +++ b/Renishaw_XL80_App/Renishaw_XL80_App.csproj @@ -69,7 +69,7 @@ False - ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\DeviceStream.dll + bin\debug\DeviceStream.dll bin\Debug\Interop.DX10SERVERLib.dll @@ -78,6 +78,9 @@ ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\LaserApi.dll + + bin\debug\LocalHost.dll + ..\..\..\..\..\..\..\Program Files\Renishaw CARTO\Capture\Microsoft.Expression.Drawing.dll @@ -116,7 +119,7 @@ False - ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\NEW DLL VERSIONS\Renishaw.Calibration.dll + bin\debug\Renishaw.Calibration.dll False @@ -124,23 +127,26 @@ False - ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\Renishaw.Calibration.ServiceModel.dll + bin\debug\Renishaw.Calibration.ServiceModel.dll False - ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\NEW DLL VERSIONS\Renishaw.IO.dll + bin\debug\Renishaw.IO.dll False ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\Renishaw.IO.Bluetooth.dll + + bin\debug\RenishawDX10Service.dll + False - ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\RenishawLaserService.dll + bin\debug\RenishawLaserService.dll False - ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\RenishawWeatherStationService.dll + bin\debug\RenishawWeatherStationService.dll @@ -175,11 +181,11 @@ False - ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\UsbIo.dll + bin\debug\UsbIo.dll False - ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\UsbTmc.dll + bin\debug\UsbTmc.dll @@ -187,7 +193,7 @@ False - ..\..\..\..\..\Documents\LaserAPI 1.16\Examples\bin\LaserServiceWinFormsDemo\x64\Release\XLLaserSystem.dll + bin\debug\XLLaserSystem.dll diff --git a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs index ab57019..489d199 100644 --- a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs +++ b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs @@ -95,6 +95,72 @@ private void ConstructDeviceSettingsScreen() { case DeviceTypes.DigimaticIndicator: CommonRs232Window(); + //Create UI for COSINE error calculation + //Create UI elements + CheckBox enableCosineCalculationCheckBox = new CheckBox(); + Button resetCosineCalculationButton = new Button(); + TextBox initialValue = new TextBox(); + Button initialValue_ReadIn = new Button(); + TextBox distanceTraveled = new TextBox(); + TextBox finalValue = new TextBox(); + Button finalValue_ReadIn = new Button(); + + //setup UI elements + XamlUI.SetupButton(ref resetCosineCalculationButton, "RESET"); + XamlUI.SetupButton(ref initialValue_ReadIn, "Read in"); + XamlUI.SetupButton(ref finalValue_ReadIn, "Read in"); + XamlUI.SetupTextBox(ref initialValue, "Initial Value"); + XamlUI.SetupTextBox(ref distanceTraveled, "Distance Traveled"); + XamlUI.SetupTextBox(ref finalValue, "Final Value"); + + resetCosineCalculationButton.Click += new RoutedEventHandler(ResetCosineCalculation); + + //Create grid to show the UI + Grid cosineCorrection = new() { Width = 300, Height = 150, HorizontalAlignment = HorizontalAlignment.Center}; + + // Define the Columns + ColumnDefinition colDef0 = new ColumnDefinition(); + ColumnDefinition colDef1 = new ColumnDefinition(); + cosineCorrection.ColumnDefinitions.Add(colDef0); + cosineCorrection.ColumnDefinitions.Add(colDef1); + + // Define the Rows + RowDefinition rowDef0 = new RowDefinition(); + RowDefinition rowDef1 = new RowDefinition(); + RowDefinition rowDef2 = new RowDefinition(); + RowDefinition rowDef3 = new RowDefinition(); + cosineCorrection.RowDefinitions.Add(rowDef0); + cosineCorrection.RowDefinitions.Add(rowDef1); + cosineCorrection.RowDefinitions.Add(rowDef2); + cosineCorrection.RowDefinitions.Add(rowDef3); + + //Add grid to screen + deviceSettings.Children.Add(enableCosineCalculationCheckBox); + deviceSettings.Children.Add(cosineCorrection); + + //Add UI elements to grid + cosineCorrection.Children.Add(resetCosineCalculationButton); + cosineCorrection.Children.Add(initialValue); + cosineCorrection.Children.Add(initialValue_ReadIn); + cosineCorrection.Children.Add(distanceTraveled); + cosineCorrection.Children.Add(finalValue); + cosineCorrection.Children.Add(finalValue_ReadIn); + + //Order UI elements in grid + Grid.SetRow(resetCosineCalculationButton, 0); + Grid.SetRow(initialValue, 1); + Grid.SetRow(initialValue_ReadIn, 1); + Grid.SetRow(distanceTraveled, 2); + Grid.SetRow(finalValue, 3); + Grid.SetRow(finalValue_ReadIn, 3); + + Grid.SetColumn(initialValue, 0); + Grid.SetColumn(distanceTraveled, 0); + Grid.SetColumn(finalValue, 0); + Grid.SetColumn(resetCosineCalculationButton, 1); + Grid.SetColumn(initialValue_ReadIn, 1); + Grid.SetColumn(finalValue_ReadIn, 1); + break; case DeviceTypes.KeyenceTM3000: @@ -340,6 +406,11 @@ public void DisconnectFromDevice(object sender, EventArgs e) Console.WriteLine("Failed to disconnect"); } } + public async void ResetCosineCalculation(object sender, EventArgs e) + { + Console.WriteLine("COSINE Calculaion Reset"); + + } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { From fa39c13bb25e28f3181c75736869aa0d649fc8b6 Mon Sep 17 00:00:00 2001 From: LNisbet Date: Tue, 25 Oct 2022 16:11:43 +0100 Subject: [PATCH 02/10] Reads in from DI --- .../measurementDeviceWindow.xaml.cs | 91 +++++++++++++++++-- 1 file changed, 85 insertions(+), 6 deletions(-) diff --git a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs index 489d199..15fc6d3 100644 --- a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs +++ b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs @@ -5,6 +5,7 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Data; +using System.Windows.Media; using TwinCat_Motion_ADS.MeasurementDevice; namespace TwinCat_Motion_ADS @@ -99,10 +100,10 @@ private void ConstructDeviceSettingsScreen() //Create UI elements CheckBox enableCosineCalculationCheckBox = new CheckBox(); Button resetCosineCalculationButton = new Button(); - TextBox initialValue = new TextBox(); + TextBox initialValue = new TextBox() { Name = "initialValue"}; Button initialValue_ReadIn = new Button(); - TextBox distanceTraveled = new TextBox(); - TextBox finalValue = new TextBox(); + TextBox distanceTraveled = new TextBox() { Name = "distanceTraveled" }; + TextBox finalValue = new TextBox() { Name = "finalValue" }; Button finalValue_ReadIn = new Button(); //setup UI elements @@ -113,18 +114,21 @@ private void ConstructDeviceSettingsScreen() XamlUI.SetupTextBox(ref distanceTraveled, "Distance Traveled"); XamlUI.SetupTextBox(ref finalValue, "Final Value"); + //Setup event handlers resetCosineCalculationButton.Click += new RoutedEventHandler(ResetCosineCalculation); + initialValue_ReadIn.Click += new RoutedEventHandler(InitialValue_ReadIn); + finalValue_ReadIn.Click += new RoutedEventHandler(FinalValue_ReadIn); //Create grid to show the UI Grid cosineCorrection = new() { Width = 300, Height = 150, HorizontalAlignment = HorizontalAlignment.Center}; - // Define the Columns + //Define the Columns ColumnDefinition colDef0 = new ColumnDefinition(); ColumnDefinition colDef1 = new ColumnDefinition(); cosineCorrection.ColumnDefinitions.Add(colDef0); cosineCorrection.ColumnDefinitions.Add(colDef1); - // Define the Rows + //Define the Rows RowDefinition rowDef0 = new RowDefinition(); RowDefinition rowDef1 = new RowDefinition(); RowDefinition rowDef2 = new RowDefinition(); @@ -406,10 +410,85 @@ public void DisconnectFromDevice(object sender, EventArgs e) Console.WriteLine("Failed to disconnect"); } } - public async void ResetCosineCalculation(object sender, EventArgs e) + public void ResetCosineCalculation(object sender, EventArgs e) { Console.WriteLine("COSINE Calculaion Reset"); + foreach (TextBox tb in FindVisualChilds(this)) + { + if (tb.Name == "initialValue") + { + tb.Text = String.Empty; + } + if (tb.Name == "distanceTraveled") + { + tb.Text = String.Empty; + } + if (tb.Name == "finalValue") + { + tb.Text = String.Empty; + } + } + } + public async void InitialValue_ReadIn(object sender, EventArgs e) + { + + if (!MDevice.Connected) + { + Console.WriteLine("Not connected to a device"); + return; + } + else + { + string measurement = string.Empty; + foreach (var channel in MDevice.ChannelList) + { + measurement = await MDevice.GetChannelMeasurement(channel.Item2); + Console.WriteLine(channel.Item1 + ": " + measurement); + } + foreach (TextBox tb in FindVisualChilds(this)) + { + if (tb.Name == "initialValue") + { + tb.Text = measurement; + } + } + } + } + public async void FinalValue_ReadIn(object sender, EventArgs e) + { + if (!MDevice.Connected) + { + Console.WriteLine("Not connected to a device"); + return; + } + else + { + string measurement = string.Empty; + foreach (var channel in MDevice.ChannelList) + { + measurement = await MDevice.GetChannelMeasurement(channel.Item2); + Console.WriteLine(channel.Item1 + ": " + measurement); + } + foreach (TextBox tb in FindVisualChilds(this)) + { + if (tb.Name == "finalValue") + { + tb.Text = measurement; + } + } + } + } + public static IEnumerable FindVisualChilds(DependencyObject depObj) where T : DependencyObject + { + if (depObj == null) yield return (T)Enumerable.Empty(); + for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) + { + DependencyObject ithChild = VisualTreeHelper.GetChild(depObj, i); + if (ithChild == null) continue; + if (ithChild is T t) yield return t; + foreach (T childOfChild in FindVisualChilds(ithChild)) yield return childOfChild; + } } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) From daaf023f0f6baa8a1b6e5b7c99236df65c127950 Mon Sep 17 00:00:00 2001 From: LNisbet Date: Tue, 25 Oct 2022 16:32:52 +0100 Subject: [PATCH 03/10] added enable checkbox --- .../measurementDeviceWindow.xaml.cs | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs index 15fc6d3..530d1f9 100644 --- a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs +++ b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs @@ -98,7 +98,7 @@ private void ConstructDeviceSettingsScreen() CommonRs232Window(); //Create UI for COSINE error calculation //Create UI elements - CheckBox enableCosineCalculationCheckBox = new CheckBox(); + CheckBox enableCosineCalculationCheckBox = new CheckBox() { Name = "enableCosineCalculationCheckBox" }; Button resetCosineCalculationButton = new Button(); TextBox initialValue = new TextBox() { Name = "initialValue"}; Button initialValue_ReadIn = new Button(); @@ -115,12 +115,13 @@ private void ConstructDeviceSettingsScreen() XamlUI.SetupTextBox(ref finalValue, "Final Value"); //Setup event handlers + enableCosineCalculationCheckBox.Click += new RoutedEventHandler(EnableCosineCalculation); resetCosineCalculationButton.Click += new RoutedEventHandler(ResetCosineCalculation); initialValue_ReadIn.Click += new RoutedEventHandler(InitialValue_ReadIn); finalValue_ReadIn.Click += new RoutedEventHandler(FinalValue_ReadIn); //Create grid to show the UI - Grid cosineCorrection = new() { Width = 300, Height = 150, HorizontalAlignment = HorizontalAlignment.Center}; + Grid cosineCorrection = new() { Width = 300, Height = 150, HorizontalAlignment = HorizontalAlignment.Center, Name = "cosineCorrection", IsEnabled = false, Visibility = Visibility.Collapsed }; //Define the Columns ColumnDefinition colDef0 = new ColumnDefinition(); @@ -410,6 +411,38 @@ public void DisconnectFromDevice(object sender, EventArgs e) Console.WriteLine("Failed to disconnect"); } } + + public void EnableCosineCalculation(object sender, EventArgs e) + { + bool checkBoxEnabled = false; + foreach (CheckBox cb in FindVisualChilds(this)) + { + if (cb.Name == "enableCosineCalculationCheckBox") + { + checkBoxEnabled = (bool)cb.IsChecked; + } + } + + foreach (Grid gd in FindVisualChilds(this)) + { + if (gd.Name == "cosineCorrection") + { + if (checkBoxEnabled) + { + gd.IsEnabled = true; + gd.Visibility =Visibility.Visible; + } + else + { + gd.IsEnabled = false; + gd.Visibility = Visibility.Collapsed; + } + + + } + } + } + public void ResetCosineCalculation(object sender, EventArgs e) { Console.WriteLine("COSINE Calculaion Reset"); From dda8b45f3a56f0fcd318338828dd81b69a42d46e Mon Sep 17 00:00:00 2001 From: LNisbet Date: Wed, 26 Oct 2022 12:44:49 +0100 Subject: [PATCH 04/10] added correction and check --- .../measurementDeviceWindow.xaml.cs | 47 ++++++++++++++----- .../MD_DigimaticIndicator.cs | 21 +++++++++ 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs index 530d1f9..582bd97 100644 --- a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs +++ b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs @@ -99,6 +99,7 @@ private void ConstructDeviceSettingsScreen() //Create UI for COSINE error calculation //Create UI elements CheckBox enableCosineCalculationCheckBox = new CheckBox() { Name = "enableCosineCalculationCheckBox" }; + Button calculateCosineCorrectionButton = new Button(); Button resetCosineCalculationButton = new Button(); TextBox initialValue = new TextBox() { Name = "initialValue"}; Button initialValue_ReadIn = new Button(); @@ -107,6 +108,7 @@ private void ConstructDeviceSettingsScreen() Button finalValue_ReadIn = new Button(); //setup UI elements + XamlUI.SetupButton(ref resetCosineCalculationButton, "CALCULATE"); XamlUI.SetupButton(ref resetCosineCalculationButton, "RESET"); XamlUI.SetupButton(ref initialValue_ReadIn, "Read in"); XamlUI.SetupButton(ref finalValue_ReadIn, "Read in"); @@ -116,6 +118,7 @@ private void ConstructDeviceSettingsScreen() //Setup event handlers enableCosineCalculationCheckBox.Click += new RoutedEventHandler(EnableCosineCalculation); + calculateCosineCorrectionButton.Click += new RoutedEventHandler(CalculateCosineCorrection); resetCosineCalculationButton.Click += new RoutedEventHandler(ResetCosineCalculation); initialValue_ReadIn.Click += new RoutedEventHandler(InitialValue_ReadIn); finalValue_ReadIn.Click += new RoutedEventHandler(FinalValue_ReadIn); @@ -144,6 +147,7 @@ private void ConstructDeviceSettingsScreen() deviceSettings.Children.Add(cosineCorrection); //Add UI elements to grid + cosineCorrection.Children.Add(calculateCosineCorrectionButton); cosineCorrection.Children.Add(resetCosineCalculationButton); cosineCorrection.Children.Add(initialValue); cosineCorrection.Children.Add(initialValue_ReadIn); @@ -152,6 +156,7 @@ private void ConstructDeviceSettingsScreen() cosineCorrection.Children.Add(finalValue_ReadIn); //Order UI elements in grid + Grid.SetRow(calculateCosineCorrectionButton, 0); Grid.SetRow(resetCosineCalculationButton, 0); Grid.SetRow(initialValue, 1); Grid.SetRow(initialValue_ReadIn, 1); @@ -159,6 +164,7 @@ private void ConstructDeviceSettingsScreen() Grid.SetRow(finalValue, 3); Grid.SetRow(finalValue_ReadIn, 3); + Grid.SetColumn(calculateCosineCorrectionButton, 0); Grid.SetColumn(initialValue, 0); Grid.SetColumn(distanceTraveled, 0); Grid.SetColumn(finalValue, 0); @@ -437,15 +443,36 @@ public void EnableCosineCalculation(object sender, EventArgs e) gd.IsEnabled = false; gd.Visibility = Visibility.Collapsed; } - + } + } + } + public void CalculateCosineCorrection(object sender, EventArgs e) + { + string initialValue = "0"; + string distanceTraveled = "1"; + string finalValue = "1"; + foreach (TextBox tb in FindVisualChilds(this)) + { + if (tb.Name == "initialValue") + { + initialValue = tb.Text; + } + if (tb.Name == "distanceTraveled") + { + distanceTraveled = tb.Text; + } + if (tb.Name == "finalValue") + { + finalValue = tb.Text; } } + ((MD_DigimaticIndicator)MDevice).COSINECalculation(initialValue, distanceTraveled, finalValue); + Console.WriteLine("Correction Value : " + Convert.ToString(((MD_DigimaticIndicator)MDevice).cosineCorrectionValue)); } public void ResetCosineCalculation(object sender, EventArgs e) { - Console.WriteLine("COSINE Calculaion Reset"); foreach (TextBox tb in FindVisualChilds(this)) { if (tb.Name == "initialValue") @@ -461,6 +488,8 @@ public void ResetCosineCalculation(object sender, EventArgs e) tb.Text = String.Empty; } } + CalculateCosineCorrection(sender, e); + Console.WriteLine("COSINE Calculaion Reset"); } public async void InitialValue_ReadIn(object sender, EventArgs e) { @@ -473,11 +502,8 @@ public async void InitialValue_ReadIn(object sender, EventArgs e) else { string measurement = string.Empty; - foreach (var channel in MDevice.ChannelList) - { - measurement = await MDevice.GetChannelMeasurement(channel.Item2); - Console.WriteLine(channel.Item1 + ": " + measurement); - } + measurement = await ((MD_DigimaticIndicator) MDevice).GetMeasurement_Uncorrected(); + Console.WriteLine(MDevice.Name + ": " + measurement); foreach (TextBox tb in FindVisualChilds(this)) { if (tb.Name == "initialValue") @@ -497,11 +523,8 @@ public async void FinalValue_ReadIn(object sender, EventArgs e) else { string measurement = string.Empty; - foreach (var channel in MDevice.ChannelList) - { - measurement = await MDevice.GetChannelMeasurement(channel.Item2); - Console.WriteLine(channel.Item1 + ": " + measurement); - } + measurement = await ((MD_DigimaticIndicator)MDevice).GetMeasurement_Uncorrected(); + Console.WriteLine(MDevice.Name + ": " + measurement); foreach (TextBox tb in FindVisualChilds(this)) { if (tb.Name == "finalValue") diff --git a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs index 3a07cf5..8fb6b45 100644 --- a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs +++ b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs @@ -26,10 +26,24 @@ public async Task GetChannelMeasurement(int channelNumber = 0) string measurement; CancellationTokenSource ct = new(); measurement = await ReadAsync("1", ct, readDelay, defaultTimeout); + measurement = Convert.ToString(cosineCorrectionValue * Convert.ToDouble(measurement)); return measurement; } public async Task GetMeasurement() + { + if (!Connected) + { + return "No device connected"; //Nothing to disconnect from + } + ReadInProgress = true; + string measurement; + CancellationTokenSource ct = new(); + measurement = await ReadAsync("1", ct, readDelay, defaultTimeout); + measurement = Convert.ToString(cosineCorrectionValue * Convert.ToDouble(measurement)); + return measurement; + } + public async Task GetMeasurement_Uncorrected() { if (!Connected) { @@ -73,6 +87,13 @@ public async Task ReadAsync(string cmd, CancellationTokenSource ct, int } } + public double cosineCorrectionValue = 1; + public void COSINECalculation(string adjacent_point1, string adjacent_point2, string hypotenuse) + { + + double adjacent = Math.Abs(Convert.ToDouble(adjacent_point2) - Convert.ToDouble(adjacent_point1)); + cosineCorrectionValue = adjacent / Math.Abs(Convert.ToDouble(hypotenuse)); + } public new bool Disconnect() { From 71c58dafafaf25965e6d93fd982ece4815600fde Mon Sep 17 00:00:00 2001 From: LNisbet Date: Thu, 27 Oct 2022 15:37:17 +0100 Subject: [PATCH 05/10] rewrote all the code with bindings --- .../measurementDeviceWindow.xaml.cs | 206 ++++-------------- .../MD_DigimaticIndicator.cs | 108 ++++++++- 2 files changed, 153 insertions(+), 161 deletions(-) diff --git a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs index 582bd97..df04354 100644 --- a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs +++ b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using System.Security.Cryptography.X509Certificates; using System.Windows; using System.Windows.Controls; using System.Windows.Data; @@ -98,80 +99,55 @@ private void ConstructDeviceSettingsScreen() CommonRs232Window(); //Create UI for COSINE error calculation //Create UI elements - CheckBox enableCosineCalculationCheckBox = new CheckBox() { Name = "enableCosineCalculationCheckBox" }; - Button calculateCosineCorrectionButton = new Button(); - Button resetCosineCalculationButton = new Button(); - TextBox initialValue = new TextBox() { Name = "initialValue"}; - Button initialValue_ReadIn = new Button(); - TextBox distanceTraveled = new TextBox() { Name = "distanceTraveled" }; - TextBox finalValue = new TextBox() { Name = "finalValue" }; - Button finalValue_ReadIn = new Button(); + CheckBox enableCosineCalculationCheckBox = new() { Name = "enableCosineCalculationCheckBox" }; + Button calculateCosineCorrectionButton = new(); + Button resetCosineCalculationButton = new(); + TextBox initialValueTextBox = new() { Name = "initialValueTextBox" }; + Button initialValue_ReadIn = new(); + TextBox distanceTraveledTextBox = new() { Name = "distanceTraveledTextBox" }; + TextBox finalValueTextBox = new() { Name = "finalValueTextBox" }; + Button finalValue_ReadIn = new(); //setup UI elements - XamlUI.SetupButton(ref resetCosineCalculationButton, "CALCULATE"); + XamlUI.SetupButton(ref calculateCosineCorrectionButton, "CALCULATE"); XamlUI.SetupButton(ref resetCosineCalculationButton, "RESET"); XamlUI.SetupButton(ref initialValue_ReadIn, "Read in"); XamlUI.SetupButton(ref finalValue_ReadIn, "Read in"); - XamlUI.SetupTextBox(ref initialValue, "Initial Value"); - XamlUI.SetupTextBox(ref distanceTraveled, "Distance Traveled"); - XamlUI.SetupTextBox(ref finalValue, "Final Value"); + + //Setup bindings + XamlUI.CheckBoxBinding("",enableCosineCalculationCheckBox, (MD_DigimaticIndicator)MDevice, "EnableCosineCorrection"); + XamlUI.TextboxBinding(initialValueTextBox, (MD_DigimaticIndicator)MDevice, "InitialValue"); + XamlUI.TextboxBinding(distanceTraveledTextBox, (MD_DigimaticIndicator)MDevice, "DistanceTraveled"); + XamlUI.TextboxBinding(finalValueTextBox, (MD_DigimaticIndicator)MDevice, "FinalValue"); //Setup event handlers enableCosineCalculationCheckBox.Click += new RoutedEventHandler(EnableCosineCalculation); - calculateCosineCorrectionButton.Click += new RoutedEventHandler(CalculateCosineCorrection); - resetCosineCalculationButton.Click += new RoutedEventHandler(ResetCosineCalculation); - initialValue_ReadIn.Click += new RoutedEventHandler(InitialValue_ReadIn); - finalValue_ReadIn.Click += new RoutedEventHandler(FinalValue_ReadIn); - - //Create grid to show the UI - Grid cosineCorrection = new() { Width = 300, Height = 150, HorizontalAlignment = HorizontalAlignment.Center, Name = "cosineCorrection", IsEnabled = false, Visibility = Visibility.Collapsed }; - - //Define the Columns - ColumnDefinition colDef0 = new ColumnDefinition(); - ColumnDefinition colDef1 = new ColumnDefinition(); - cosineCorrection.ColumnDefinitions.Add(colDef0); - cosineCorrection.ColumnDefinitions.Add(colDef1); - - //Define the Rows - RowDefinition rowDef0 = new RowDefinition(); - RowDefinition rowDef1 = new RowDefinition(); - RowDefinition rowDef2 = new RowDefinition(); - RowDefinition rowDef3 = new RowDefinition(); - cosineCorrection.RowDefinitions.Add(rowDef0); - cosineCorrection.RowDefinitions.Add(rowDef1); - cosineCorrection.RowDefinitions.Add(rowDef2); - cosineCorrection.RowDefinitions.Add(rowDef3); - - //Add grid to screen + calculateCosineCorrectionButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).CalculateCosineCorrection); + resetCosineCalculationButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).ResetCosineCalculation); + initialValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).InitialValue_ReadIn); + finalValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).FinalValue_ReadIn); + + //Setup stack pannels + StackPanel cosineCorrectionSP = new() { Orientation = Orientation.Vertical, Width = 300, IsEnabled = false, Visibility = Visibility.Collapsed, Name = "cosineCorrectionSP", HorizontalAlignment = HorizontalAlignment.Center}; + StackPanel controlSP = new() { Orientation = Orientation.Horizontal }; + StackPanel initalValueSP = new() { Orientation = Orientation.Horizontal }; + StackPanel distanceTraveledSP = new() { Orientation = Orientation.Horizontal }; + StackPanel finalValueSP = new() { Orientation = Orientation.Horizontal }; + + //add elements and stack pannels to UI deviceSettings.Children.Add(enableCosineCalculationCheckBox); - deviceSettings.Children.Add(cosineCorrection); - - //Add UI elements to grid - cosineCorrection.Children.Add(calculateCosineCorrectionButton); - cosineCorrection.Children.Add(resetCosineCalculationButton); - cosineCorrection.Children.Add(initialValue); - cosineCorrection.Children.Add(initialValue_ReadIn); - cosineCorrection.Children.Add(distanceTraveled); - cosineCorrection.Children.Add(finalValue); - cosineCorrection.Children.Add(finalValue_ReadIn); - - //Order UI elements in grid - Grid.SetRow(calculateCosineCorrectionButton, 0); - Grid.SetRow(resetCosineCalculationButton, 0); - Grid.SetRow(initialValue, 1); - Grid.SetRow(initialValue_ReadIn, 1); - Grid.SetRow(distanceTraveled, 2); - Grid.SetRow(finalValue, 3); - Grid.SetRow(finalValue_ReadIn, 3); - - Grid.SetColumn(calculateCosineCorrectionButton, 0); - Grid.SetColumn(initialValue, 0); - Grid.SetColumn(distanceTraveled, 0); - Grid.SetColumn(finalValue, 0); - Grid.SetColumn(resetCosineCalculationButton, 1); - Grid.SetColumn(initialValue_ReadIn, 1); - Grid.SetColumn(finalValue_ReadIn, 1); - + deviceSettings.Children.Add(cosineCorrectionSP); + cosineCorrectionSP.Children.Add(controlSP); + cosineCorrectionSP.Children.Add(initalValueSP); + cosineCorrectionSP.Children.Add(distanceTraveledSP); + cosineCorrectionSP.Children.Add(finalValueSP); + controlSP.Children.Add(calculateCosineCorrectionButton); + controlSP.Children.Add(resetCosineCalculationButton); + initalValueSP.Children.Add(initialValueTextBox); + initalValueSP.Children.Add(initialValue_ReadIn); + distanceTraveledSP.Children.Add(distanceTraveledTextBox); + finalValueSP.Children.Add(finalValueTextBox); + finalValueSP.Children.Add(finalValue_ReadIn); break; case DeviceTypes.KeyenceTM3000: @@ -429,107 +405,19 @@ public void EnableCosineCalculation(object sender, EventArgs e) } } - foreach (Grid gd in FindVisualChilds(this)) + foreach (StackPanel sp in FindVisualChilds(this)) { - if (gd.Name == "cosineCorrection") + if (sp.Name == "cosineCorrectionSP") { if (checkBoxEnabled) { - gd.IsEnabled = true; - gd.Visibility =Visibility.Visible; + sp.IsEnabled = true; + sp.Visibility = Visibility.Visible; } else { - gd.IsEnabled = false; - gd.Visibility = Visibility.Collapsed; - } - } - } - } - - public void CalculateCosineCorrection(object sender, EventArgs e) - { - string initialValue = "0"; - string distanceTraveled = "1"; - string finalValue = "1"; - foreach (TextBox tb in FindVisualChilds(this)) - { - if (tb.Name == "initialValue") - { - initialValue = tb.Text; - } - if (tb.Name == "distanceTraveled") - { - distanceTraveled = tb.Text; - } - if (tb.Name == "finalValue") - { - finalValue = tb.Text; - } - } - ((MD_DigimaticIndicator)MDevice).COSINECalculation(initialValue, distanceTraveled, finalValue); - Console.WriteLine("Correction Value : " + Convert.ToString(((MD_DigimaticIndicator)MDevice).cosineCorrectionValue)); - } - - public void ResetCosineCalculation(object sender, EventArgs e) - { - foreach (TextBox tb in FindVisualChilds(this)) - { - if (tb.Name == "initialValue") - { - tb.Text = String.Empty; - } - if (tb.Name == "distanceTraveled") - { - tb.Text = String.Empty; - } - if (tb.Name == "finalValue") - { - tb.Text = String.Empty; - } - } - CalculateCosineCorrection(sender, e); - Console.WriteLine("COSINE Calculaion Reset"); - } - public async void InitialValue_ReadIn(object sender, EventArgs e) - { - - if (!MDevice.Connected) - { - Console.WriteLine("Not connected to a device"); - return; - } - else - { - string measurement = string.Empty; - measurement = await ((MD_DigimaticIndicator) MDevice).GetMeasurement_Uncorrected(); - Console.WriteLine(MDevice.Name + ": " + measurement); - foreach (TextBox tb in FindVisualChilds(this)) - { - if (tb.Name == "initialValue") - { - tb.Text = measurement; - } - } - } - } - public async void FinalValue_ReadIn(object sender, EventArgs e) - { - if (!MDevice.Connected) - { - Console.WriteLine("Not connected to a device"); - return; - } - else - { - string measurement = string.Empty; - measurement = await ((MD_DigimaticIndicator)MDevice).GetMeasurement_Uncorrected(); - Console.WriteLine(MDevice.Name + ": " + measurement); - foreach (TextBox tb in FindVisualChilds(this)) - { - if (tb.Name == "finalValue") - { - tb.Text = measurement; + sp.IsEnabled = false; + sp.Visibility = Visibility.Collapsed; } } } diff --git a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs index 8fb6b45..73168f5 100644 --- a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs +++ b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs @@ -3,6 +3,11 @@ using System.Collections.ObjectModel; using System.Threading.Tasks; using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows; namespace TwinCat_Motion_ADS.MeasurementDevice { @@ -87,12 +92,111 @@ public async Task ReadAsync(string cmd, CancellationTokenSource ct, int } } - public double cosineCorrectionValue = 1; + + public bool EnableCosineCorrection { get; set; } + + private double cosineCorrectionValue; + public double CosineCorrectionValue + { + get { return cosineCorrectionValue; } + set { cosineCorrectionValue = value; } + } + + private string initialValue; + public string InitialValue + { + get { return initialValue; } + set + { + if (double.TryParse(value, out _)) + { + initialValue = value; + } + } + } + + private string distanceTraveled; + public string DistanceTraveled + { + get { return distanceTraveled; } + set + { + if (double.TryParse(value, out _)) + { + distanceTraveled = value; + } + } + } + + private string finalValue; + public string FinalValue + { + get { return finalValue; } + set + { + if (double.TryParse(value, out _)) + { + finalValue = value; + } + } + } + + public void CalculateCosineCorrection(object sender, EventArgs e) + { + if (EnableCosineCorrection) + { + COSINECalculation(InitialValue, DistanceTraveled, FinalValue); + Console.WriteLine("Correction Value : " + Convert.ToString(CosineCorrectionValue)); + } + else + { + Console.WriteLine("COSIGN Correction Not Enabled"); + } + + } + + public void ResetCosineCalculation(object sender, EventArgs e) + { + InitialValue = "0"; + DistanceTraveled = "1"; + FinalValue = "1"; + COSINECalculation(InitialValue, DistanceTraveled, FinalValue); + Console.WriteLine("COSINE Calculaion Reset"); + } + public async void InitialValue_ReadIn(object sender, EventArgs e) + { + if (!Connected) + { + Console.WriteLine("Not connected to a device"); + return; + } + else + { + string measurement = await GetMeasurement_Uncorrected(); + Console.WriteLine(Name + ": " + measurement); + InitialValue = measurement; + } + } + public async void FinalValue_ReadIn(object sender, EventArgs e) + { + if (!Connected) + { + Console.WriteLine("Not connected to a device"); + return; + } + else + { + string measurement = await GetMeasurement_Uncorrected(); + Console.WriteLine(Name + ": " + measurement); + FinalValue = measurement; + } + } + public void COSINECalculation(string adjacent_point1, string adjacent_point2, string hypotenuse) { double adjacent = Math.Abs(Convert.ToDouble(adjacent_point2) - Convert.ToDouble(adjacent_point1)); - cosineCorrectionValue = adjacent / Math.Abs(Convert.ToDouble(hypotenuse)); + CosineCorrectionValue = adjacent / Math.Abs(Convert.ToDouble(hypotenuse)); } public new bool Disconnect() From e113562a626d1d210df5b86cbcc541450ccab7fb Mon Sep 17 00:00:00 2001 From: LNisbet Date: Thu, 27 Oct 2022 16:41:48 +0100 Subject: [PATCH 06/10] added >1 check for calculation --- .../measurementDeviceWindow.xaml.cs | 20 +++++-- .../MD_DigimaticIndicator.cs | 53 +++++++++---------- 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs index df04354..82012f1 100644 --- a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs +++ b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs @@ -97,7 +97,6 @@ private void ConstructDeviceSettingsScreen() { case DeviceTypes.DigimaticIndicator: CommonRs232Window(); - //Create UI for COSINE error calculation //Create UI elements CheckBox enableCosineCalculationCheckBox = new() { Name = "enableCosineCalculationCheckBox" }; Button calculateCosineCorrectionButton = new(); @@ -108,14 +107,17 @@ private void ConstructDeviceSettingsScreen() TextBox finalValueTextBox = new() { Name = "finalValueTextBox" }; Button finalValue_ReadIn = new(); - //setup UI elements + //setup UI element XamlUI.SetupButton(ref calculateCosineCorrectionButton, "CALCULATE"); XamlUI.SetupButton(ref resetCosineCalculationButton, "RESET"); + XamlUI.SetupTextBox(ref initialValueTextBox, "0"); XamlUI.SetupButton(ref initialValue_ReadIn, "Read in"); + XamlUI.SetupTextBox(ref distanceTraveledTextBox, "1"); + XamlUI.SetupTextBox(ref finalValueTextBox, "1"); XamlUI.SetupButton(ref finalValue_ReadIn, "Read in"); //Setup bindings - XamlUI.CheckBoxBinding("",enableCosineCalculationCheckBox, (MD_DigimaticIndicator)MDevice, "EnableCosineCorrection"); + XamlUI.CheckBoxBinding("Enable COSINE Correction", enableCosineCalculationCheckBox, (MD_DigimaticIndicator)MDevice, "EnableCosineCorrection"); XamlUI.TextboxBinding(initialValueTextBox, (MD_DigimaticIndicator)MDevice, "InitialValue"); XamlUI.TextboxBinding(distanceTraveledTextBox, (MD_DigimaticIndicator)MDevice, "DistanceTraveled"); XamlUI.TextboxBinding(finalValueTextBox, (MD_DigimaticIndicator)MDevice, "FinalValue"); @@ -128,8 +130,16 @@ private void ConstructDeviceSettingsScreen() finalValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).FinalValue_ReadIn); //Setup stack pannels - StackPanel cosineCorrectionSP = new() { Orientation = Orientation.Vertical, Width = 300, IsEnabled = false, Visibility = Visibility.Collapsed, Name = "cosineCorrectionSP", HorizontalAlignment = HorizontalAlignment.Center}; - StackPanel controlSP = new() { Orientation = Orientation.Horizontal }; + StackPanel cosineCorrectionSP = new() + { + Orientation = Orientation.Vertical, + Width = 300, + IsEnabled = false, + Visibility = Visibility.Collapsed, + Name = "cosineCorrectionSP", + HorizontalAlignment = HorizontalAlignment.Center + }; + StackPanel controlSP = new() { Orientation = Orientation.Horizontal}; StackPanel initalValueSP = new() { Orientation = Orientation.Horizontal }; StackPanel distanceTraveledSP = new() { Orientation = Orientation.Horizontal }; StackPanel finalValueSP = new() { Orientation = Orientation.Horizontal }; diff --git a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs index 73168f5..1fb1d15 100644 --- a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs +++ b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs @@ -92,14 +92,15 @@ public async Task ReadAsync(string cmd, CancellationTokenSource ct, int } } - + #region get sets + public bool EnableCosineCorrection { get; set; } private double cosineCorrectionValue; public double CosineCorrectionValue { get { return cosineCorrectionValue; } - set { cosineCorrectionValue = value; } + set { cosineCorrectionValue = value; OnPropertyChanged(); } } private string initialValue; @@ -111,6 +112,7 @@ public string InitialValue if (double.TryParse(value, out _)) { initialValue = value; + OnPropertyChanged(); } } } @@ -124,6 +126,7 @@ public string DistanceTraveled if (double.TryParse(value, out _)) { distanceTraveled = value; + OnPropertyChanged(); } } } @@ -137,16 +140,19 @@ public string FinalValue if (double.TryParse(value, out _)) { finalValue = value; + OnPropertyChanged(); } } } + #endregion + #region COSINE Correction public void CalculateCosineCorrection(object sender, EventArgs e) { if (EnableCosineCorrection) { COSINECalculation(InitialValue, DistanceTraveled, FinalValue); - Console.WriteLine("Correction Value : " + Convert.ToString(CosineCorrectionValue)); + } else { @@ -154,7 +160,6 @@ public void CalculateCosineCorrection(object sender, EventArgs e) } } - public void ResetCosineCalculation(object sender, EventArgs e) { InitialValue = "0"; @@ -165,40 +170,32 @@ public void ResetCosineCalculation(object sender, EventArgs e) } public async void InitialValue_ReadIn(object sender, EventArgs e) { - if (!Connected) - { - Console.WriteLine("Not connected to a device"); - return; - } - else - { - string measurement = await GetMeasurement_Uncorrected(); - Console.WriteLine(Name + ": " + measurement); - InitialValue = measurement; - } + string measurement = await GetMeasurement_Uncorrected(); + Console.WriteLine(Name + ": " + measurement); + initialValue = measurement; } public async void FinalValue_ReadIn(object sender, EventArgs e) { - if (!Connected) + string measurement = await GetMeasurement_Uncorrected(); + Console.WriteLine(Name + ": " + measurement); + FinalValue = measurement; + } + public void COSINECalculation(string adjacent_point1, string adjacent_point2, string hypotenuse) + { + double adjacent = Math.Abs(Convert.ToDouble(adjacent_point2) - Convert.ToDouble(adjacent_point1)); + double value = adjacent / Math.Abs(Convert.ToDouble(hypotenuse)); + if (value > 1) { - Console.WriteLine("Not connected to a device"); - return; + Console.WriteLine("Correction Ratio can NOT be greater than 1, value calculated = " + Convert.ToString(value)); } else { - string measurement = await GetMeasurement_Uncorrected(); - Console.WriteLine(Name + ": " + measurement); - FinalValue = measurement; + cosineCorrectionValue = value; + Console.WriteLine("Correction Value : " + Convert.ToString(CosineCorrectionValue)); } - } - public void COSINECalculation(string adjacent_point1, string adjacent_point2, string hypotenuse) - { - - double adjacent = Math.Abs(Convert.ToDouble(adjacent_point2) - Convert.ToDouble(adjacent_point1)); - CosineCorrectionValue = adjacent / Math.Abs(Convert.ToDouble(hypotenuse)); } - + #endregion public new bool Disconnect() { ChannelList.Clear(); From c947a1ae6387e76e21eb8779dbf22fd89e4d205e Mon Sep 17 00:00:00 2001 From: LNisbet Date: Fri, 28 Oct 2022 12:59:20 +0100 Subject: [PATCH 07/10] added helper image --- .../measurementDeviceWindow.xaml.cs | 21 ++++++++++++++++--- .../MD_DigimaticIndicator.cs | 6 +++--- TwinCat Motion ADS/TwinCat Motion ADS.csproj | 2 ++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs index 82012f1..4b078d7 100644 --- a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs +++ b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs @@ -7,6 +7,7 @@ using System.Windows.Controls; using System.Windows.Data; using System.Windows.Media; +using System.Windows.Media.Imaging; using TwinCat_Motion_ADS.MeasurementDevice; namespace TwinCat_Motion_ADS @@ -101,18 +102,26 @@ private void ConstructDeviceSettingsScreen() CheckBox enableCosineCalculationCheckBox = new() { Name = "enableCosineCalculationCheckBox" }; Button calculateCosineCorrectionButton = new(); Button resetCosineCalculationButton = new(); + Image cosineImage = new() { MaxWidth = 300, Height = 100}; + TextBlock initialValueTextBlock = new(); TextBox initialValueTextBox = new() { Name = "initialValueTextBox" }; Button initialValue_ReadIn = new(); + TextBlock distanceTraveledTextBlock = new(); TextBox distanceTraveledTextBox = new() { Name = "distanceTraveledTextBox" }; + TextBlock finalValueTextBlock = new(); TextBox finalValueTextBox = new() { Name = "finalValueTextBox" }; Button finalValue_ReadIn = new(); //setup UI element + cosineImage.Source = new BitmapImage(new Uri("\\ImageAssets\\COSINE.png", UriKind.Relative)); XamlUI.SetupButton(ref calculateCosineCorrectionButton, "CALCULATE"); XamlUI.SetupButton(ref resetCosineCalculationButton, "RESET"); + XamlUI.SetupTextBlock(ref initialValueTextBlock, "H1", 15); XamlUI.SetupTextBox(ref initialValueTextBox, "0"); XamlUI.SetupButton(ref initialValue_ReadIn, "Read in"); + XamlUI.SetupTextBlock(ref distanceTraveledTextBlock, "A", 15); XamlUI.SetupTextBox(ref distanceTraveledTextBox, "1"); + XamlUI.SetupTextBlock(ref finalValueTextBlock, "H2", 15); XamlUI.SetupTextBox(ref finalValueTextBox, "1"); XamlUI.SetupButton(ref finalValue_ReadIn, "Read in"); @@ -139,7 +148,8 @@ private void ConstructDeviceSettingsScreen() Name = "cosineCorrectionSP", HorizontalAlignment = HorizontalAlignment.Center }; - StackPanel controlSP = new() { Orientation = Orientation.Horizontal}; + StackPanel imageSP = new() { Orientation = Orientation.Horizontal }; + StackPanel controlSP = new() { Orientation = Orientation.Vertical, VerticalAlignment = VerticalAlignment.Center}; StackPanel initalValueSP = new() { Orientation = Orientation.Horizontal }; StackPanel distanceTraveledSP = new() { Orientation = Orientation.Horizontal }; StackPanel finalValueSP = new() { Orientation = Orientation.Horizontal }; @@ -147,15 +157,20 @@ private void ConstructDeviceSettingsScreen() //add elements and stack pannels to UI deviceSettings.Children.Add(enableCosineCalculationCheckBox); deviceSettings.Children.Add(cosineCorrectionSP); - cosineCorrectionSP.Children.Add(controlSP); + cosineCorrectionSP.Children.Add(imageSP); cosineCorrectionSP.Children.Add(initalValueSP); - cosineCorrectionSP.Children.Add(distanceTraveledSP); cosineCorrectionSP.Children.Add(finalValueSP); + cosineCorrectionSP.Children.Add(distanceTraveledSP); + imageSP.Children.Add(cosineImage); + imageSP.Children.Add(controlSP); controlSP.Children.Add(calculateCosineCorrectionButton); controlSP.Children.Add(resetCosineCalculationButton); + initalValueSP.Children.Add(initialValueTextBlock); initalValueSP.Children.Add(initialValueTextBox); initalValueSP.Children.Add(initialValue_ReadIn); + distanceTraveledSP.Children.Add(distanceTraveledTextBlock); distanceTraveledSP.Children.Add(distanceTraveledTextBox); + finalValueSP.Children.Add(finalValueTextBlock); finalValueSP.Children.Add(finalValueTextBox); finalValueSP.Children.Add(finalValue_ReadIn); break; diff --git a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs index 1fb1d15..addd715 100644 --- a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs +++ b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs @@ -180,10 +180,10 @@ public async void FinalValue_ReadIn(object sender, EventArgs e) Console.WriteLine(Name + ": " + measurement); FinalValue = measurement; } - public void COSINECalculation(string adjacent_point1, string adjacent_point2, string hypotenuse) + public void COSINECalculation(string hypotenuse_point1, string hypotenuse_point2, string adjacent) { - double adjacent = Math.Abs(Convert.ToDouble(adjacent_point2) - Convert.ToDouble(adjacent_point1)); - double value = adjacent / Math.Abs(Convert.ToDouble(hypotenuse)); + double hypotenuse = Math.Abs(Convert.ToDouble(hypotenuse_point2) - Convert.ToDouble(hypotenuse_point1)); + double value = hypotenuse / Math.Abs(Convert.ToDouble(adjacent)); if (value > 1) { Console.WriteLine("Correction Ratio can NOT be greater than 1, value calculated = " + Convert.ToString(value)); diff --git a/TwinCat Motion ADS/TwinCat Motion ADS.csproj b/TwinCat Motion ADS/TwinCat Motion ADS.csproj index 1109dec..f331121 100644 --- a/TwinCat Motion ADS/TwinCat Motion ADS.csproj +++ b/TwinCat Motion ADS/TwinCat Motion ADS.csproj @@ -32,6 +32,7 @@ + @@ -55,6 +56,7 @@ + From 127d65be7976bc0870529dc30ebc328a8d226ccc Mon Sep 17 00:00:00 2001 From: LNisbet Date: Fri, 28 Oct 2022 14:43:49 +0100 Subject: [PATCH 08/10] moved UI elements into there own class --- .../measurementDeviceWindow.xaml.cs | 204 ++++++++---------- TwinCat Motion ADS/ImageAssets/COSINE.png | Bin 0 -> 15179 bytes 2 files changed, 95 insertions(+), 109 deletions(-) create mode 100644 TwinCat Motion ADS/ImageAssets/COSINE.png diff --git a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs index 4b078d7..455b902 100644 --- a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs +++ b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs @@ -99,80 +99,22 @@ private void ConstructDeviceSettingsScreen() case DeviceTypes.DigimaticIndicator: CommonRs232Window(); //Create UI elements - CheckBox enableCosineCalculationCheckBox = new() { Name = "enableCosineCalculationCheckBox" }; - Button calculateCosineCorrectionButton = new(); - Button resetCosineCalculationButton = new(); - Image cosineImage = new() { MaxWidth = 300, Height = 100}; - TextBlock initialValueTextBlock = new(); - TextBox initialValueTextBox = new() { Name = "initialValueTextBox" }; - Button initialValue_ReadIn = new(); - TextBlock distanceTraveledTextBlock = new(); - TextBox distanceTraveledTextBox = new() { Name = "distanceTraveledTextBox" }; - TextBlock finalValueTextBlock = new(); - TextBox finalValueTextBox = new() { Name = "finalValueTextBox" }; - Button finalValue_ReadIn = new(); - - //setup UI element - cosineImage.Source = new BitmapImage(new Uri("\\ImageAssets\\COSINE.png", UriKind.Relative)); - XamlUI.SetupButton(ref calculateCosineCorrectionButton, "CALCULATE"); - XamlUI.SetupButton(ref resetCosineCalculationButton, "RESET"); - XamlUI.SetupTextBlock(ref initialValueTextBlock, "H1", 15); - XamlUI.SetupTextBox(ref initialValueTextBox, "0"); - XamlUI.SetupButton(ref initialValue_ReadIn, "Read in"); - XamlUI.SetupTextBlock(ref distanceTraveledTextBlock, "A", 15); - XamlUI.SetupTextBox(ref distanceTraveledTextBox, "1"); - XamlUI.SetupTextBlock(ref finalValueTextBlock, "H2", 15); - XamlUI.SetupTextBox(ref finalValueTextBox, "1"); - XamlUI.SetupButton(ref finalValue_ReadIn, "Read in"); + cosineCorrectionUI cosineCorrectionUI = new(); //Setup bindings - XamlUI.CheckBoxBinding("Enable COSINE Correction", enableCosineCalculationCheckBox, (MD_DigimaticIndicator)MDevice, "EnableCosineCorrection"); - XamlUI.TextboxBinding(initialValueTextBox, (MD_DigimaticIndicator)MDevice, "InitialValue"); - XamlUI.TextboxBinding(distanceTraveledTextBox, (MD_DigimaticIndicator)MDevice, "DistanceTraveled"); - XamlUI.TextboxBinding(finalValueTextBox, (MD_DigimaticIndicator)MDevice, "FinalValue"); + XamlUI.CheckBoxBinding("Enable COSINE Correction", cosineCorrectionUI.enableCosineCalculationCheckBox, (MD_DigimaticIndicator)MDevice, "EnableCosineCorrection"); + XamlUI.TextboxBinding(cosineCorrectionUI.initialValueTextBox, (MD_DigimaticIndicator)MDevice, "InitialValue"); + XamlUI.TextboxBinding(cosineCorrectionUI.distanceTraveledTextBox, (MD_DigimaticIndicator)MDevice, "DistanceTraveled"); + XamlUI.TextboxBinding(cosineCorrectionUI.finalValueTextBox, (MD_DigimaticIndicator)MDevice, "FinalValue"); //Setup event handlers - enableCosineCalculationCheckBox.Click += new RoutedEventHandler(EnableCosineCalculation); - calculateCosineCorrectionButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).CalculateCosineCorrection); - resetCosineCalculationButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).ResetCosineCalculation); - initialValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).InitialValue_ReadIn); - finalValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).FinalValue_ReadIn); - - //Setup stack pannels - StackPanel cosineCorrectionSP = new() - { - Orientation = Orientation.Vertical, - Width = 300, - IsEnabled = false, - Visibility = Visibility.Collapsed, - Name = "cosineCorrectionSP", - HorizontalAlignment = HorizontalAlignment.Center - }; - StackPanel imageSP = new() { Orientation = Orientation.Horizontal }; - StackPanel controlSP = new() { Orientation = Orientation.Vertical, VerticalAlignment = VerticalAlignment.Center}; - StackPanel initalValueSP = new() { Orientation = Orientation.Horizontal }; - StackPanel distanceTraveledSP = new() { Orientation = Orientation.Horizontal }; - StackPanel finalValueSP = new() { Orientation = Orientation.Horizontal }; + cosineCorrectionUI.calculateCosineCorrectionButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).CalculateCosineCorrection); + cosineCorrectionUI.resetCosineCalculationButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).ResetCosineCalculation); + cosineCorrectionUI.initialValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).InitialValue_ReadIn); + cosineCorrectionUI.finalValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).FinalValue_ReadIn); //add elements and stack pannels to UI - deviceSettings.Children.Add(enableCosineCalculationCheckBox); - deviceSettings.Children.Add(cosineCorrectionSP); - cosineCorrectionSP.Children.Add(imageSP); - cosineCorrectionSP.Children.Add(initalValueSP); - cosineCorrectionSP.Children.Add(finalValueSP); - cosineCorrectionSP.Children.Add(distanceTraveledSP); - imageSP.Children.Add(cosineImage); - imageSP.Children.Add(controlSP); - controlSP.Children.Add(calculateCosineCorrectionButton); - controlSP.Children.Add(resetCosineCalculationButton); - initalValueSP.Children.Add(initialValueTextBlock); - initalValueSP.Children.Add(initialValueTextBox); - initalValueSP.Children.Add(initialValue_ReadIn); - distanceTraveledSP.Children.Add(distanceTraveledTextBlock); - distanceTraveledSP.Children.Add(distanceTraveledTextBox); - finalValueSP.Children.Add(finalValueTextBlock); - finalValueSP.Children.Add(finalValueTextBox); - finalValueSP.Children.Add(finalValue_ReadIn); + deviceSettings.Children.Add(cosineCorrectionUI.cosineCorrectionUISP); break; case DeviceTypes.KeyenceTM3000: @@ -419,47 +361,6 @@ public void DisconnectFromDevice(object sender, EventArgs e) } } - public void EnableCosineCalculation(object sender, EventArgs e) - { - bool checkBoxEnabled = false; - foreach (CheckBox cb in FindVisualChilds(this)) - { - if (cb.Name == "enableCosineCalculationCheckBox") - { - checkBoxEnabled = (bool)cb.IsChecked; - } - } - - foreach (StackPanel sp in FindVisualChilds(this)) - { - if (sp.Name == "cosineCorrectionSP") - { - if (checkBoxEnabled) - { - sp.IsEnabled = true; - sp.Visibility = Visibility.Visible; - } - else - { - sp.IsEnabled = false; - sp.Visibility = Visibility.Collapsed; - } - } - } - } - - public static IEnumerable FindVisualChilds(DependencyObject depObj) where T : DependencyObject - { - if (depObj == null) yield return (T)Enumerable.Empty(); - for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) - { - DependencyObject ithChild = VisualTreeHelper.GetChild(depObj, i); - if (ithChild == null) continue; - if (ithChild is T t) yield return t; - foreach (T childOfChild in FindVisualChilds(ithChild)) yield return childOfChild; - } - } - private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { if(MDevice != null) @@ -507,6 +408,91 @@ private void refreshPorts_Click(object sender, EventArgs e) } + class cosineCorrectionUI + { + //Create UI elements + public StackPanel cosineCorrectionUISP = new() { Orientation = Orientation.Vertical }; + public CheckBox enableCosineCalculationCheckBox = new() { Name = "enableCosineCalculationCheckBox" }; + public Button calculateCosineCorrectionButton = new(); + public Button resetCosineCalculationButton = new(); + public Image cosineImage = new() { MaxWidth = 300, Height = 100 }; + public TextBlock initialValueTextBlock = new(); + public TextBox initialValueTextBox = new() { Name = "initialValueTextBox" }; + public Button initialValue_ReadIn = new(); + public TextBlock distanceTraveledTextBlock = new(); + public TextBox distanceTraveledTextBox = new() { Name = "distanceTraveledTextBox" }; + public TextBlock finalValueTextBlock = new(); + public TextBox finalValueTextBox = new() { Name = "finalValueTextBox" }; + public Button finalValue_ReadIn = new(); + private StackPanel cosineCorrectionSP = new() + { + Orientation = Orientation.Vertical, + Width = 300, + IsEnabled = false, + Visibility = Visibility.Collapsed, + Name = "cosineCorrectionSP", + HorizontalAlignment = HorizontalAlignment.Center + }; + public cosineCorrectionUI () + { + //setup UI element + cosineImage.Source = new BitmapImage(new Uri("\\ImageAssets\\COSINE.png", UriKind.Relative)); + XamlUI.SetupButton(ref calculateCosineCorrectionButton, "CALCULATE"); + XamlUI.SetupButton(ref resetCosineCalculationButton, "RESET"); + XamlUI.SetupTextBlock(ref initialValueTextBlock, "H1", 15); + XamlUI.SetupTextBox(ref initialValueTextBox, "0"); + XamlUI.SetupButton(ref initialValue_ReadIn, "Read in"); + XamlUI.SetupTextBlock(ref distanceTraveledTextBlock, "A", 15); + XamlUI.SetupTextBox(ref distanceTraveledTextBox, "1"); + XamlUI.SetupTextBlock(ref finalValueTextBlock, "H2", 15); + XamlUI.SetupTextBox(ref finalValueTextBox, "1"); + XamlUI.SetupButton(ref finalValue_ReadIn, "Read in"); + + //Setup event handlers + enableCosineCalculationCheckBox.Click += new RoutedEventHandler(EnableUI); + + //Setup stack pannels + StackPanel imageSP = new() { Orientation = Orientation.Horizontal }; + StackPanel controlSP = new() { Orientation = Orientation.Vertical, VerticalAlignment = VerticalAlignment.Center }; + StackPanel initalValueSP = new() { Orientation = Orientation.Horizontal }; + StackPanel distanceTraveledSP = new() { Orientation = Orientation.Horizontal }; + StackPanel finalValueSP = new() { Orientation = Orientation.Horizontal }; + + //add elements and stack pannels to UI + cosineCorrectionUISP.Children.Add(enableCosineCalculationCheckBox); + cosineCorrectionUISP.Children.Add(cosineCorrectionSP); + cosineCorrectionSP.Children.Add(imageSP); + cosineCorrectionSP.Children.Add(initalValueSP); + cosineCorrectionSP.Children.Add(finalValueSP); + cosineCorrectionSP.Children.Add(distanceTraveledSP); + imageSP.Children.Add(cosineImage); + imageSP.Children.Add(controlSP); + controlSP.Children.Add(calculateCosineCorrectionButton); + controlSP.Children.Add(resetCosineCalculationButton); + initalValueSP.Children.Add(initialValueTextBlock); + initalValueSP.Children.Add(initialValueTextBox); + initalValueSP.Children.Add(initialValue_ReadIn); + distanceTraveledSP.Children.Add(distanceTraveledTextBlock); + distanceTraveledSP.Children.Add(distanceTraveledTextBox); + finalValueSP.Children.Add(finalValueTextBlock); + finalValueSP.Children.Add(finalValueTextBox); + finalValueSP.Children.Add(finalValue_ReadIn); + } + public void EnableUI(object sender, EventArgs e) + { + if ((bool)enableCosineCalculationCheckBox.IsChecked) + { + cosineCorrectionSP.Visibility = Visibility.Visible; + cosineCorrectionSP.IsEnabled = true; + } + else + { + cosineCorrectionSP.Visibility = Visibility.Visible; + cosineCorrectionSP.IsEnabled = true; + } + } + } + class KeyenceChannel { public int channelID; diff --git a/TwinCat Motion ADS/ImageAssets/COSINE.png b/TwinCat Motion ADS/ImageAssets/COSINE.png new file mode 100644 index 0000000000000000000000000000000000000000..dc1b211b28a2cc9305ccc789d2e4b4798edc5cee GIT binary patch literal 15179 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 literal 0 HcmV?d00001 From 7961a21ce56aa05eacc3802eabd4fcf6ffcc40d5 Mon Sep 17 00:00:00 2001 From: LNisbet Date: Thu, 3 Nov 2022 17:01:42 +0000 Subject: [PATCH 09/10] fixed the bug of correction value =0 on startup and others --- .../measurementDeviceWindow.xaml.cs | 30 +++++++++---------- .../MD_DigimaticIndicator.cs | 17 +++++++---- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs index 455b902..e5a6a07 100644 --- a/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs +++ b/TwinCat Motion ADS/APPLICATION WINDOWS/measurementDeviceWindow.xaml.cs @@ -99,19 +99,7 @@ private void ConstructDeviceSettingsScreen() case DeviceTypes.DigimaticIndicator: CommonRs232Window(); //Create UI elements - cosineCorrectionUI cosineCorrectionUI = new(); - - //Setup bindings - XamlUI.CheckBoxBinding("Enable COSINE Correction", cosineCorrectionUI.enableCosineCalculationCheckBox, (MD_DigimaticIndicator)MDevice, "EnableCosineCorrection"); - XamlUI.TextboxBinding(cosineCorrectionUI.initialValueTextBox, (MD_DigimaticIndicator)MDevice, "InitialValue"); - XamlUI.TextboxBinding(cosineCorrectionUI.distanceTraveledTextBox, (MD_DigimaticIndicator)MDevice, "DistanceTraveled"); - XamlUI.TextboxBinding(cosineCorrectionUI.finalValueTextBox, (MD_DigimaticIndicator)MDevice, "FinalValue"); - - //Setup event handlers - cosineCorrectionUI.calculateCosineCorrectionButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).CalculateCosineCorrection); - cosineCorrectionUI.resetCosineCalculationButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).ResetCosineCalculation); - cosineCorrectionUI.initialValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).InitialValue_ReadIn); - cosineCorrectionUI.finalValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).FinalValue_ReadIn); + cosineCorrectionUI cosineCorrectionUI = new(MDevice); //add elements and stack pannels to UI deviceSettings.Children.Add(cosineCorrectionUI.cosineCorrectionUISP); @@ -433,7 +421,7 @@ class cosineCorrectionUI Name = "cosineCorrectionSP", HorizontalAlignment = HorizontalAlignment.Center }; - public cosineCorrectionUI () + public cosineCorrectionUI (I_MeasurementDevice MDevice) { //setup UI element cosineImage.Source = new BitmapImage(new Uri("\\ImageAssets\\COSINE.png", UriKind.Relative)); @@ -448,8 +436,18 @@ public cosineCorrectionUI () XamlUI.SetupTextBox(ref finalValueTextBox, "1"); XamlUI.SetupButton(ref finalValue_ReadIn, "Read in"); + //Setup bindings + XamlUI.CheckBoxBinding("Enable COSINE Correction", enableCosineCalculationCheckBox, (MD_DigimaticIndicator)MDevice, "EnableCosineCorrection"); + XamlUI.TextboxBinding(initialValueTextBox, (MD_DigimaticIndicator)MDevice, "InitialValue"); + XamlUI.TextboxBinding(distanceTraveledTextBox, (MD_DigimaticIndicator)MDevice, "DistanceTraveled"); + XamlUI.TextboxBinding(finalValueTextBox, (MD_DigimaticIndicator)MDevice, "FinalValue"); + //Setup event handlers enableCosineCalculationCheckBox.Click += new RoutedEventHandler(EnableUI); + calculateCosineCorrectionButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).CalculateCosineCorrection); + resetCosineCalculationButton.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).ResetCosineCalculation); + initialValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).InitialValue_ReadIn); + finalValue_ReadIn.Click += new RoutedEventHandler(((MD_DigimaticIndicator)MDevice).FinalValue_ReadIn); //Setup stack pannels StackPanel imageSP = new() { Orientation = Orientation.Horizontal }; @@ -487,8 +485,8 @@ public void EnableUI(object sender, EventArgs e) } else { - cosineCorrectionSP.Visibility = Visibility.Visible; - cosineCorrectionSP.IsEnabled = true; + cosineCorrectionSP.Visibility = Visibility.Collapsed; + cosineCorrectionSP.IsEnabled = false; } } } diff --git a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs index addd715..7ee1762 100644 --- a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs +++ b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs @@ -31,7 +31,10 @@ public async Task GetChannelMeasurement(int channelNumber = 0) string measurement; CancellationTokenSource ct = new(); measurement = await ReadAsync("1", ct, readDelay, defaultTimeout); - measurement = Convert.ToString(cosineCorrectionValue * Convert.ToDouble(measurement)); + if (EnableCosineCorrection) + { + measurement = Convert.ToString(cosineCorrectionValue * Convert.ToDouble(measurement)); + } return measurement; } @@ -45,7 +48,10 @@ public async Task GetMeasurement() string measurement; CancellationTokenSource ct = new(); measurement = await ReadAsync("1", ct, readDelay, defaultTimeout); - measurement = Convert.ToString(cosineCorrectionValue * Convert.ToDouble(measurement)); + if (EnableCosineCorrection) + { + measurement = Convert.ToString(cosineCorrectionValue * Convert.ToDouble(measurement)); + } return measurement; } public async Task GetMeasurement_Uncorrected() @@ -96,7 +102,7 @@ public async Task ReadAsync(string cmd, CancellationTokenSource ct, int public bool EnableCosineCorrection { get; set; } - private double cosineCorrectionValue; + private double cosineCorrectionValue = 1; public double CosineCorrectionValue { get { return cosineCorrectionValue; } @@ -152,11 +158,10 @@ public void CalculateCosineCorrection(object sender, EventArgs e) if (EnableCosineCorrection) { COSINECalculation(InitialValue, DistanceTraveled, FinalValue); - } else { - Console.WriteLine("COSIGN Correction Not Enabled"); + Console.WriteLine("COSIGNE Correction Not Enabled"); } } @@ -172,7 +177,7 @@ public async void InitialValue_ReadIn(object sender, EventArgs e) { string measurement = await GetMeasurement_Uncorrected(); Console.WriteLine(Name + ": " + measurement); - initialValue = measurement; + InitialValue = measurement; } public async void FinalValue_ReadIn(object sender, EventArgs e) { From 1cc2a669cd06892a97d01b308551b54782dd739a Mon Sep 17 00:00:00 2001 From: LNisbet Date: Thu, 3 Nov 2022 17:06:54 +0000 Subject: [PATCH 10/10] fixed the bug of correction value =0 on startup and others --- .../Measurement Devices/MD_DigimaticIndicator.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs index 7ee1762..9c5ea6d 100644 --- a/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs +++ b/TwinCat Motion ADS/Measurement Devices/MD_DigimaticIndicator.cs @@ -33,7 +33,7 @@ public async Task GetChannelMeasurement(int channelNumber = 0) measurement = await ReadAsync("1", ct, readDelay, defaultTimeout); if (EnableCosineCorrection) { - measurement = Convert.ToString(cosineCorrectionValue * Convert.ToDouble(measurement)); + measurement = Convert.ToString(CosineCorrectionValue * Convert.ToDouble(measurement)); } return measurement; } @@ -50,7 +50,7 @@ public async Task GetMeasurement() measurement = await ReadAsync("1", ct, readDelay, defaultTimeout); if (EnableCosineCorrection) { - measurement = Convert.ToString(cosineCorrectionValue * Convert.ToDouble(measurement)); + measurement = Convert.ToString(CosineCorrectionValue * Convert.ToDouble(measurement)); } return measurement; } @@ -195,7 +195,7 @@ public void COSINECalculation(string hypotenuse_point1, string hypotenuse_point2 } else { - cosineCorrectionValue = value; + CosineCorrectionValue = value; Console.WriteLine("Correction Value : " + Convert.ToString(CosineCorrectionValue)); }