list更改
This commit is contained in:
@@ -2,6 +2,7 @@ using DeviceCommand.Devices;
|
||||
using Prism.Commands;
|
||||
using Prism.Ioc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
@@ -30,6 +31,12 @@ namespace DeviceEditModule.ViewModels
|
||||
private double _voltage; public double Voltage { get => _voltage; set => SetProperty(ref _voltage, value); }
|
||||
private double _frequency = 50; public double Frequency { get => _frequency; set => SetProperty(ref _frequency, value); }
|
||||
private string _waveform = "SINE"; public string Waveform { get => _waveform; set => SetProperty(ref _waveform, value); }
|
||||
|
||||
/// <summary>相位选择列表: 0=ALL(三相同时), 1=A相, 2=B相, 3=C相</summary>
|
||||
public List<string> PhaseOptions { get; } = new() { "ALL (三相)", "A相 (Φ1)", "B相 (Φ2)", "C相 (Φ3)" };
|
||||
private int _selectedPhaseIndex;
|
||||
/// <summary>当前选中的相位索引 (0=ALL, 1=A, 2=B, 3=C)</summary>
|
||||
public int SelectedPhaseIndex { get => _selectedPhaseIndex; set => SetProperty(ref _selectedPhaseIndex, value); }
|
||||
#endregion
|
||||
|
||||
#region 测量结果
|
||||
@@ -60,18 +67,34 @@ namespace DeviceEditModule.ViewModels
|
||||
Reset = new DelegateCommand(async () => await Exec(async () => { await _dev!.复位Async(Ct()); Log("设备已复位"); }));
|
||||
OutOn = new DelegateCommand(async () => await Exec(async () => { await _dev!.设置输出开关Async(true, Ct()); Log("输出已开启"); }));
|
||||
OutOff = new DelegateCommand(async () => await Exec(async () => { await _dev!.设置输出开关Async(false, Ct()); Log("输出已关闭"); }));
|
||||
SetV = new DelegateCommand(async () => await Exec(async () => { await _dev!.设置交流电压Async(Voltage, Ct()); Log($"电压={Voltage}V"); }));
|
||||
SetF = new DelegateCommand(async () => await Exec(async () => { await _dev!.设置频率Async(Frequency, Ct()); Log($"频率={Frequency}Hz"); }));
|
||||
SetWave = new DelegateCommand(async () => await Exec(async () => { await _dev!.设置波形Async(Waveform, Ct()); Log($"波形={Waveform}"); }));
|
||||
SetV = new DelegateCommand(async () => await Exec(async () =>
|
||||
{
|
||||
await ApplyPhaseAsync();
|
||||
await _dev!.设置交流电压Async(Voltage, Ct());
|
||||
Log($"电压={Voltage}V → {PhaseLabel}");
|
||||
}));
|
||||
SetF = new DelegateCommand(async () => await Exec(async () =>
|
||||
{
|
||||
await ApplyPhaseAsync();
|
||||
await _dev!.设置频率Async(Frequency, Ct());
|
||||
Log($"频率={Frequency}Hz → {PhaseLabel}");
|
||||
}));
|
||||
SetWave = new DelegateCommand(async () => await Exec(async () =>
|
||||
{
|
||||
await ApplyPhaseAsync();
|
||||
await _dev!.设置波形Async(Waveform, Ct());
|
||||
Log($"波形={Waveform} → {PhaseLabel}");
|
||||
}));
|
||||
SetThreePhase = new DelegateCommand(async () => await Exec(async () => { await _dev!.设置单三相模式Async(true, Ct()); Log("三相模式"); }));
|
||||
SetSinglePhase = new DelegateCommand(async () => await Exec(async () => { await _dev!.设置单三相模式Async(false, Ct()); Log("单相模式"); }));
|
||||
QMeas = new DelegateCommand(async () => await Exec(async () =>
|
||||
{
|
||||
await ApplyPhaseAsync();
|
||||
MeasuredVoltage = await _dev!.读取交流电压Async(Ct());
|
||||
MeasuredCurrent = await _dev!.读取交流电流Async(Ct());
|
||||
MeasuredFrequency = await _dev!.读取频率Async(Ct());
|
||||
MeasuredPower = await _dev!.读取真实功率Async(Ct());
|
||||
Log($"测量→V:{MeasuredVoltage} I:{MeasuredCurrent} F:{MeasuredFrequency} P:{MeasuredPower}");
|
||||
Log($"测量[{PhaseLabel}]→V:{MeasuredVoltage} I:{MeasuredCurrent} F:{MeasuredFrequency} P:{MeasuredPower}");
|
||||
}));
|
||||
Initialize();
|
||||
}
|
||||
@@ -106,6 +129,32 @@ namespace DeviceEditModule.ViewModels
|
||||
|
||||
#region 辅助
|
||||
|
||||
/// <summary>当前选中相位的显示标签</summary>
|
||||
private string PhaseLabel => SelectedPhaseIndex switch
|
||||
{
|
||||
1 => "A相",
|
||||
2 => "B相",
|
||||
3 => "C相",
|
||||
_ => "ALL"
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 根据 SelectedPhaseIndex 发送 INST:COUP / INST:NSEL 命令切换相位上下文。
|
||||
/// <para>索引 0 → INST:COUP ALL (三相同时);索引 1~3 → INST:COUP NONE + INST:NSEL n</para>
|
||||
/// </summary>
|
||||
private async Task ApplyPhaseAsync()
|
||||
{
|
||||
if (SelectedPhaseIndex == 0)
|
||||
{
|
||||
await _dev!.设置相位耦合Async("ALL", Ct());
|
||||
}
|
||||
else
|
||||
{
|
||||
await _dev!.设置相位耦合Async("NONE", Ct());
|
||||
await _dev!.选择相位Async(SelectedPhaseIndex, Ct());
|
||||
}
|
||||
}
|
||||
|
||||
private CancellationToken Ct() => (_cts = new CancellationTokenSource(TimeSpan.FromSeconds(10))).Token;
|
||||
|
||||
private async Task Exec(Func<Task> action)
|
||||
|
||||
@@ -94,6 +94,12 @@
|
||||
</StackPanel>
|
||||
<GroupBox Header="参数设置" Margin="0,0,0,8" materialDesign:ColorZoneAssist.Mode="PrimaryLight">
|
||||
<StackPanel Margin="4">
|
||||
<StackPanel Orientation="Horizontal" Margin="0,4">
|
||||
<TextBlock Text="相位选择" Style="{StaticResource ParamLabel}"/>
|
||||
<ComboBox Width="130" VerticalAlignment="Center" Margin="4,0"
|
||||
ItemsSource="{Binding PhaseOptions}"
|
||||
SelectedIndex="{Binding SelectedPhaseIndex}"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,4">
|
||||
<TextBlock Text="电压 (V)" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Style="{StaticResource NumInput}"
|
||||
|
||||
Reference in New Issue
Block a user