Fix Send gauges showing intensity, zero when idle

- Send gauges now show waveform intensity (0-100) not strength ceiling
- State.LastIntensityA/B tracks average intensity per tick
- Zero when no pattern/stream active (was 25 due to IntensityOff 101 sentinel)
- Recv gauges unchanged (device-reported strength 0-200)
This commit is contained in:
2026-08-08 11:18:01 +00:00
parent 84eba7d094
commit 325022d27c
2 changed files with 10 additions and 4 deletions
+4 -4
View File
@@ -142,7 +142,7 @@ public class MainForm : Form
Location = new Point(72, 160), Location = new Point(72, 160),
Size = new Size(332, 20), Size = new Size(332, 20),
Minimum = 0, Minimum = 0,
Maximum = 200, Maximum = 100,
Style = ProgressBarStyle.Continuous Style = ProgressBarStyle.Continuous
}; };
_lblSendB = new Label _lblSendB = new Label
@@ -157,7 +157,7 @@ public class MainForm : Form
Location = new Point(72, 184), Location = new Point(72, 184),
Size = new Size(332, 20), Size = new Size(332, 20),
Minimum = 0, Minimum = 0,
Maximum = 200, Maximum = 100,
Style = ProgressBarStyle.Continuous Style = ProgressBarStyle.Continuous
}; };
_lblRecvA = new Label _lblRecvA = new Label
@@ -357,8 +357,8 @@ public class MainForm : Form
_lblBle.Text = _device.IsConnected _lblBle.Text = _device.IsConnected
? $"BLE: connected ({_device.DeviceName})" ? $"BLE: connected ({_device.DeviceName})"
: "BLE: disconnected"; : "BLE: disconnected";
_gaugeSendA.Value = Math.Clamp(_state.LastSentA, 0, 200); _gaugeSendA.Value = Math.Clamp(_state.LastIntensityA, 0, 100);
_gaugeSendB.Value = Math.Clamp(_state.LastSentB, 0, 200); _gaugeSendB.Value = Math.Clamp(_state.LastIntensityB, 0, 100);
_gaugeRecvA.Value = Math.Clamp(_device.StrengthA, 0, 200); _gaugeRecvA.Value = Math.Clamp(_device.StrengthA, 0, 200);
_gaugeRecvB.Value = Math.Clamp(_device.StrengthB, 0, 200); _gaugeRecvB.Value = Math.Clamp(_device.StrengthB, 0, 200);
_btnTest.Enabled = !_server.HasClient && !IsTestRunning; _btnTest.Enabled = !_server.HasClient && !IsTestRunning;
+6
View File
@@ -17,6 +17,7 @@ public class State
public int ActualA, ActualB; public int ActualA, ActualB;
public int LastSentA, LastSentB; public int LastSentA, LastSentB;
public int LastIntensityA, LastIntensityB;
public int MaxStrength = 200; public int MaxStrength = 200;
public LimitMode LimitMode = LimitMode.Clamp; public LimitMode LimitMode = LimitMode.Clamp;
@@ -105,9 +106,14 @@ public class State
DirtyA = false; DirtyA = false;
DirtyB = false; DirtyB = false;
bool hasA = !StreamA.IsEmpty || (LoopFreqA != null && LoopIntA != null);
bool hasB = !StreamB.IsEmpty || (LoopFreqB != null && LoopIntB != null);
var (freqA, intA) = PopWave(StreamA, LoopFreqA, LoopIntA); var (freqA, intA) = PopWave(StreamA, LoopFreqA, LoopIntA);
var (freqB, intB) = PopWave(StreamB, LoopFreqB, LoopIntB); var (freqB, intB) = PopWave(StreamB, LoopFreqB, LoopIntB);
LastIntensityA = hasA ? (intA[0] + intA[1] + intA[2] + intA[3]) / 4 : 0;
LastIntensityB = hasB ? (intB[0] + intB[1] + intB[2] + intB[3]) / 4 : 0;
return (modeA, valA, modeB, valB, freqA, intA, freqB, intB); return (modeA, valA, modeB, valB, freqA, intA, freqB, intB);
} }
} }