现场程序优化

This commit is contained in:
2026-08-12 18:16:50 +08:00
parent b43090e56e
commit 30f5f6f8d6
16 changed files with 1020 additions and 26 deletions
+69 -2
View File
@@ -30,6 +30,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 建立 TCP 连接,成功后自动激活心跳
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>连接是否成功</returns>
public new async Task<bool> ConnectAsync(CancellationToken ct = default)
{
bool isConnected = await base.ConnectAsync(ct);
@@ -124,6 +126,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.1.1 读取电源的相关信息(制造商, 产品标号, 产品序列号, 软件版本号)
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>设备标识字符串(制造商, 产品标号, 产品序列号, 软件版本号)</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
return await WriteReadAsync($"*IDN?{SCPIDelimiter}", SCPIDelimiter, ct);
@@ -132,6 +136,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.1.2 从指定的单位中恢复 *SAV 命令保存的设定值 (参数:1~99)
/// </summary>
/// <param name="组别">存储组编号 (范围: 1~99)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (int , CancellationToken ct = default)
{
if ( < 1 || > 99) throw new ArgumentOutOfRangeException(nameof(), "组别有效范围为 1~99");
@@ -141,6 +147,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.1.3 将仪器当前系统状态保存到非易失性内存中 (参数:1~99)
/// </summary>
/// <param name="组别">存储组编号 (范围: 1~99)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (int , CancellationToken ct = default)
{
if ( < 1 || > 99) throw new ArgumentOutOfRangeException(nameof(), "组别有效范围为 1~99");
@@ -150,6 +158,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.1.4 远程控制触发一次
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
await SendAsync($"*TRG{SCPIDelimiter}", ct);
@@ -158,6 +167,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.1.5 返回状态、采集电压、采集电流 (格式: 状态码,电压值,电流值)
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>状态码,电压值,电流值的组合字符串</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
return await WriteReadAsync($"*ALL?{SCPIDelimiter}", SCPIDelimiter, ct);
@@ -170,6 +181,9 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.2.1 设置输出电压和输出电流值
/// </summary>
/// <param name="电压">输出电压设定值 (单位: V)</param>
/// <param name="电流">输出电流设定值 (单位: A)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (double , double , CancellationToken ct = default)
{
// 修正:去除前缀冒号,规范应用 APPL 短格式
@@ -180,6 +194,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.2.1 查询当前设定的输出电压和电流值
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>当前输出电压和电流设定值的组合字符串</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -193,6 +209,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.5.1 查询通道输出端子上测得的直流电流值 (A)
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>实测直流电流值 (单位: A)</returns>
[Monitorable("低压直流电源电流")]
public virtual async Task<string> (CancellationToken ct = default)
{
@@ -203,6 +221,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.5.2 查询通道输出端子上测得的直流功率值 (W)
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>实测直流功率值 (单位: W)</returns>
[Monitorable("低压直流电源功率")]
public virtual async Task<string> (CancellationToken ct = default)
{
@@ -213,6 +233,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.5.3 查询通道输出端子上测得的直流电压值 (V)
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>实测直流电压值 (单位: V)</returns>
[Monitorable("低压直流电源电压")]
public virtual async Task<string> (CancellationToken ct = default)
{
@@ -223,6 +245,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.5.4 查询通道输出端子上测得的电压、电流和功率的组合值
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>电压、电流和功率的组合值字符串</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -233,6 +257,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.5.5 查询通道输出端子上测得的输出时间长度
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>输出时间长度</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -246,6 +272,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.6.1 设置电源输出开关
/// </summary>
/// <param name="开启">true: 开启输出, false: 关闭输出</param>
/// <param name="ct">取消令牌</param>
public virtual async Task DC输出(bool , CancellationToken ct = default)
{
// 修正:去除前缀冒号,改用 OUTP 短格式
@@ -256,6 +284,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.6.1 查询通道输出状态 (返回 ON 或 OFF)
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>通道输出状态字符串("ON" 或 "OFF"</returns>
public virtual async Task<string> DC输出状态(CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -265,6 +295,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.6.2 控制电源输出定时器的开关状态
/// </summary>
/// <param name="开启">true: 开启定时器, false: 关闭定时器</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (bool , CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -275,6 +307,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.6.3 设定电源输出定时器的时间 (单位: s, 范围: 0.1 ~ 999999.9)
/// </summary>
/// <param name="秒数">定时器时间 (单位: s, 范围: 0.1 ~ 999999.9)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (double , CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -285,6 +319,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.6.4 设定电源输出的模式优先权 (CV优先 或 CC优先)
/// </summary>
/// <param name="是CV优先">true: CV优先, false: CC优先</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (bool CV优先, CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -299,6 +335,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.1.1 清除输出电流保护(OCP)电路状态
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -308,6 +345,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.1.2 使能或禁止当前输出电流保护(OCP)电路
/// </summary>
/// <param name="启用">true: 使能OCP, false: 禁止OCP</param>
/// <param name="ct">取消令牌</param>
public virtual async Task 使(bool , CancellationToken ct = default)
{
// 修正:去除前缀冒号,将 STATE 改为更常用的 STAT 简写
@@ -318,6 +357,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.1.4 设置输出电流保护(OCP)阀值 (A)
/// </summary>
/// <param name="电流">OCP 保护阀值 (单位: A)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (double , CancellationToken ct = default)
{
// 修正:去除前缀冒号。按 NGI 通用指令树,加上层级限制或者直接作用于 CURR:PROT
@@ -328,6 +369,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.1.7 设置电源的输出电流值 (A)
/// </summary>
/// <param name="电流">输出电流设定值 (单位: A)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (double , CancellationToken ct = default)
{
// 修正:去除前缀冒号,改用标准 CURR 短格式
@@ -338,6 +381,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.2.1 清除输出电压保护(OVP)电路状态
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -347,6 +391,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.2.2 使能或禁止当前输出电压保护(OVP)电路
/// </summary>
/// <param name="启用">true: 使能OVP, false: 禁止OVP</param>
/// <param name="ct">取消令牌</param>
public virtual async Task 使(bool , CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -357,6 +403,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.2.4 设置输出电压保护(OVP)阀值 (V)
/// </summary>
/// <param name="电压">OVP 保护阀值 (单位: V)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (double , CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -367,6 +415,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.2.7 设置电源的输出电压值 (V)
/// </summary>
/// <param name="电压">输出电压设定值 (单位: V)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (double , CancellationToken ct = default)
{
// 修正:去除前缀冒号,改用标准 VOLT 短格式
@@ -377,6 +427,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.2.8 设定电压输出范围的上限电压值 (V)
/// </summary>
/// <param name="电压">上限电压值 (单位: V)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (double , CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -386,14 +438,17 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.2.9 清除电压上限限制(恢复为设备物理允许的最大电压值)
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
// 发送 MAXimum 设为最大值以达到清除限制的效果
// 发送 MAXimum 设为最大值以达到"清除限制"的效果
await SendAsync($"VOLT:LIMIT MAX{SCPIDelimiter}", ct); // 对应手册 3.7.2.8
}
/// <summary>
/// 3.7.3.1 设置输出功率值 (W)
/// </summary>
/// <param name="功率">输出功率设定值 (单位: W)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (double , CancellationToken ct = default)
{
// 修正:去除前缀冒号,改用标准 POW 短格式
@@ -404,6 +459,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.7.3.2 禁止或使能当前恒功率(CP)输出
/// </summary>
/// <param name="启用">true: 使能恒功率输出, false: 禁止恒功率输出</param>
/// <param name="ct">取消令牌</param>
public virtual async Task 使(bool , CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -418,6 +475,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.9.1 控制蜂鸣器开关
/// </summary>
/// <param name="开启">true: 开启蜂鸣器, false: 关闭蜂鸣器</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (bool , CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -428,6 +487,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.9.2 使蜂鸣器强制鸣叫一声
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -437,6 +497,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.9.4 查询仪器当前出错记录数量 (最大 18 组)
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>当前出错记录数量(最大 18 组)</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -446,6 +508,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.9.5 读取仪器的出错信息 (成功返回 0,"No error")
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>错误代码和描述信息(成功返回 0,"No error"</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -455,6 +519,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.9.7 设置电源为面板控制模式 (本地 Local 状态,前面板按键可用)
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -464,6 +529,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.9.8 设置电源为远程控制模式 (Remote 状态)
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -473,6 +539,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 3.9.9 通过通信接口设置电源为远程控制锁定模式
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
// 修正:去除前缀冒号
@@ -481,4 +548,4 @@ namespace DeviceCommand.Devices
#endregion
}
}
}