python程控电源编程(2)

本软件通过Python和PyQt5实现了Keithley2303程控电源与RIGOLDM3068万用表的控制与数据读取功能,支持自动电压调节、数据采集、计时和数据统计,同时具备设备连接状态监测和异常处理机制。
# -*- coding: utf-8 -*-
#!/usr/bin/python
"""
Module implementing Watch_MainWindow.

 @Author:      TOBY
 @Email:       hejunwang@
 @DateTime:    2019-07-18 09:16:43
 @Description: keithley  2303 程控电源 ,RIGOL dm3068  读取电压和电流软件


"""
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

from Ui_watchcurrent_ui import Ui_MainWindow
import sys
import visa
import threading
import time
from PyQt5.QtWidgets import qApp

class Watch_MainWindow(QMainWindow, Ui_MainWindow):
    """
    Class documentation goes here.
    """
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget
        @type QWidget
        """
        super(Watch_MainWindow, self).__init__(parent)
        self.setupUi(self)
        
        self.init()
        #设置框架的大小, 取消最大化
        self.setFixedSize(self.width(), self.height())
        
        self.statusBar.showMessage("Ready")
        
    #TODO 初始化设备
    def init(self):
        self.rm = visa.ResourceManager()
        self.dev =self.rm.list_resources()
        print(self.dev)
        
        
        self.rm2 = visa.ResourceManager()
        self.dev2 =self.rm2.list_resources()
        print(self.dev2)
        
        self.rigol = visa.ResourceManager()
        self.dm3068 =self.rigol.list_resources()
        print(self.dm3068)
        
        #停止按键设置灰色不可点击状态
        self.w_stop_btn.setEnabled(False)
    
        #设备是否连接
        self.IsCon = False
        self.IsCon2 = False
        self.IsCon3 = False
        
        #保存数据列表
        self.dataList=[]
        #保存测试的电压的数据
        self.dm3068List=[]
        
        #菜单
        self.menuAction()
        

    #TODO 计时器显示
    def lcdNum(self):
        #定时器
        self.second = 0  
        self.minute = 0
        self.hour = 0
        self.days = 0
        self.lcdtimer = QTimer(self)
        self.lcdtimer.timeout.connect(self.onTimerOut)
        self.lcdtimer.start(1000)
        
        #计数器
        self.jishu = 0
        
    def onTimerOut(self):
        self.second += 1
        self.jishu += 1

        if self.second%60==0:
            self.minute+=1
            self.second =0
            print('minute:'+str(self.minute))
            
            if self.minute%60==0:
                self.hour+=1
                self.minute=0
                print('minute:---'+str(self.minute))
                print('hour:'+str(self.hour))
            else:
                print('minute:--->'+str(self.minute))
                print('hour-->:'+str(self.hour))
        
        #采集时间长度
        self.duration_time= int(self.w_duration.text())
        #按照规定采集的时间到了 ,进行停止
        if self.jishu %self.duration_time==0:
            print('停止计时')
            self.data_save()
            self.data2_save()
            self.w_remind.append("###测量的实际电压###:"+str(self.t2)+
        " V"+ '---'+"###平均电流###:"+str(self.avgdata)+" mA"+
        "###充电平均电流###:"+str(self.avgdata2)+" mA")
#            self.all_timer_stop()
#            self.stopbtn_set()
            
            #保存数据
#           self.data_save()
#           self.w_remind.append('采集数据数量:'+str(self.lendata)+"\n") 

            
        self.w_lcd.display(str(self.hour)+":"+str(self.minute)+
        ":"+str(self.second))
        

    @pyqtSlot()
    def on_w_connect_btn_clicked(self):
        """
        Slot documentation goes here.
        """
        # TODO: 连接仪器一
#        self.init()
#        raise NotImplementedError
        try :
            print('on_w_connect_btn_clicked')

            self.my_instrument = self.rm.open_resource(self.dev[1])
            self.w_remind.append('仪器仪表查询结果:\n'+self.my_instrument.query('*IDN?'))
            print('读取*IDN?结果:\n'+self.my_instrument.query('*IDN?'))
            self.w_remind.append('当前查询到的设备:'+str(self.dev))
            #设置按键灰色
            self.w_connect_btn.setEnabled(False)
            self.IsCon = True
            print(self.IsCon)
            
            self.read_config()   #读取配置文件
                
  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值