diff --git a/Elwig/App.xaml.cs b/Elwig/App.xaml.cs index bf58aa0..e309773 100644 --- a/Elwig/App.xaml.cs +++ b/Elwig/App.xaml.cs @@ -183,6 +183,9 @@ namespace Elwig { } private async void Application_Exit(object sender, ExitEventArgs evt) { + foreach (var s in EventScales) { + s.Dispose(); + } await Pdf.Cleanup(); } diff --git a/Elwig/Helpers/Extensions.cs b/Elwig/Helpers/Extensions.cs index ecb982c..bae2d8c 100644 --- a/Elwig/Helpers/Extensions.cs +++ b/Elwig/Helpers/Extensions.cs @@ -23,7 +23,7 @@ namespace Elwig.Helpers { } public static string? ReadUntil(this StreamReader reader, char delimiter) { - return ReadUntil(reader, new char[] { delimiter }); + return ReadUntil(reader, [ delimiter ]); } public static string? ReadUntil(this StreamReader reader, char[] delimiter) { @@ -45,7 +45,7 @@ namespace Elwig.Helpers { } public static Task ReadUntilAsync(this StreamReader reader, char delimiter) { - return ReadUntilAsync(reader, new char[] { delimiter }); + return ReadUntilAsync(reader, [ delimiter ]); } public static async Task ReadUntilAsync(this StreamReader reader, char[] delimiter) { diff --git a/Elwig/Helpers/Weighing/AveryEventScale.cs b/Elwig/Helpers/Weighing/AveryEventScale.cs index 7d4e23b..de7513b 100644 --- a/Elwig/Helpers/Weighing/AveryEventScale.cs +++ b/Elwig/Helpers/Weighing/AveryEventScale.cs @@ -58,11 +58,19 @@ namespace Elwig.Helpers.Weighing { } protected async Task Receive() { - var line = await Reader.ReadUntilAsync("\r\n"); + var line = ""; + while (line.Length < 33) { + var ch = Reader.Read(); + if (ch == -1) { + return null; + } else if (line.Length > 0 || ch == ' ') { + line += char.ToString((char)ch); + } + } 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] != ' ') { + } else if (line.Length != 33 || line[0] != ' ' || line[9] != ' ' || line[15] != ' ' || line[20] != ' ' || line[32] != ' ') { throw new IOException($"Invalid event from scale: '{line}'"); } diff --git a/Tests/WeighingTests/ScaleHandlers.cs b/Tests/WeighingTests/ScaleHandlers.cs index 5727861..ce974ac 100644 --- a/Tests/WeighingTests/ScaleHandlers.cs +++ b/Tests/WeighingTests/ScaleHandlers.cs @@ -171,11 +171,11 @@ namespace Tests.WeighingTests { Thread.Sleep(100); if (invalid) { - return ("abcd\r\n", false); + return ("abcd", false); } bool incr = true; - return ($" {new DateTime(2020, 9, 28, 9, 8, 0):dd.MM.yy HH:mm} {identNr,4} {weight,9}{(unit ? "lb" : "kg")} \r\n", incr); + return ($" {new DateTime(2020, 9, 28, 9, 8, 0):dd.MM.yy HH:mm} {identNr,4} {weight,9}{(unit ? "lb" : "kg")} ", incr); } } }