python自动化测试读取测试仪器仪表数据,实测有效
可以方便快捷,节省时间,自动化测试,事半功倍。
pyvisa库是主要的
一些仪器允许传输在一次询问中传输大数据片。典型例子是示波器,可以传输整个电压波形。或者波形发生器,可以传输需要产生的整个波形数据。像这样的数据传输有两种方法:ASCII方式(慢,可读)或者二进制(快,难于调试)。PyVisa提供了这两种传输方式:pyvisa.resources.MessageBasedResource.query_ascii_values() 和 pyvisa.resources.MessageBasedResource.query_binary_values()。在预先设置好的情况下,可以使用pyvisa.resources.MessageBasedResource.query_values()。
然后就是通过设备命令就可以读取想要的数据了
import pyvisa as visa
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
import re
import time
matplotlib.rc("font", family='YouYuan')
rm = visa.ResourceManager()
res = rm.list_resources()
mydev = rm.open_resource(res[0])
mydev.write(':SENS:DIG:FUNC "CURR"')
cur_val = float(re.match('.*',mydev.query("MEAS:CURR?"))[0])
last_time =time.time()
first_time = last_time
sum = 0
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
curr = []
i = []
n = 0
plt.figure(figsize=(10, 5))
plt.grid(linestyle='-.')
while 1:
n = n+1
cur_time = time.time()
sum = sum + cur_val * (cur_time - last_time)
last_time = cur_time
cur_val = float(re.match('.*', mydev.query("MEAS:CURR?"))[0])
curr.append(cur_val*1000)
i.append(n)
if n >1000:
curr.pop(0)
i.pop(0)
plt.clf() # 清除之前画的图
plt.grid(linestyle='-.')
# time_local = [time.strftime("%Y-%m-%d", time.localtime(i / 1000)) for i in netWorthArray[:, 0]]
plt.plot(i,curr)
plt.title('均值:{:.5f} mA 累计时间:{:.3f} s 功耗:{:.3f} mAh'.format(np.mean(curr),cur_time - first_time,sum/3600*1000))
# # plt.set_xticks(xticks)
# plt.xticks(netWorthArray[:, 0],time_local)
# # plt.set_xticklabels(time_local, rotation=15)
#plt.show()
plt.xlabel('num')
plt.ylabel('mA')
plt.pause(0.01)
总之通过这类方式就可以读取任何你想要的数据,并远程控制仪器,有什么问题需要研究开发的加我
扣扣:2379714114,欢迎共同学习,或者留言