更新122

This commit is contained in:
GukSang.Jin
2026-05-19 20:33:16 +08:00
parent eb5fa4a948
commit 69557bc108
10 changed files with 243 additions and 47 deletions

View File

@@ -63,6 +63,7 @@ namespace TabletTester2025.ViewModels
[ObservableProperty] private double _hardnessValue;
[ObservableProperty] private bool _hardnessPass;
[ObservableProperty] private double _hardnessAvg;
[ObservableProperty] private double _hardnessAverageDeviation;
[ObservableProperty] private double _hardnessRSD;
[ObservableProperty] private double _hardnessInternalMin = 40;
[ObservableProperty] private double _hardnessInternalMax = 60;
@@ -83,6 +84,7 @@ namespace TabletTester2025.ViewModels
private List<double> _hardnessResults = new();
public ObservableCollection<HardnessSamplePoint> HardnessSamplePoints { get; } = new();
// 脆碎度
[ObservableProperty] private double _weightBefore;
@@ -245,8 +247,13 @@ namespace TabletTester2025.ViewModels
await Task.Delay(100); // 脉冲宽度可根据PLC程序调整20~100ms
await _plc.WriteCoilAsync(_plcConfig.HardnessStartReset, false);
_hardnessResults.Clear();
HardnessSamplePoints.Clear();
HardnessCurrentCount = 0;
HardnessAvg = 0;
HardnessAverageDeviation = 0;
HardnessRSD = 0;
HardnessMax = 0;
HardnessMin= 0;
HardnessMin= 0;
HardnessShishilizhi = 0;
Phase = TestPhase.Idle;
@@ -1289,8 +1296,10 @@ namespace TabletTester2025.ViewModels
Phase = TestPhase.Running;
HardnessPass = false;
_hardnessResults.Clear();
HardnessSamplePoints.Clear();
HardnessCurrentCount = 0;
HardnessAvg = 0;
HardnessAverageDeviation = 0;
HardnessRSD = 0;
HardnessMax = 0;
HardnessMin = 0;
@@ -1321,6 +1330,12 @@ namespace TabletTester2025.ViewModels
await WaitForCoilStateAsync(completeCoil, true, TimeSpan.FromSeconds(120), "等待硬度完成信号超时");
double value = await ReadHardnessResultAsync();
_hardnessResults.Add(value);
HardnessSamplePoints.Add(new HardnessSamplePoint
{
SequenceNo = _hardnessResults.Count,
Value = value,
RecordedAt = DateTime.Now
});
ApplyHardnessStatistics(count);
await WaitForCoilStateAsync(completeCoil, false, TimeSpan.FromSeconds(10), "硬度完成信号未回落");
}
@@ -1397,11 +1412,15 @@ namespace TabletTester2025.ViewModels
requiredCount);
HardnessAvg = stats.Average;
HardnessAverageDeviation = stats.AverageDeviation;
HardnessRSD = stats.RsdPercent;
HardnessMax = stats.Maximum;
HardnessMin = stats.Minimum;
HardnessCurrentCount = stats.Count;
HardnessPass = stats.IsPass;
foreach (var sample in HardnessSamplePoints)
sample.DeviationFromAverage = Math.Abs(sample.Value - stats.Average);
}
/// 脆碎度测试主逻辑(实时状态显示)
@@ -1793,6 +1812,7 @@ namespace TabletTester2025.ViewModels
// 硬度
HardnessAvg = HardnessAvg,
HardnessAverageDeviation = HardnessAverageDeviation,
HardnessRSD = HardnessRSD,
HardnessMax = HardnessMax,
HardnessMin = HardnessMin,
@@ -1854,8 +1874,11 @@ namespace TabletTester2025.ViewModels
.Where(s => s.ChannelName == _dissolutionResultChannel && s.Percent.HasValue)
.ToList()
: new List<DissolutionSamplePoint>();
var hardnessSamples = CurrentTest == TestType.Hardness
? HardnessSamplePoints.ToList()
: new List<HardnessSamplePoint>();
await Task.Run(() => _db.InsertBatch(batch, dissolutionSamples));
await Task.Run(() => _db.InsertBatch(batch, dissolutionSamples, hardnessSamples));
await Application.Current.Dispatcher.InvokeAsync(() =>