现场程序优化

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
+32 -1
View File
@@ -27,6 +27,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 清除状态命令。清除标准事件状态寄存器和错误队列
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
await SendAsync($"*CLS{ScpiDelimiter}", ct);
@@ -42,6 +43,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 读取功率分析仪识别字符串(制造商、产品型号、系统 SN、软件版本号)
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>设备标识字符串(制造商, 产品型号, 系统 SN, 软件版本号)</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
return await WriteReadAsync($"*IDN?{ScpiDelimiter}", ScpiDelimiter, ct);
@@ -50,6 +53,7 @@ namespace DeviceCommand.Devices
/// <summary>
/// 复位命令。使功率分析仪恢复到出厂默认配置状态
/// </summary>
/// <param name="ct">取消令牌</param>
public virtual async Task (CancellationToken ct = default)
{
await SendAsync($"*RST{ScpiDelimiter}", ct);
@@ -58,6 +62,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 读取标准状态字节寄存器
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>标准状态字节寄存器值</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
return await WriteReadAsync($"*STB?{ScpiDelimiter}", ScpiDelimiter, ct);
@@ -70,6 +76,9 @@ namespace DeviceCommand.Devices
/// <summary>
/// 查询指定通道的实时 RMS 电压值 (单位: V)
/// </summary>
/// <param name="channel">通道号/单元号</param>
/// <param name="ct">取消令牌</param>
/// <returns>实时 RMS 电压值 (单位: V)</returns>
public virtual async Task<string> (int channel, CancellationToken ct = default)
{
// 1. 先配置 ITEM1 为指定通道的电压有效值 (URMS)
@@ -84,6 +93,9 @@ namespace DeviceCommand.Devices
/// <summary>
/// 查询指定通道的实时 RMS 电流值 (单位: A)
/// </summary>
/// <param name="channel">通道号/单元号</param>
/// <param name="ct">取消令牌</param>
/// <returns>实时 RMS 电流值 (单位: A)</returns>
public virtual async Task<string> (int channel, CancellationToken ct = default)
{
// 1. 配置 ITEM1 为指定通道的电流有效值 (IRMS)
@@ -98,6 +110,9 @@ namespace DeviceCommand.Devices
/// <summary>
/// 查询指定通道的实时有功功率值 (单位: W)
/// </summary>
/// <param name="channel">通道号/单元号</param>
/// <param name="ct">取消令牌</param>
/// <returns>实时有功功率值 (单位: W)</returns>
public virtual async Task<string> (int channel, CancellationToken ct = default)
{
// 1. 配置 ITEM1 为指定通道的有功功率 (P)
@@ -112,6 +127,9 @@ namespace DeviceCommand.Devices
/// <summary>
/// 查询指定通道的实时频率值 (单位: Hz)
/// </summary>
/// <param name="channel">通道号/单元号</param>
/// <param name="ct">取消令牌</param>
/// <returns>实时频率值 (单位: Hz)</returns>
public virtual async Task<string> (int channel, CancellationToken ct = default)
{
// 1. 配置 ITEM1 为指定通道的电压频率 (FU)
@@ -126,6 +144,9 @@ namespace DeviceCommand.Devices
/// <summary>
/// 查询指定通道的功率因数 (Power Factor)
/// </summary>
/// <param name="channel">通道号/单元号</param>
/// <param name="ct">取消令牌</param>
/// <returns>功率因数值</returns>
public virtual async Task<string> (int channel, CancellationToken ct = default)
{
// 1. 配置 ITEM1 为指定通道的功率因数 (LAMBda)
@@ -204,6 +225,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 14. 查询仪器型号名称
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>仪器型号名称字符串</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
return await WriteReadAsync($":SYSTem:MODel?{ScpiDelimiter}", ScpiDelimiter, ct); //
@@ -212,6 +235,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 16. 查询仪器唯一序列号
/// </summary>
/// <param name="ct">取消令牌</param>
/// <returns>仪器唯一序列号字符串</returns>
public virtual async Task<string> (CancellationToken ct = default)
{
return await WriteReadAsync($":SYSTem:SERial?{ScpiDelimiter}", ScpiDelimiter, ct); //
@@ -221,6 +246,7 @@ namespace DeviceCommand.Devices
/// 15. 设置数值数据显示的分辨率 (5位或6位)
/// </summary>
/// <param name="resolution">有效值只能为 5 或 6</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (int resolution, CancellationToken ct = default)
{
if (resolution != 5 && resolution != 6) throw new ArgumentException("分辨率只能设置为 5 或 6 位");
@@ -230,6 +256,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 13. 设置或查询屏幕 LCD 的亮度级别 (1-10)
/// </summary>
/// <param name="brightness">亮度级别 (范围: 1 - 10)</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (int brightness, CancellationToken ct = default)
{
if (brightness < 1 || brightness > 10) throw new ArgumentOutOfRangeException(nameof(brightness), "亮度范围必须在 1~10 之间");
@@ -239,6 +267,8 @@ namespace DeviceCommand.Devices
/// <summary>
/// 18. 设置或查询触摸锁的开/关状态 (锁定时防止人工误触触控屏)
/// </summary>
/// <param name="isLocked">true: 锁定触摸, false: 解锁触摸</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (bool isLocked, CancellationToken ct = default)
{
string state = isLocked ? "ON" : "OFF";
@@ -249,6 +279,7 @@ namespace DeviceCommand.Devices
/// 17. 设置或读取分析仪当前的系统内部时间
/// </summary>
/// <param name="timeStr">格式必须为 "HH:MM:SS"</param>
/// <param name="ct">取消令牌</param>
public virtual async Task (string timeStr, CancellationToken ct = default)
{
await SendAsync($":SYSTem:TIME \"{timeStr}\"{ScpiDelimiter}", ct); //
@@ -256,4 +287,4 @@ namespace DeviceCommand.Devices
#endregion
}
}
}