1、安装驱动NI-VISA
https://www.ni.com/zh-cn/support/downloads/drivers/download/packaged.ni-visa.544206.html
2、查询USB口的序列号
3、python编程
3.1、核心库pyvisa包安装
import pyvisa
import matplotlib.pyplot as plt
import numpy as np
3.2、
我们将创建一个 ResourceManager资源管理期对象,管理链接示波器的通信; 通过调用该对象的list_resources方法,可以获取到电脑上所有符合VISA通信协议的接口资源列表。这个列表包含了所有可访问的仪器资源,每个资源都有一个唯一的VISA地址,这个地址是用于与仪器进行通信的关键;
通过调用该对象的open_resource()打开与示波器的连接并建立对应的对象scope;
visa_address = 'USB0::0x2A8D::0x1797::CN58526321::INSTR'
rm = pyvisa.ResourceManager()
instruments = rm.list_resources()
scope = rm.open_resource(visa_address)
设置延时和清除,visa的timeout单位是毫秒,需要单独命令设置。
设置后,如果返回的时间大于timeout,才会报timeout error, 否则会一直等。这种情况适用于仪表对于复杂测试命令的需要稍长时间反应的情况。
scope.timeout = 20000
scope.write('*CLS')
通过scope对象实现对示波器信息发送和接收示波器的数据,其中.wirte()负责发送指令信息,.query()负责接收示波器的数据信息。
scope.write('*CLS')
scope.query('*IDN?')
后续的通信均是在这两个指令基础上进行操作,不同的参数决定了发送指令信息的不同和接收的数据信息的不同。更多参数如下所示:
# 初始化设置波形X,Y轴的偏置和尺度
scope.write(':CHANnel1:OFFSet ' + str(parse_read.ch1_offset))
scope.write(':CHANnel1:SCALe ' + str(parse_read.ch1_scale))
scope.write(':CHANnel1:PROBe 1')
scope.write(':CHANnel2:OFFSet ' + str(parse_read.ch2_offset))
scope.write(':CHANnel2:SCALe ' + str(parse_read.ch2_scale))
scope.write(':CHANnel2:PROBe 1')
scope.write(':TIMebase:SCALe ' + str(parse_read.time_scale)) # 800us
scope.write(':TIMebase:POSition ' + str(parse_read.time_position))
参数构成语法:'***** ‘中设置参数类型,如’:CHANnel1:OFFSet '表示通道1的偏置大小,其后加上设置参数的值,例如偏置大小设置为parse_read.ch1_offset(config文件中可集中更改)
scope.write(':CHANnel1:OFFSet 1')
scope.write(':CHANnel1:SCALe 1')
scope.write(':CHANnel2:OFFSet 3')
scope.write(':CHANnel2:SCALe 1')
scope.write(':TIMebase:SCALe 0.000008') # 800us
scope.write(':TIMebase:POSition 0.0')