基于Python,NI-VISA的示波器的远程监控和控制(一)(环境的安装和大致流程)

本文介绍如何使用Python和NI-VISA协议实现示波器的远程控制。内容涵盖环境搭建、示波器连接、图形界面设计及图形处理。适合Python新手和示波器使用者。

 

原创:转载请著名出处。

代码整理后将在GIThub发出。

本文将介绍如何使用Python语言以及NI-VISA协议来实现对示波器的远程控制和监控。

主要分为以下四个部分:

1、环境的安装和实现

2、示波器的连接,以及驱动问题。

3、图形界面的设计以及指令的嵌入。

4、图形的获取和处理。

本文为第一部分,环境的安装和实现。

首先,我们需要安装python。现在,Python的版本应该是3.7左右。这里我也推荐3.7.

至于是否去官方下载,还是采用别的类似Anacando或者VS一类的带Python的库的软件,那就是随你们的愿啦,不过如果是Python的新手的话,我推荐VS,傻瓜操作让我收获了许多,不过要是追求简单。采用IPYHOTN或者自带的shell 的命令行操作也能帮助快速找到自己的错误。

而,NI-VISA这是一种美国的一家公司的协议,主要用来和仪器通信,当然这只是一种通信的格式,具体的操作我们还是要参照示波器的说明书。

所以这里我列出来需要的东西:

可以编译运行Python的软件。

示波器的操作说明书(带VISA操作的命令列表)

电脑。(哈哈)

 

<think>我们使用pyvisa库来控制示波器,并通过SCPI命令进行操作。步骤:1.连接MSO44示波器2.配置示波器通道、触发等(根据实际需求)3.运行采集4.保存波形数据(如CSV格式)截图(如PNG格式)到示波器外接的U盘注意:MSO44示波器外接U盘在示波器上有个路径,通常为"E:/"或"D:/",具体取决于示波器的设置。以下是个示例脚本,完成以下任务:-配置通道1通道2(根据实际情况调整)-单次采集-保存两个通道的波形数据到U盘-保存屏幕截图到U盘请确保已安装pyvisa相应后端(如NI-VISA或pyvisa-py)。</think>以下是个完整的Python脚本示例,用于控制泰克MSO44示波器采集数据并自动保存到外接U盘: ```python import pyvisa import time import os # 配置U盘路径 (示波器识别的路径) USB_PATH = "E:/" # 通常是E:/或D:/,根据示波器设置调整 def connect_oscilloscope(): """连接MSO44示波器""" rm = pyvisa.ResourceManager() try: # 替换为实际的示波器地址 (可通过pyvisa.ResourceManager().list_resources()查看) osc = rm.open_resource('USB0::0x0699::0x0528::C0123456::INSTR') osc.timeout = 10000 # 10秒超时 print(f"已连接示波器: {osc.query('*IDN?')}") return osc except Exception as e: print(f"连接错误: {str(e)}") return None def configure_oscilloscope(osc): """配置示波器基本参数""" try: # 重置示波器 osc.write("*RST") osc.write("*OPC?") # 等待操作完成 # 启用通道 osc.write("SELECT:CH1 ON") osc.write("SELECT:CH2 ON") # 设置触发 (边沿触发示例) osc.write("TRIG:A:TYPE EDGE") osc.write("TRIG:A:EDGE:SOURCE CH1") osc.write("TRIG:A:EDGE:SLOPE RISE") osc.write("TRIG:A:LEVEL:CH1 1.0") # 1.0V触发阈值 print("示波器配置完成") return True except Exception as e: print(f"配置错误: {str(e)}") return False def acquire_and_save_data(osc): """采集并保存数据到U盘""" try: # 单次采集 osc.write("ACQ:STOPAFTER SEQUENCE") osc.write("ACQ:STATE RUN") # 等待采集完成 while int(osc.query("BUSY?")): time.sleep(0.1) print("采集完成") # 保存截图 screenshot_path = os.path.join(USB_PATH, "oscilloscope_screenshot.png") osc.write(f"SAVE:IMAGE '{screenshot_path}'") # 保存波形数据 (CSV格式) for channel in [1, 2]: data_path = os.path.join(USB_PATH, f"channel{channel}_data.csv") osc.write(f"SAVE:WAVEFORM CH{channel}, '{data_path}'") print(f"数据已保存到U盘: {USB_PATH}") return True except Exception as e: print(f"数据保存错误: {str(e)}") return False # 主程序 if __name__ == "__main__": osc = connect_oscilloscope() if osc: if configure_oscilloscope(osc): acquire_and_save_data(osc) osc.close() ``` ### 关键功能说明: 1. **U盘路径配置**: ```python USB_PATH = "E:/" # 泰克示波器通常识别为E:/ ``` 这是示波器对外接U盘的识别路径,可通过示波器前面板的"Utility" > "System" > "File Path"查看确认[^4] 2. **数据保存命令**: - 截图保存: ```python osc.write(f"SAVE:IMAGE '{USB_PATH}oscilloscope_screenshot.png'") ``` - 波形数据保存: ```python osc.write(f"SAVE:WAVEFORM CH{channel}, '{USB_PATH}channel{channel}_data.csv'") ``` 3. **采集过程控制**: ```python # 设置单次采集 osc.write("ACQ:STOPAFTER SEQUENCE") osc.write("ACQ:STATE RUN") # 等待采集完成 while int(osc.query("BUSY?")): time.sleep(0.1) ``` ### 使用说明: 1. **准备工作**: - 将U盘插入示波器的USB端口 - 确认示波器已开启远程控制功能("Utility" > "Options" > "Remote Commands"设置为"ON") - 通过USB或LAN连接电脑与示波器 2. **执行脚本**: ```bash python mso44_data_capture.py ``` 3. **输出示例**: ``` 已连接示波器: TEKTRONIX,MSO44,... 示波器配置完成 采集完成 数据已保存到U盘: E:/ ``` 4. **U盘内容**: ``` E:/ ├── oscilloscope_screenshot.png ├── channel1_data.csv └── channel2_data.csv ``` ### 高级功能扩展: 1. **自定义文件名**: ```python timestamp = time.strftime("%Y%m%d_%H%M%S") screenshot_path = os.path.join(USB_PATH, f"capture_{timestamp}.png") ``` 2. **保存测量结果**: ```python # 添加测量值保存 osc.write("MEASUREMENT:MEAS1:SOURCE CH1") osc.write("MEASUREMENT:MEAS1:TYPE PK2PK") pk2pk = float(osc.query("MEASUREMENT:MEAS1:VALUE?")) with open(os.path.join(USB_PATH, "measurements.txt"), "w") as f: f.write(f"峰峰值: {pk2pk} V\n") ``` 3. **批量采集**: ```python for i in range(5): acquire_and_save_data(osc) time.sleep(1) # 采集间隔 ``` > 注意:MSO44示波器要求U盘格式为FAT32[^4]。如果遇到保存失败,请检查: > 1. U盘是否被正确识别 > 2. 文件路径格式是否正确(使用正斜杠`/`) > 3. 文件是否重名(MSO44不会自动覆盖文件)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值