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