From be7b45938577bd6c8941a1f64585bdffdfabfb04 Mon Sep 17 00:00:00 2001 From: hsc Date: Tue, 21 Jul 2026 15:51:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E6=9C=BA=E6=B5=8B=E8=AF=95=E4=BC=98?= =?UTF-8?q?=E5=8C=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ADP/ViewModels/Dialogs/MessageBoxViewModel.cs | 19 +++++++----- DeviceCommand/Devices/N69200.cs | 30 +++++++++++++++++-- DeviceCommand/Devices/SPAW7000.cs | 11 +++---- .../ViewModels/N69200ViewModel.cs | 18 +++++------ 4 files changed, 53 insertions(+), 25 deletions(-) diff --git a/ADP/ViewModels/Dialogs/MessageBoxViewModel.cs b/ADP/ViewModels/Dialogs/MessageBoxViewModel.cs index d16c403..fe380c9 100644 --- a/ADP/ViewModels/Dialogs/MessageBoxViewModel.cs +++ b/ADP/ViewModels/Dialogs/MessageBoxViewModel.cs @@ -1,6 +1,7 @@ using UIShare.PubEvent; using UIShare.ViewModelBase; using System.Windows.Input; +using System.Windows.Media; namespace ADP.ViewModels.Dialogs { @@ -22,8 +23,8 @@ namespace ADP.ViewModels.Dialogs set => SetProperty(ref _Message, value); } - private string _Icon= $"pack://siteoforigin:,,,/Resources/Images/info.png"; - public string Icon + private ImageSource _Icon = new System.Windows.Media.Imaging.BitmapImage(new System.Uri("pack://application:,,,/Images/info.png")); + public ImageSource Icon { get => _Icon; set => SetProperty(ref _Icon, value); @@ -101,13 +102,15 @@ namespace ADP.ViewModels.Dialogs Title = parameters.GetValue("Title"); Message = parameters.GetValue("Message"); var iconKey = parameters.GetValue("Icon"); // info / error / warn - Icon = iconKey switch + var bmp = (ImageSource)new System.Windows.Media.Imaging.BitmapImage(new System.Uri(iconKey switch { - "info" => $"pack://siteoforigin:,,,/Resources/Images/info.png", - "error" => $"pack://siteoforigin:,,,/Resources/Images/error.png", - "warn" => $"pack://siteoforigin:,,,/Resources/Images/warning.png", - _ => $"pack://siteoforigin:,,,/Resources/Images/info.png" // 默认 - }; + "info" => "pack://application:,,,/Images/info.png", + "error" => "pack://application:,,,/Images/error.png", + "warn" => "pack://application:,,,/Images/warning.png", + _ => "pack://application:,,,/Images/info.png" + })); + bmp.Freeze(); + Icon = bmp; ShowYes = parameters.GetValue("ShowYes"); diff --git a/DeviceCommand/Devices/N69200.cs b/DeviceCommand/Devices/N69200.cs index 0f393cc..8787216 100644 --- a/DeviceCommand/Devices/N69200.cs +++ b/DeviceCommand/Devices/N69200.cs @@ -109,10 +109,34 @@ namespace DeviceCommand.Devices /// 设置电子负载的基本工作模式 (INPut:FUNCtion ) /// (支持 CC, CV, CR, CP, CCD, CVD, CRD, CPD, OCP, OPP, ESR, MPP, SWEEP 等) /// - public virtual async Task 设置负载模式(string 模式, CancellationToken ct = default) + public enum DeviceWorkMode { - string modeUpper = 模式.ToUpper(); - await SendAsync($"INPut:FUNCtion {modeUpper}{ScpiDelimiter}", ct); + CC, + CV, + CR, + CP, + CCD, + ESR, + AUTO, + DISCHARGE, + CHARGE, + OCP, + CVD, + CRD, + MPP, + CVCC, + CRCC, + CPCC, + CVCR, + WAVE, + SWEEP, + OPP, + CPD, + SZ + } + public virtual async Task 设置负载模式(DeviceWorkMode 模式, CancellationToken ct = default) + { + await SendAsync($"INPut:FUNCtion {Enum.GetName(模式)}{ScpiDelimiter}", ct); } /// diff --git a/DeviceCommand/Devices/SPAW7000.cs b/DeviceCommand/Devices/SPAW7000.cs index 24af443..07fe720 100644 --- a/DeviceCommand/Devices/SPAW7000.cs +++ b/DeviceCommand/Devices/SPAW7000.cs @@ -32,12 +32,13 @@ namespace DeviceCommand.Devices await SendAsync($"*CLS{ScpiDelimiter}", ct); } /// - /// 查询错误信息 + /// 查询错误信息 发hsl居然可以但是手册上没有而且软件上也用不了这个命令 /// - public virtual async Task 查询错误信息(CancellationToken ct = default) - { - return await WriteReadAsync($":SYSTem:ERRor?{ScpiDelimiter}", ScpiDelimiter, ct); //[cite: 1] - } + //public virtual async Task 查询错误信息(CancellationToken ct = default) + //{ + // string query = string.Format(":SYSTem:ERRor?", ScpiDelimiter); + // return await WriteReadAsync(query, ScpiDelimiter, ct); + //} /// /// 读取功率分析仪识别字符串(制造商、产品型号、系统 SN、软件版本号) /// diff --git a/DeviceEditModule/ViewModels/N69200ViewModel.cs b/DeviceEditModule/ViewModels/N69200ViewModel.cs index 20d5cf2..c944fcb 100644 --- a/DeviceEditModule/ViewModels/N69200ViewModel.cs +++ b/DeviceEditModule/ViewModels/N69200ViewModel.cs @@ -6,6 +6,7 @@ using System.Threading; using System.Windows.Input; using UIShare.GlobalVariable; using UIShare.ViewModelBase; +using static DeviceCommand.Devices.N69200; namespace DeviceEditModule.ViewModels { @@ -49,9 +50,9 @@ namespace DeviceEditModule.ViewModels #region 输入参数属性 - private string _selectedMode = "CC"; + private DeviceWorkMode _selectedMode = DeviceWorkMode.CC; /// 工作模式:CC / CV / CP / CR。 - public string SelectedMode + public DeviceWorkMode SelectedMode { get => _selectedMode; set => SetProperty(ref _selectedMode, value); @@ -177,27 +178,26 @@ namespace DeviceEditModule.ViewModels SetLoadValueCommand = new DelegateCommand(async () => await Exec(async () => { - var mode = SelectedMode.ToUpperInvariant(); - switch (mode) + switch (SelectedMode) { - case "CC": + case DeviceWorkMode.CC: await _device!.设置恒电流CC(LoadValue, Ct()); AppendLog($"恒流 CC 已设为 {LoadValue} A"); break; - case "CV": + case DeviceWorkMode.CV: await _device!.设置恒电压CV(LoadValue, Ct()); AppendLog($"恒压 CV 已设为 {LoadValue} V"); break; - case "CP": + case DeviceWorkMode.CP: await _device!.设置恒功率CP(LoadValue, Ct()); AppendLog($"恒功率 CP 已设为 {LoadValue} W"); break; - case "CR": + case DeviceWorkMode.CR: await _device!.设置恒电阻CR(LoadValue, Ct()); AppendLog($"恒电阻 CR 已设为 {LoadValue} Ω"); break; default: - AppendLog($"未知模式 {SelectedMode},无法设置设定值"); + AppendLog($"模式 {SelectedMode} 不支持设置设定值"); break; } }));