首页 > 解决方案 > 给定从 0 开始的新时间值列表,有没有办法以秒为单位扩展时间值列表?

问题描述

我有一个 python 程序运行一个连接到一个小板的串行端口。该程序从板接收三个列表:tvoltcurr一旦完成一种方法。我想使用这些值构建三个列表:t_listvolt_listcurr_list。该板连接到一个 iorodeo 恒电位仪,每个方法周期只能运行 25 个周期,因此我需要将它给出的值从tvoltcurr传递到t_listvolt_listcurr_listx 个方法周期以绕过 25 个周期的限制。问题是时间列表t在每个方法循环的 0.003 秒处重新开始,所以我最终在 final 中得到一个重复的时间列表t_list。有没有办法把每一个新的t并让python程序计算一个新列表,该列表从最后一次开始,以总时间结束(以秒为单位)?该列表以秒为单位提供与和列表t长度相同的时间列表。对于下面的脚本,第一个方法返回一个长度为 250 的列表 t,从 0.003 秒开始,到 0.75 秒结束。每个方法周期都应该相同。currvolt

这是脚本:

# -*- 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()

标签: pythonlisttimeteensy

解决方案


t_list您可以尝试通过在具有以下形式的字典中添加来跟踪时间:

tmp_dict = {time_of_the_iteration: t}

这样代码就变成了:

....

from datetime import datetime

....

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)
    
    
    actual_time = datetime.now().strftime('%H:%M:%S')
    tmp_dict = {actual_time: t}
    
    t_list.extend(tmp_dict)

这样,您每个人都有不同的时间t


推荐阅读