【发布时间】:2021-09-19 19:03:19
【问题描述】:
我有一个运行串行端口的 python 程序连接到一个小板。一旦一种方法完成,程序就会从板子接收三个列表:t、volt 和curr。我想使用这些值构建三个列表:t_list、volt_list 和 curr_list。该板连接到一个 iorodeo 恒电位仪,每个方法周期只能运行 25 个周期,所以我需要将它给出的值从 t、volt 和 curr 传递到 t_list、volt_list 和curr_list 用于 x 次方法循环以绕过 25 个循环限制。问题是时间列表t 在每个方法循环的 0.003 秒处重新启动,所以我最终在最终的t_list 中得到一个重复的时间列表。有没有办法获取每个新的t 并让 python 程序计算一个新列表,该列表从最后一次开始并以总时间(以秒为单位)结束?
列表t 给出了一个以秒为单位的时间列表,其长度与curr 和volt 列表的长度相同。对于下面的脚本,第一个方法返回一个长度为 250 的列表 t,从 0.003 秒开始,到 0.75 秒结束。每个方法循环都应该是一样的。
这是脚本:
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 18 18:34:59 2021
@author: dallo
"""
from potentiostat import Potentiostat
import sys
import matplotlib.pyplot as plt
from serial import Serial
port = 'COM7'
num_pulse = 25 # Number of pulses (max = 25)
lo_pulse = (10, -1.0)
hi_pulse = (20, -0.1)
num_cycles = 3
dev = Potentiostat(port)
hw_variant = dev.get_hardware_variant()
dev.set_curr_range('1000uA')
dev.set_sample_rate(300)
step_list = []
curr_list = []
volt_list = []
t_list = []
# Add pulses to step list
for i in range(num_pulse):
step_list.append(lo_pulse)
step_list.append(hi_pulse)
# Test name and test parameters
test_name = 'multiStep'
test_param = {
'quietValue' : 0.0,
'quietTime' : 0,
'step' : step_list,
}
for i in range(num_cycles):
volt = []
curr = []
dev.set_param(test_name,test_param)
t,volt,curr = dev.run_test(test_name,display='pbar')
curr_list.extend(curr)
volt_list.extend(volt)
t_list.extend(t)
volt_ax = plt.subplot(2,1,1)
plt.plot(t_list,volt_list)
plt.ylabel('potential (V)')
plt.grid('on')
plt.subplot(2,1,2, sharex=volt_ax)
plt.plot(t_list,curr_list)
plt.ylabel('current (uA)')
plt.xlabel('t (sec)')
plt.grid('on')
plt.show()
【问题讨论】:
-
能否提供脚本示例?
-
刚刚添加脚本