源适应性界面优化
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user