Keysight N79xx/N89xx/N6705 系列 ELOG 缓冲区写入指针(当前写入位置)SCPI 查询
ELOG 采用环形循环缓冲区,无单独ELOG:POINTER?原生指令,依靠总容量、当前记录总数、最大缓存容量三个参数换算实时写入下标,搭配 DLOG 指针区分使用。
一、三条核心查询指令(单通道机型 N79/N89)
1. 查询 ELOG 已存储条目(当前有效记录数 = 当前写入已落盘条数)
scpi
:ELOG:COUNt?
返回N:最新写入条目索引,等价当前写入位置下标(新事件继续写入 N+1 位)。
2. 查询 ELOG 硬件最大缓存总深度(环形总容量上限)
scpi
:ELOG:SIZE? MAX
返回MAX_N:缓冲区满值,写满后从索引 1 循环覆盖(环形 WRAP)。
3. 多通道机型(N6705B/C 模块化,分通道独立 ELOG 缓存)
scpi
:CH1:ELOG:COUN?
:CH1:ELOG:SIZE? MAX
:CH2:ELOG:COUN?
二、当前写入位置数学换算(环形缓存指针)
缓存未满(COUN<MAX):当前写入指针 = :ELOG:COUN? + 1
例:COUNT=35.MAX=250 → 下一条写入第 36 号位
缓存写满(COUN=MAX):指针 = 1(回到缓冲区头部覆盖最早记录)
三、区分:DLOG 波形缓存原生写入指针(DLOG 有专用 POINTER)
DLOG 采样缓存可直接读实时写入下标,ELOG 无原生指针指令:
scpi
:DLOG:POINter? //DLOG专属,返回当前正在写入的采样点位置
四、配套辅助指令
清空 ELOG 缓存(指针重置为 1.COUNT 清零)
scpi
:ELOG:CLEar
读取单索引日志验证指针位置(读取即将写入位的前一条)
scpi
:ELOG:DATA?
五、Python 示例:自动计算 ELOG 实时写入位置
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::IP::5025::SOCKET")
cnt = int(inst.query(":ELOG:COUN?"))
max_size = int(inst.query(":ELOG:SIZE? MAX"))
if cnt < max_size:
write_ptr = cnt + 1
else:
write_ptr = 1
print(f"ELOG当前待写入缓冲区位置:{write_ptr}/{max_size}")
六、关键说明
ELOG 固件固定环形覆盖模式,不可关闭 WRAP,满容量强制从头覆写;
ELOG:COUN?永远返回有效现存日志条数,不是物理指针,但业务上等效当前写入位置基准;
若需要实时监控新增事件:轮询ELOG:COUN?,数值增大即有新数据写入对应指针位。