From d83843d2fdb6bbdb1730892c80a542d4d8556c36 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9Chsc=E2=80=9D?= <“huangsucan@kaiyili-lab.com”>
Date: Fri, 4 Sep 2026 11:35:22 +0800
Subject: [PATCH] =?UTF-8?q?list=E6=A8=A1=E5=BC=8Fscpi=E5=91=BD=E4=BB=A4?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
DeviceCommand/Devices/Chroma61800.cs | 160 +++++++++++++++++++++++++++
1 file changed, 160 insertions(+)
diff --git a/DeviceCommand/Devices/Chroma61800.cs b/DeviceCommand/Devices/Chroma61800.cs
index 8679b07..aa93a10 100644
--- a/DeviceCommand/Devices/Chroma61800.cs
+++ b/DeviceCommand/Devices/Chroma61800.cs
@@ -228,6 +228,166 @@ namespace DeviceCommand.Devices
}
#endregion
+ #region 6. LIST 模式子系统 (LIST 子系统)
+
+ ///
+ /// 设定列表功能的模态 (SOUR:LIST:COUP)
+ ///
+ /// 耦合模态: ALL | NONE
+ public virtual async Task 设置列表耦合模态Async(string coupling, CancellationToken ct = default)
+ {
+ await SendAsync($"SOUR:LIST:COUP {coupling}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定列表功能的触发形态 (SOUR:LIST:TRIG)
+ ///
+ /// 触发形态: AUTO | MANUAL | EXCITE
+ public virtual async Task 设置列表触发形态Async(string triggerMode, CancellationToken ct = default)
+ {
+ await SendAsync($"SOUR:LIST:TRIG {triggerMode}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 查询列表功能的有效序列数 (SOUR:LIST:POIN?)
+ ///
+ /// 取消令牌
+ /// 有效序列数 (0 ~ 100)
+ public virtual async Task 查询列表有效序列数Async(CancellationToken ct = default)
+ {
+ string resp = await WriteReadAsync($"SOUR:LIST:POIN?{ScpiDelimiter}", ScpiDelimiter, ct);
+ return int.TryParse(resp.Trim(), out int val) ? val : 0;
+ }
+
+ ///
+ /// 设定列表执行完成前的执行次数 (SOUR:LIST:COUN)
+ ///
+ /// 执行次数 (0 ~ 65535)
+ public virtual async Task 设置列表执行次数Async(int count, CancellationToken ct = default)
+ {
+ await SendAsync($"SOUR:LIST:COUN {count}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定列表点的静止时间顺序 (SOUR:LIST:DWEL)
+ ///
+ /// 静止时间序列 (单位: ms,每个值 0 ~ 99999999.9)
+ public virtual async Task 设置列表静止时间顺序Async(double[] dwellTimes, CancellationToken ct = default)
+ {
+ string valStr = string.Join(",", Array.ConvertAll(dwellTimes, v => v.ToString("0.#", CultureInfo.InvariantCulture)));
+ await SendAsync($"SOUR:LIST:DWEL {valStr}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定波形缓冲区列表点数的顺序 (SOUR:LIST:SHAP)
+ ///
+ /// 波形缓冲区顺序,每个元素为 A 或 B
+ public virtual async Task 设置列表波形顺序Async(string[] shapes, CancellationToken ct = default)
+ {
+ string valStr = string.Join(",", shapes);
+ await SendAsync($"SOUR:LIST:SHAP {valStr}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定列表的时间基础 (SOUR:LIST:BASE)
+ ///
+ /// 时间基础: TIME | CYCLE
+ public virtual async Task 设置列表时间基础Async(string timeBase, CancellationToken ct = default)
+ {
+ await SendAsync($"SOUR:LIST:BASE {timeBase}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定 AC 起始电压列表点数的顺序 (SOUR:LIST:VOLT:AC:STAR)
+ ///
+ /// AC 起始电压序列 (单位: V,每个值 0.0 ~ 300.0)
+ public virtual async Task 设置列表AC起始电压顺序Async(double[] voltages, CancellationToken ct = default)
+ {
+ string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
+ await SendAsync($"SOUR:LIST:VOLT:AC:STAR {valStr}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定 AC 结束电压列表点数的顺序 (SOUR:LIST:VOLT:AC:END)
+ ///
+ /// AC 结束电压序列 (单位: V,每个值 0.0 ~ 300.0)
+ public virtual async Task 设置列表AC结束电压顺序Async(double[] voltages, CancellationToken ct = default)
+ {
+ string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
+ await SendAsync($"SOUR:LIST:VOLT:AC:END {valStr}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定 DC 起始电压列表点数的顺序 (SOUR:LIST:VOLT:DC:STAR)
+ ///
+ /// DC 起始电压序列 (单位: V,每个值 -424.2 ~ 414.2)
+ public virtual async Task 设置列表DC起始电压顺序Async(double[] voltages, CancellationToken ct = default)
+ {
+ string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
+ await SendAsync($"SOUR:LIST:VOLT:DC:STAR {valStr}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定 DC 结束电压列表点数的顺序 (SOUR:LIST:VOLT:DC:END)
+ ///
+ /// DC 结束电压序列 (单位: V,每个值 -424.2 ~ 414.2)
+ public virtual async Task 设置列表DC结束电压顺序Async(double[] voltages, CancellationToken ct = default)
+ {
+ string valStr = string.Join(",", Array.ConvertAll(voltages, v => v.ToString("0.###", CultureInfo.InvariantCulture)));
+ await SendAsync($"SOUR:LIST:VOLT:DC:END {valStr}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定起始频率列表点数的顺序 (SOUR:LIST:FREQ:STAR)
+ ///
+ /// 起始频率序列 (单位: Hz,每个值 15.00 ~ 100.00)
+ public virtual async Task 设置列表起始频率顺序Async(double[] frequencies, CancellationToken ct = default)
+ {
+ string valStr = string.Join(",", Array.ConvertAll(frequencies, v => v.ToString("0.##", CultureInfo.InvariantCulture)));
+ await SendAsync($"SOUR:LIST:FREQ:STAR {valStr}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定结束频率列表点数的顺序 (SOUR:LIST:FREQ:END)
+ ///
+ /// 结束频率序列 (单位: Hz,每个值 15.00 ~ 100.00)
+ public virtual async Task 设置列表结束频率顺序Async(double[] frequencies, CancellationToken ct = default)
+ {
+ string valStr = string.Join(",", Array.ConvertAll(frequencies, v => v.ToString("0.##", CultureInfo.InvariantCulture)));
+ await SendAsync($"SOUR:LIST:FREQ:END {valStr}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定相位角度列表点数的顺序 (SOUR:LIST:DEGR)
+ ///
+ /// 相位角度序列 (单位: °,每个值 0.0 ~ 359.9)
+ public virtual async Task 设置列表相位角度顺序Async(double[] degrees, CancellationToken ct = default)
+ {
+ string valStr = string.Join(",", Array.ConvertAll(degrees, v => v.ToString("0.#", CultureInfo.InvariantCulture)));
+ await SendAsync($"SOUR:LIST:DEGR {valStr}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 设定操作模态 (OUTP:MODE)
+ ///
+ /// 操作模态: FIXED | LIST | PULSE | STEP | SYNTH | INTERHAR
+ public virtual async Task 设置操作模态Async(string mode, CancellationToken ct = default)
+ {
+ await SendAsync($"OUTP:MODE {mode}{ScpiDelimiter}", ct);
+ }
+
+ ///
+ /// 在 LIST 模态下设定执行状态 (TRIG)
+ /// 需先通过 将 OUTP:MODE 设为 LIST
+ ///
+ /// true: 开始执行 LIST, false: 停止 LIST
+ public virtual async Task 触发列表执行Async(bool isOn, CancellationToken ct = default)
+ {
+ string state = isOn ? "ON" : "OFF";
+ await SendAsync($"TRIG {state}{ScpiDelimiter}", ct);
+ }
+
+ #endregion
}
}
\ No newline at end of file