You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SCPI查询获取FSW频谱分析仪的浮点测量结果

问题解决方案

核心错误:读取命令用错了

你现在用fsw.write("SENS:MARK:MAX:PEAK?")发送查询命令,但write只负责发指令,不会返回仪器的响应数据。必须用query方法来发送查询并获取返回值——这是你得不到浮点结果的首要原因。

关键代码修正

把原来的打印行替换成:

# 发送查询并获取返回值
peak_power = fsw.query("SENS:MARK:MAX:PEAK?")
# 去除冗余字符并转成浮点型
peak_power_float = float(peak_power.strip())
print(f"{peak_power_float} dBm")

其他代码问题修正

  • 错误的带宽命令:fsw.write("FSW,'SENS:BAND:RES %d HZ" %resBW)这行多了冗余的FSW,,如果分辨率带宽需要小数,把%d改成%f,修正后:
    fsw.write("SENS:BAND:RES %f HZ" % resBW)
    
  • 加扫描完成等待:查询峰值前,最好加一行等待扫描完成的命令,避免读到旧数据:
    fsw.query("INIT:IMM; *OPC?")
    

仪器精度配置(可选)

如果还是只有整数,可能是仪器精度设置限制,添加以下命令调整测量小数位数:

# 设置标记测量保留3位小数
fsw.write("CALC:MARK:PREC 3")

完整修正代码示例

fsw = rm.open_resource("GPIB::15::INSTR")
fsw.write("DISP:TRAC ON")
fsw.write("*rst; status:preset; *cls")
fsw.write("SENS:FREQ:CENTER %d MHZ" % fc)
fsw.write("SENS:FREQ:SPAN %d MHZ" % span)
fsw.write("INP:ATT 20dB")
# 修正带宽命令
fsw.write("SENS:BAND:RES %f HZ" % resBW)
fsw.write("SENSE:MARK:MAX:PEAK")
fsw.write("INIT:CONT:OFF")
# 等待扫描完成
fsw.query("INIT:IMM; *OPC?")
fsw.write("CALC:MARK:FUNC:FPE:STAT ON")
fsw.write("CALC:MARK:FUNC:FPE:SORT Y")
# 正确读取并转换峰值数据
peak_power = fsw.query("SENS:MARK:MAX:PEAK?").strip()
peak_power_float = float(peak_power)
print(f"{peak_power_float} dBm")

内容的提问来源于stack exchange,提问作者Jasiel Hernández Trujillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:47:15