微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

运行Python代码PyVisa时Windows 10崩溃

如何解决运行Python代码PyVisa时Windows 10崩溃

我正在尝试使用Python 3.6和PyVisa库(版本1.11.1)从SR245 Boxcar自动收集数据。 9/10次,效果很好。但是,在两天内,有三次导致整个计算机崩溃并重新启动(在Windows 10上运行)。这导致了很多数据丢失,并且我试图找出我做错了什么导致整个系统崩溃。代码在下面(它是一个较大程序的一部分,但是我也自己运行这段代码,并且导致崩溃)。虽然未显示data_processing文件,但是其中的功能很简单(例如,将列表中的值除以另一个列表中的值,从整数列表中返回平均值,等等)

import pyvisa
from pyvisa.constants import SerialTermination
import time
import numpy as np
from data_processing import *


def connect_Boxcar(pNum):
    rm = pyvisa.ResourceManager()
    port = "COM"+pNum
    sr = rm.open_resource(port)
    return sr


def config_Boxcar(Boxcar):
    #Configure the Boxcar settings
    Boxcar.write_termination = '\r'
    Boxcar.read_termination='\r'
    Boxcar.baud_rate=19200
    Boxcar.end_output = SerialTermination.termination_char


def preset_scan(Boxcar):
    #Reset Boxcar settings
    Boxcar.write('MR')
    Boxcar.write('MS;ET;T1;I2;W0')


def scan(Boxcar,num):
    #Send the SCAN command to the Boxcar,set to the specified number of data points
    command = 'SC1,2:' + str(num)
    Boxcar.write(command)


def read_data(Boxcar,num):
    #Read the stored scan data and return it as a value list
    data_list = []
    for x in range(num * 2):
        data_list.append(float(Boxcar.query('N')))
    return data_list


def collect_baseline(Boxcar,n):
    #Get a baseline signal for later processing
    config_Boxcar(Boxcar)
    preset_scan(Boxcar)
    scan(Boxcar,n)
    raw_data = read_data(Boxcar,n)
    chan1 = raw_data[::2]
    chan2 = raw_data[1::2]
    normal_data = normalize(chan1,chan2,n)
    return average_list(normal_data)


def main():
    rm = pyvisa.ResourceManager()
    n = 10
    sleep_timer = 0.1 * n + 0.5
    sr245 = rm.open_resource('COM5')

    #Configure/preset
    config_Boxcar(sr245)
    preset_scan(sr245)

    #Set a timer to measure scanning time
    t0 = time.time()
    scan(sr245,n)

    time.sleep(sleep_timer)

    raw_data = read_data(sr245,n)
    t1 = time.time()

    #Breakdown data by channel and normalize
    chan1 = raw_data[::2]
    chan2 = raw_data[1::2]
    normal_data = normalize(chan1,n)

    elapsed_time = t1 - t0
    print('Elapsed time: ',elapsed_time)
    print('Channel 1: ',chan1)
    print('Channel 2: ',chan2)
    print('normalized Data: ',normal_data)
    print('Average normalized Data: ',average_list(normal_data))
    print('Standard Deviation: ',np.std(normal_data))


if __name__ == '__main__':
    main()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?