源适应性界面优化

This commit is contained in:
“hsc”
2026-10-12 08:49:04 +08:00
parent 8dd08fcc7a
commit d84f2a874b
3 changed files with 32 additions and 4 deletions
+10
View File
@@ -350,6 +350,16 @@ namespace DeviceCommand.Devices
await SendAsync($"SOUR:LIST:COUN {count}{ScpiDelimiter}", ct);
}
/// <summary>
/// 查询当前相位上下文的列表执行次数 (SOUR:LIST:COUN?),用于下发后回读校验
/// </summary>
/// <returns>执行次数 (0 = 无限循环);解析失败返回 -1</returns>
public virtual async Task<int> 查询列表执行次数Async(CancellationToken ct = default)
{
string resp = await WriteReadAsync($"SOUR:LIST:COUN?{ScpiDelimiter}", ScpiDelimiter, ct);
return int.TryParse(resp.Trim(), out int val) ? val : -1;
}
/// <summary>
/// 设定列表点的静止时间顺序 (SOUR:LIST:DWEL)
/// </summary>
@@ -311,6 +311,7 @@ namespace PowerAdaptabilityModule.ViewModels
public ICommand ListStopCommand { get; }
public ICommand DownloadSynthesisCommand { get; }
public ICommand SynthStopCommand { get; }
public ICommand ResetSynthHarmonicsCommand { get; }
public ICommand LoadSynthPresetCommand { get; }
public ICommand SaveSynthPresetCommand { get; }
public ICommand DeleteSynthPresetCommand { get; }
@@ -445,21 +446,26 @@ namespace PowerAdaptabilityModule.ViewModels
await _dev!.清除错误队列Async(Ct()); // *CLS
await _dev.设置单三相模式Async(true, Ct()); // INST:PHAS THREE
await _dev.设置编辑方式Async("EACH", Ct()); // INST:EDIT EACH(逐相独立编辑)
await _dev.设置列表执行次数Async(ListCount, Ct()); // LIST:COUN(0=无限循环)
await _dev.设置列表触发形态Async(ListTrigger, Ct()); // LIST:TRIG
await _dev.设置列表时间基础Async(ListTimeBase, Ct()); // LIST:BASE
for (int p = 0; p < 3; p++)
{
await _dev.选择相位Async(p + 1, Ct()); // INST:NSEL 1|2|3
// COUN/TRIG/BASE 在 EACH 逐相编辑模式下随相位上下文分相:必须在每相 NSEL 之后各发一次,
// 否则未选中的相 COUN 保持默认 0(无限循环),表现为“设了次数仍一直执行”
await _dev.设置列表执行次数Async(ListCount, Ct()); // LIST:COUN(0=无限循环)
await _dev.设置列表触发形态Async(ListTrigger, Ct()); // LIST:TRIG
await _dev.设置列表时间基础Async(ListTimeBase, Ct()); // LIST:BASE
await 下发单相序列Async(_phaseConfigs[p]); // FUNC:SHAP:A + LIST:xxx 序列
}
await _dev.延时Async(StartDelayMs, Ct()); // *D 200(等待仪器就绪)
await _dev.设置操作模态Async("LIST", Ct()); // OUTP:MODE LIST
// 回读校验:确认 COUN 真的写入(当前相位上下文=相3);读回 0 而设>0 即未生效
int counBack = await _dev.查询列表执行次数Async(Ct());
await _dev.触发列表执行Async(true, Ct()); // TRIG ON
Log($"三相独立 LIST 已下发并启动(触发={ListTrigger} 次数={(ListCount == 0 ? "无限" : ListCount.ToString())} 时基={ListTimeBase})");
Log($"三相独立 LIST 已下发并启动(触发={ListTrigger} 次数={(ListCount == 0 ? "无限" : ListCount.ToString())} 时基={ListTimeBase};回读COUN={counBack})");
}));
ListStopCommand = new DelegateCommand(async () =>
@@ -502,6 +508,15 @@ namespace PowerAdaptabilityModule.ViewModels
SynthStopCommand = new DelegateCommand(async () =>
await Exec(async () => { await _dev!.触发列表执行Async(false, Ct()); Log("SYNTHESIS 已停止执行(TRIG OFF)"); }));
// 重置谐波:把振幅/相位两个序列框填成 50 个 0(仅改界面文本,需再点「下发并启动 SYNTH」才写入仪器)
ResetSynthHarmonicsCommand = new DelegateCommand(() =>
{
string zeros = string.Join(",", Enumerable.Repeat("0", 50));
SynthAmplitudeText = zeros;
SynthPhaseText = zeros;
Log("SYNTHESIS 谐波已重置:振幅/相位两框均填入 50 个 0;点「下发并启动 SYNTH」写入仪器");
});
// 合成波形的载入 / 保存 / 删除(与 LIST 测试项同机制,文件存于 D:\acp\源测试\合成波形)
LoadSynthPresetCommand = new DelegateCommand(LoadCurrentSynthPreset);
SaveSynthPresetCommand = new DelegateCommand(SaveCurrentSynthPreset);
@@ -407,6 +407,9 @@
Background="#388E3C" Foreground="White" />
<Button Content="停止 SYNTH" Command="{Binding SynthStopCommand}"
Style="{StaticResource WarnBtn}" />
<Button Content="重置谐波(50个0)" Command="{Binding ResetSynthHarmonicsCommand}"
Style="{StaticResource CmdBtn}"
ToolTip="把谐波振幅/相位两框填成 50 个 0(仅改界面文本,需再点「下发并启动 SYNTH」才写入仪器)" />
</StackPanel>
</StackPanel>
</GroupBox>