From 9d4ae11de82b7cc9d807325654d7021258c89977 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Wed, 12 Aug 2026 11:24:14 +0200 Subject: [PATCH] Ignore empty sensors in tanks --- PamhagenSysCtrl/Helpers/PamhagenPlc.cs | 51 ++++++++++++-------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/PamhagenSysCtrl/Helpers/PamhagenPlc.cs b/PamhagenSysCtrl/Helpers/PamhagenPlc.cs index 815ebff..ae5b370 100644 --- a/PamhagenSysCtrl/Helpers/PamhagenPlc.cs +++ b/PamhagenSysCtrl/Helpers/PamhagenPlc.cs @@ -43,31 +43,28 @@ namespace PamhagenSysCtrl.Helpers { GC.SuppressFinalize(this); } - protected static FillState Int3ToFillState(int n) { - return n switch { - 7 => FillState.Full, - 6 => FillState.Half, - 4 => FillState.Filled, - 0 => FillState.Empty, - _ => FillState.Invalid, - }; + protected static FillState Int3ToFillState(int n, bool bigEndian = true) { + return + (bigEndian && (n & 0x4) != 0) || (!bigEndian && (n & 0x1) != 0) ? FillState.Full : + (bigEndian && (n & 0x2) != 0) || (!bigEndian && (n & 0x2) != 0) ? FillState.Half : + (bigEndian && (n & 0x1) != 0) || (!bigEndian && (n & 0x4) != 0) ? FillState.Filled : + n == 0 ? FillState.Empty : + FillState.Invalid; } - protected static FillState Int2ToFillState(int n) { - return n switch { - 2 => FillState.Full, - 0 => FillState.Filled, - 1 => FillState.Empty, - _ => FillState.Invalid, - }; + protected static FillState Int2ToFillState(int n, bool bigEndian = true) { + return + (bigEndian && (n & 0x2) != 0) || (!bigEndian && (n & 0x1) != 0) ? FillState.Full : + (bigEndian && (n & 0x1) != 0) || (!bigEndian && (n & 0x2) != 0) ? FillState.Filled : + n == 0 ? FillState.Empty : + FillState.Invalid; } protected static FillState Int1ToFillState(int n) { - return n switch { - 1 => FillState.Full, - 0 => FillState.Unknown, - _ => FillState.Invalid, - }; + return + n == 1 ? FillState.Full : + n == 0 ? FillState.Unknown : + FillState.Invalid; } protected static MotorState Int2ToPumpState(int n, bool inverse) { @@ -110,8 +107,8 @@ namespace PamhagenSysCtrl.Helpers { long pressure = (long)r1 | ((long)r2 << 16) | ((long)r3 << 32) | ((long)r4 << 48); pressure = (pressure & 0x01FFFFFFFFFFFFFF) | ((pressure & 0x0600000000000000) << 1); - var mw1 = Int3ToFillState((f1 ) & 0x7); // 111 011 001 000 - var mw2 = Int3ToFillState((f1 >> 3) & 0x7); // 111 011 001 000 + var mw1 = Int3ToFillState((f1 ) & 0x7, false); // 111 011 001 000 + var mw2 = Int3ToFillState((f1 >> 3) & 0x7, false); // 111 011 001 000 var p1 = ((f1 >> 6) & 0x1) == 0; // 1 0 var p2 = ((f1 >> 7) & 0x1) == 0; // 1 0 var wp = ((f1 >> 8) & 0x3); // 10 01 @@ -129,11 +126,11 @@ namespace PamhagenSysCtrl.Helpers { // -> factor: 0,03125 + (offset) 25 Oe double oe = v * 0.03125 + 25; - var t1 = Int2ToFillState((f2 ) & 0x3); // 10 01 00 - var t2 = Int2ToFillState((f2 >> 2) & 0x3); // 10 01 00 - var t3 = Int2ToFillState((f2 >> 4) & 0x3); // 10 01 00 - var t4 = Int2ToFillState((f2 >> 6) & 0x3); // 10 01 00 - var t5 = Int2ToFillState((f2 >> 8) & 0x3); // 10 01 00 + var t1 = Int1ToFillState(((f2 ) & 0x3) >> 1); // 1X 0X + var t2 = Int1ToFillState(((f2 >> 2) & 0x3) >> 1); // 1X 0X + var t3 = Int1ToFillState(((f2 >> 4) & 0x3) >> 1); // 1X 0X + var t4 = Int1ToFillState(((f2 >> 6) & 0x3) >> 1); // 1X 0X + var t5 = Int1ToFillState(((f2 >> 8) & 0x3) >> 1); // 1X 0X var t6 = Int1ToFillState((f2 >> 10) & 0x1); // 1 0 var t7 = Int1ToFillState((f2 >> 11) & 0x1); // 1 0 var t8 = Int1ToFillState((f2 >> 12) & 0x1); // 1 0