Weighing: Add Gassner scale and update tests

This commit is contained in:
2024-04-13 18:00:17 +02:00
parent c6905bbb42
commit 443e111594
12 changed files with 626 additions and 21 deletions

View File

@ -26,6 +26,8 @@ namespace Elwig.Helpers.Weighing {
Model = model;
IsReady = true;
HasFillingClearance = false;
Stream.WriteTimeout = -1;
Stream.ReadTimeout = -1;
BackgroundThread = new Thread(new ParameterizedThreadStart(BackgroundLoop));
BackgroundThread.Start();
}
@ -46,7 +48,8 @@ namespace Elwig.Helpers.Weighing {
while (IsRunning) {
try {
var data = await Receive();
RaiseWeighingEvent(new WeighingEventArgs(data));
if (data != null)
RaiseWeighingEvent(new WeighingEventArgs(data.Value));
} catch (Exception ex) {
MessageBox.Show($"Beim Wiegen ist ein Fehler Aufgetreten:\n\n{ex.Message}", "Waagenfehler",
MessageBoxButton.OK, MessageBoxImage.Error);
@ -54,13 +57,12 @@ namespace Elwig.Helpers.Weighing {
}
}
protected async Task<WeighingResult> Receive() {
string? line = null;
using (var reader = new StreamReader(Stream, Encoding.ASCII, false, -1, true)) {
line = await reader.ReadLineAsync();
if (LogPath != null) await File.AppendAllTextAsync(LogPath, $"{line}\r\n");
}
if (line == null || line.Length != 33 || line[0] != ' ' || line[9] != ' ' || line[15] != ' ' || line[20] != ' ' || line[32] != ' ') {
protected async Task<WeighingResult?> Receive() {
var line = await Reader.ReadUntilAsync("\r\n");
if (LogPath != null) await File.AppendAllTextAsync(LogPath, line);
if (line == null || line == "") {
return null;
} else if (line.Length != 35 || line[0] != ' ' || line[9] != ' ' || line[15] != ' ' || line[20] != ' ' || line[32] != ' ') {
throw new IOException($"Invalid event from scale: '{line}'");
}