diff --git a/Elwig/Helpers/Weighing/ICommandScale.cs b/Elwig/Helpers/Weighing/ICommandScale.cs
new file mode 100644
index 0000000..789997a
--- /dev/null
+++ b/Elwig/Helpers/Weighing/ICommandScale.cs
@@ -0,0 +1,35 @@
+using System.Threading.Tasks;
+
+namespace Elwig.Helpers.Weighing {
+ ///
+ /// Interface for controlling a a scale which responds to commands sent to it
+ ///
+ public interface ICommandScale : IScale {
+ ///
+ /// Get the current weight on the scale without performing a weighing process
+ ///
+ /// Result of the weighing process (probably without a weighing id)
+ Task GetCurrentWeight();
+
+ ///
+ /// Perform a weighing process
+ ///
+ /// Result of the weighing process (including a weighing id)
+ Task Weigh();
+
+ ///
+ /// Empty the scale container or grant clearance to do so
+ ///
+ Task Empty();
+
+ ///
+ /// Grant clearance to fill the scale container
+ ///
+ Task GrantFillingClearance();
+
+ ///
+ /// Revoke clearance to fill the scale container
+ ///
+ Task RevokeFillingClearance();
+ }
+}
diff --git a/Elwig/Helpers/Weighing/IEventScale.cs b/Elwig/Helpers/Weighing/IEventScale.cs
new file mode 100644
index 0000000..5c7da71
--- /dev/null
+++ b/Elwig/Helpers/Weighing/IEventScale.cs
@@ -0,0 +1,8 @@
+namespace Elwig.Helpers.Weighing {
+ ///
+ /// Interface for controlling a a scale which automatically sends weighing updates
+ ///
+ public interface IEventScale : IScale {
+
+ }
+}
diff --git a/Elwig/Helpers/Weighing/IScale.cs b/Elwig/Helpers/Weighing/IScale.cs
index a91f243..9e5efda 100644
--- a/Elwig/Helpers/Weighing/IScale.cs
+++ b/Elwig/Helpers/Weighing/IScale.cs
@@ -1,9 +1,8 @@
using System;
-using System.Threading.Tasks;
namespace Elwig.Helpers.Weighing {
///
- /// Interface for controlling a industrial scale
+ /// Interface for controlling a industrial scale (industrial terminal, "IT")
///
public interface IScale : IDisposable {
///
@@ -45,32 +44,5 @@ namespace Elwig.Helpers.Weighing {
/// Where to log the requests and responses from the scale to
///
string? LogPath { get; }
-
- ///
- /// Get the current weight on the scale without performing a weighing process
- ///
- /// Result of the weighing process (probably without a weighing id)
- Task GetCurrentWeight();
-
- ///
- /// Perform a weighing process
- ///
- /// Result of the weighing process (including a weighing id)
- Task Weigh();
-
- ///
- /// Empty the scale container or grant clearance to do so
- ///
- Task Empty();
-
- ///
- /// Grant clearance to fill the scale container
- ///
- Task GrantFillingClearance();
-
- ///
- /// Revoke clearance to fill the scale container
- ///
- Task RevokeFillingClearance();
}
}
diff --git a/Elwig/Helpers/Weighing/InvalidScale.cs b/Elwig/Helpers/Weighing/InvalidScale.cs
index eea7459..7db66b7 100644
--- a/Elwig/Helpers/Weighing/InvalidScale.cs
+++ b/Elwig/Helpers/Weighing/InvalidScale.cs
@@ -1,44 +1,19 @@
using System;
-using System.Threading.Tasks;
namespace Elwig.Helpers.Weighing {
- public class InvalidScale : IScale {
+ public class InvalidScale(string id) : IScale {
public string Manufacturer => "NONE";
public string Model => "NONE";
- public string ScaleId { get; private set; }
+ public string ScaleId => id;
public int InternalScaleNr => 0;
public bool IsReady => false;
public bool HasFillingClearance => false;
public int? WeightLimit => null;
public string? LogPath => null;
- public InvalidScale(string id) {
- ScaleId = id;
- }
-
public void Dispose() {
GC.SuppressFinalize(this);
}
-
- public Task Weigh() {
- throw new NotImplementedException();
- }
-
- public Task GetCurrentWeight() {
- throw new NotImplementedException();
- }
-
- public Task Empty() {
- throw new NotImplementedException();
- }
-
- public Task GrantFillingClearance() {
- throw new NotImplementedException();
- }
-
- public Task RevokeFillingClearance() {
- throw new NotImplementedException();
- }
}
}
diff --git a/Elwig/Helpers/Weighing/SchemberScale.cs b/Elwig/Helpers/Weighing/SchemberScale.cs
index 80237c2..52b1ce1 100644
--- a/Elwig/Helpers/Weighing/SchemberScale.cs
+++ b/Elwig/Helpers/Weighing/SchemberScale.cs
@@ -1,9 +1,7 @@
using System;
-using System.Threading.Tasks;
namespace Elwig.Helpers.Weighing {
- // TODO implement SchemberScale
- public class SchemberScale : IScale {
+ public class SchemberScale : IEventScale {
public string Manufacturer => "Schember";
public string Model => throw new NotImplementedException();
@@ -18,24 +16,7 @@ namespace Elwig.Helpers.Weighing {
throw new NotImplementedException();
}
- public Task Empty() {
- throw new NotImplementedException();
- }
- public Task GetCurrentWeight() {
- throw new NotImplementedException();
- }
- public Task GrantFillingClearance() {
- throw new NotImplementedException();
- }
-
- public Task RevokeFillingClearance() {
- throw new NotImplementedException();
- }
-
- public Task Weigh() {
- throw new NotImplementedException();
- }
}
}
diff --git a/Elwig/Helpers/Weighing/SystecScale.cs b/Elwig/Helpers/Weighing/SystecScale.cs
index bf022a8..22dc411 100644
--- a/Elwig/Helpers/Weighing/SystecScale.cs
+++ b/Elwig/Helpers/Weighing/SystecScale.cs
@@ -6,7 +6,7 @@ using System.Text;
using System.Threading.Tasks;
namespace Elwig.Helpers.Weighing {
- public class SystecScale : IScale {
+ public class SystecScale : ICommandScale {
protected enum Output { RTS, DTR, OUT1, OUT2 };
diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
index 3351827..09d1815 100644
--- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs
+++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
@@ -1,6 +1,7 @@
using Elwig.Documents;
using Elwig.Helpers;
using Elwig.Helpers.Export;
+using Elwig.Helpers.Weighing;
using Elwig.Models.Entities;
using LinqKit;
using Microsoft.EntityFrameworkCore;
@@ -968,7 +969,8 @@ namespace Elwig.Windows {
CancelCreatingButton.IsEnabled = false;
try {
var s = App.Scales[index];
- var res = await s.Weigh();
+ if (s is not ICommandScale cs) return;
+ var res = await cs.Weigh();
if ((res.Weight ?? 0) > 0 && res.FullWeighingId != null) {
WeightInput.Text = $"{res.Weight:N0}";
ScaleId = s.ScaleId;
@@ -1080,8 +1082,8 @@ namespace Elwig.Windows {
private void EmptyScale() {
var scale = App.Scales.Where(s => s.ScaleId == ScaleId).FirstOrDefault();
- if (scale == null) return;
- scale.Empty();
+ if (scale is not ICommandScale cs) return;
+ cs.Empty();
}
private async void NewDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
diff --git a/Elwig/Windows/TestWindow.xaml.cs b/Elwig/Windows/TestWindow.xaml.cs
index c1d34b4..ffc7e0d 100644
--- a/Elwig/Windows/TestWindow.xaml.cs
+++ b/Elwig/Windows/TestWindow.xaml.cs
@@ -2,6 +2,7 @@ using Elwig.Documents;
using Elwig.Helpers;
using Elwig.Helpers.Billing;
using Elwig.Helpers.Export;
+using Elwig.Helpers.Weighing;
using Elwig.Models.Dtos;
using Microsoft.EntityFrameworkCore;
using System;
@@ -27,7 +28,8 @@ namespace Elwig.Windows {
private async void WeighingButton1_Click(object sender, RoutedEventArgs evt) {
try {
- var res = await App.Scales[0].GetCurrentWeight();
+ if (App.Scales[0] is not ICommandScale cs) return;
+ var res = await cs.GetCurrentWeight();
Output.Text = res.ToString();
} catch (Exception e) {
MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{e.Message}", "Waagenfehler",
@@ -37,7 +39,8 @@ namespace Elwig.Windows {
private async void WeighingButton2_Click(object sender, RoutedEventArgs evt) {
try {
- var res = await App.Scales[0].Weigh();
+ if (App.Scales[0] is not ICommandScale cs) return;
+ var res = await cs.Weigh();
Output.Text = res.ToString();
} catch (Exception e) {
MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{e.Message}", "Waagenfehler",