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

@ -2,6 +2,7 @@
using System.IO;
using System.Net.Sockets;
using System;
using System.Text;
namespace Elwig.Helpers.Weighing {
public abstract class Scale : IDisposable {
@ -12,6 +13,7 @@ namespace Elwig.Helpers.Weighing {
protected SerialPort? ControlSerialEmpty = null, ControlSerialFilling = null;
protected TcpClient? Tcp = null;
protected Stream Stream;
protected StreamReader Reader;
protected readonly Output? EmptyMode = null;
protected readonly Output? FillingClearanceMode = null;
@ -26,6 +28,8 @@ namespace Elwig.Helpers.Weighing {
return new SysTecITScale(config.Id, config.Model!, config.Connection!, config.Empty, config.Filling, limit, config.Log);
} else if (config.Type == "Avery-Async") {
return new AveryEventScale(config.Id, config.Model!, config.Connection!, config.Empty, config.Filling, limit, config.Log);
} else if (config.Type == "Gassner") {
return new GassnerScale(config.Id, config.Model!, config.Connection!, config.Empty, config.Filling, limit, config.Log);
} else {
throw new ArgumentException($"Invalid scale type: \"{config.Type}\"");
}
@ -41,6 +45,7 @@ namespace Elwig.Helpers.Weighing {
} else {
throw new ArgumentException($"Unsupported scheme: \"{cnx.Split(':')[0]}\"");
}
Reader = new(Stream, Encoding.ASCII, false, 512);
LogPath = log;
@ -73,6 +78,7 @@ namespace Elwig.Helpers.Weighing {
}
public void Dispose() {
Reader.Close();
Stream.Close();
Serial?.Close();
ControlSerialEmpty?.Close();