本文主要是介绍基于NI-VISA 、pyvisa和python的示波器控制(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文实验采用泰克(tektronix)MSO44 示波器,搭配MACBOOK PRO电脑,开发环境采用python 3.9 和PyCharm 以及python 的其他函数库来实现功能。另外使用了NI—VISA 库,本文只介绍如何准备工作和pyvisa的简介,下一章讲介绍如何控制及示波器采集波形数据。
准备工作
在开始之前我们需要做一些准备工作以:
- 安装NI-VISA,网址如下NI-VISA 下载:各位可自行下载安装相关;
- 安装python 3.9 ,网址为:Pyhon.org,各位可自行安装,值得注意的是MacBook自带了python 2.7 但是该版本官方已停止支持,建议尽快升级为最新版本,实际也有办法做替换的,但是我能力有限就未做替换直接下载了最新版本的python 3.9 ;
- 安装PyCharm,方便你的调试工作,选择Community版可免费使用。PyCharm 下载;
- 在PyCharm中新建项目并配置项目解释器;
- 安装相应的功能模块,
以上准备工作基本完成,
示波器控制
此处主要是用pyvisa 函数库来实现对示波器的指令发送控制操作,来让我们看下下面这些例子:
- 连接示波器
这里要这样写不能使用如下的写法,下面的写法会出现奇奇怪怪的问题或者没办法正常连接仪器,下面这种写法是之前旧的写法。import pyvisa as visa rm = visa.ResourceManager() rm.list_resources() my_instrument = rm.open_resource('GPIB0::14::INSTR') print(my_instrument.query('*IDN?'))
导入pyvisa之后,创建一个ResourceManager对象。它是可以带参数调用的但我没有去研究,这里是不带参数的调用,import visa
有了ResourceManager之后,就可以使用list_resources方法列出所有可用的资源。可以打印出来选择正确的设备名称
在这种情况下,有一个USB仪器的仪器编号为0,所以用实例化的ResourceManager打开“USB0::0x0699::0x0527::C018073::INSTR”,并将返回的对象赋值给my_instrument。
ResourceManager提供了不同类型的方法用于查询参数和属性print(my_instrument) <GPIBInstrument('USB0::0x0699::0x0527::C018073::INSTR')>
通过下面的函数查询设备信息,指令为“*IDN”,这个指令在支持NIVISA的设备上都适用。query函数可以替代发送指令的写和读两个函数,本来两条指令才能做的操作这一条指令就能办到。
所以:
等同于my_instrument.query("*IDN?")
my_instrument.write('*IDN?') print(my_instrument.read())
- 正确配置仪器很重要
正确配置仪器才能保证仪器能够返回我们想要的数据,而不是返回一堆错误和error来是我们头疼,所以正确配置仪器就很重要了。以下是read_termination和write_termination的设置指令
这里我们用“n”,也就是“换行”。这是一个常见的值,另一个是’ r ‘即’回车’,在某些情况下使用null字节’ 0 '。my_instrument.read_termination = '\n' my_instrument.write_termination = '\n' my_instrument.query('*IDN?')
以下指令用于设置波特率:my_instrument.baud_rate = 57600
- 检查指令是否存在错误
当使用query时,我们测试对仪器的写入和读取。首先要做的是尝试确定问题是在写操作还是读操作期间发生的。一般发送命令错误,仪器会发出提示声或者错误提示消息。
我们可以通过发送切换指令来确认示波器有么有正确识别指令。
如果发送的命令正确接受了但是读取出现了问题就要检查,读取部分是否有设置上的问题。比如read_termination属性是不是设置的不对。
建议在读取前加入一定的延时以确保能够完整的得到所需的数据。
这篇关于基于NI-VISA 、pyvisa和python的示波器控制(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!