[#74] Weighing: Try to reconnect tcp scales on first error
Test / Run tests (push) Successful in 3m0s

This commit is contained in:
2026-02-25 10:57:44 +01:00
parent b58dee6d3f
commit 1108427023
3 changed files with 33 additions and 7 deletions
+10 -3
View File
@@ -53,9 +53,16 @@ namespace Elwig.Helpers.Weighing {
return line[1..^1];
}
protected async Task<WeighingResult> Weigh(bool incIdentNr) {
await SendCommand(incIdentNr ? '\x05' : '?');
string record = await ReceiveResponse();
protected async Task<WeighingResult> Weigh(bool incIdentNr, bool retry = true) {
string record;
try {
await SendCommand(incIdentNr ? '\x05' : '?');
record = await ReceiveResponse();
} catch (IOException) {
if (!retry || Tcp == null) throw;
ReconnectTcp();
return await Weigh(incIdentNr, false);
}
if (record.Length != 45)
throw new FormatException("Invalid response from scale: Received record has invalid size");
var line = record[2..];