This commit is contained in:
david rice
2026-03-31 07:49:28 +01:00
parent 450faaf951
commit 69fbef196c
3 changed files with 39 additions and 60 deletions

View File

@@ -13,7 +13,7 @@ AUTHOR: D. RICE 19/11/2025
import numpy as np import numpy as np
from PySide6.QtCore import (QTimer) from PySide6.QtCore import (QTimer)
from PySide6.QtWidgets import (QApplication, QMainWindow, QFileDialog) from PySide6.QtWidgets import (QApplication, QMainWindow, QFileDialog)
import pyvisa import vxi11
import time import time
import sys import sys
import csv import csv
@@ -35,22 +35,11 @@ test_time_target = 0
repeat_state = 0 repeat_state = 0
repeat_length = 0 repeat_length = 0
VISA_ADDRESS = "TCPIP::192.168.45.3::INSTR"
rm = pyvisa.ResourceManager()
devices = rm.list_resources()
print (devices)
SPD = rm.open_resource(
VISA_ADDRESS,
write_termination='\n',
read_termination='\n'
)
# Main window class # Main window class
class MainWindow(QMainWindow): class MainWindow(QMainWindow):
instr = vxi11.Instrument("192.168.45.3")
def __init__(self): def __init__(self):
global SPD
global setup_del global setup_del
# Initialise main window # Initialise main window
@@ -107,30 +96,28 @@ class MainWindow(QMainWindow):
self.chan2timer.setInterval(200) self.chan2timer.setInterval(200)
self.chan2timer.timeout.connect(self.chan2_timer) self.chan2timer.timeout.connect(self.chan2_timer)
#self.testledtimer = QTimer() self.testledtimer = QTimer()
#self.testledtimer.setInterval(500) self.testledtimer.setInterval(500)
#self.testledtimer.timeout.connect(self.test_led_timer) self.testledtimer.timeout.connect(self.test_led_timer)
#self.testtimer = QTimer() self.testtimer = QTimer()
#self.testtimer.setInterval(100) self.testtimer.setInterval(100)
#self.testtimer.timeout.connect(self.test_timer) self.testtimer.timeout.connect(self.test_timer)
# Configure Power Supplys # Configure Power Supplys
#SPD.write_termination='\n'
#SPD.read_termination='\n'
SPD.write('CH1:VOLT ' + str(0.0)) # Send power supply source voltage self.instr.write('CH1:VOLT ' + str(0.0)) # Send power supply source voltage
time.sleep(setup_del) time.sleep(setup_del)
SPD.write('CH1:CURR ' + str(1.0)) # Send power supply current limit self.instr.write('CH1:CURR ' + str(1.0)) # Send power supply current limit
time.sleep(setup_del) time.sleep(setup_del)
SPD.write('CH2:VOLT ' + str(0.0)) # Send power supply source voltage self.instr.write('CH2:VOLT ' + str(0.0)) # Send power supply source voltage
time.sleep(setup_del) time.sleep(setup_del)
SPD.write('CH2:CURR ' + str(1.0)) # Send power supply current limit self.instr.write('CH2:CURR ' + str(1.0)) # Send power supply current limit
time.sleep(setup_del) time.sleep(setup_del)
# Disable power supply output source # Disable power supply output source
SPD.write('OUTP CH1,OFF') # Enable supply output self.instr.write('OUTP CH1,OFF') # Enable supply output
SPD.write('OUTP CH2,OFF') # Enable supply output self.instr.write('OUTP CH2,OFF') # Enable supply output
def file_browse_button_press (self): def file_browse_button_press (self):
global file_name global file_name
@@ -141,7 +128,6 @@ class MainWindow(QMainWindow):
def test_button_press (self): def test_button_press (self):
global test_state_flag global test_state_flag
global SPD
global file_name global file_name
global test_data global test_data
global test_time_counter global test_time_counter
@@ -166,7 +152,7 @@ class MainWindow(QMainWindow):
self.ui.v_lab.setEnabled(False) self.ui.v_lab.setEnabled(False)
self.ui.i_lab.setEnabled(False) self.ui.i_lab.setEnabled(False)
SPD.write('OUTP CH1,ON') # Enable supply output self.instr.write('OUTP CH1,ON') # Enable supply output
# Read test file contents # Read test file contents
with open(file_name, newline='') as csvfile: with open(file_name, newline='') as csvfile:
@@ -203,12 +189,11 @@ class MainWindow(QMainWindow):
self.ui.vt_val.setText("00.0") self.ui.vt_val.setText("00.0")
# Disable power supply output source # Disable power supply output source
#SPD.write('OUTP CH1,OFF') # Disable supply output self.instr.write('OUTP CH1,OFF') # Disable supply output
def chan1_button_press (self): def chan1_button_press (self):
global chan1_state_flag global chan1_state_flag
global setup_del global setup_del
global SPD
if chan1_state_flag == False: if chan1_state_flag == False:
chan1_state_flag = True chan1_state_flag = True
@@ -222,13 +207,13 @@ class MainWindow(QMainWindow):
self.ui.chan1_grn.setHidden(False) self.ui.chan1_grn.setHidden(False)
self.ui.chan1_red.setHidden(True) self.ui.chan1_red.setHidden(True)
SPD.write('CH1:VOLT ' + voltage) #Send power supply source voltage self.instr.write('CH1:VOLT ' + voltage) #Send power supply source voltage
time.sleep(setup_del) time.sleep(setup_del)
SPD.write('CH1:CURR ' + current) #Send power supply current limit self.instr.write('CH1:CURR ' + current) #Send power supply current limit
time.sleep(setup_del) time.sleep(setup_del)
# Enable power supply output source # Enable power supply output source
SPD.write('OUTP CH1,ON') # Enable supply output self.instr.write('OUTP CH1,ON') # Enable supply output
# Enable timer to get data # Enable timer to get data
self.chan1timer.start() self.chan1timer.start()
@@ -243,7 +228,7 @@ class MainWindow(QMainWindow):
self.ui.chan1_red.setHidden(True) self.ui.chan1_red.setHidden(True)
# Disable power supply output source # Disable power supply output source
SPD.write('OUTP CH1,OFF') # Disable supply output self.instr.write('OUTP CH1,OFF') # Disable supply output
# Disable timer # Disable timer
self.chan1timer.stop() self.chan1timer.stop()
@@ -255,7 +240,6 @@ class MainWindow(QMainWindow):
def chan2_button_press (self): def chan2_button_press (self):
global chan2_state_flag global chan2_state_flag
global setup_del global setup_del
global SPD
if chan2_state_flag == False: if chan2_state_flag == False:
chan2_state_flag = True chan2_state_flag = True
@@ -269,13 +253,13 @@ class MainWindow(QMainWindow):
self.ui.chan2_grn.setHidden(False) self.ui.chan2_grn.setHidden(False)
self.ui.chan2_red.setHidden(True) self.ui.chan2_red.setHidden(True)
SPD.write('CH2:VOLT ' + voltage) #Send power supply source voltage self.instr.write('CH2:VOLT ' + voltage) #Send power supply source voltage
time.sleep(setup_del) time.sleep(setup_del)
SPD.write('CH2:CURR ' + current) #Send power supply current limit self.instr.write('CH2:CURR ' + current) #Send power supply current limit
time.sleep(setup_del) time.sleep(setup_del)
# Enable power supply output source # Enable power supply output source
SPD.write('OUTP CH2,ON') # Enable supply output self.instr.write('OUTP CH2,ON') # Enable supply output
# Enable timer to get data # Enable timer to get data
self.chan2timer.start() self.chan2timer.start()
@@ -290,7 +274,7 @@ class MainWindow(QMainWindow):
self.ui.chan2_red.setHidden(True) self.ui.chan2_red.setHidden(True)
# Disable power supply output source # Disable power supply output source
SPD.write('OUTP CH2,OFF') # Disable supply output self.instr.write('OUTP CH2,OFF') # Disable supply output
# Disable timer # Disable timer
self.chan2timer.stop() self.chan2timer.stop()
@@ -300,19 +284,18 @@ class MainWindow(QMainWindow):
self.ui.chan2_mp_val.setText("0.00") self.ui.chan2_mp_val.setText("0.00")
def chan1_timer (self): def chan1_timer (self):
global SPD
global meas_del global meas_del
# get voltage/current/power # get voltage/current/power
SPD.write("MEAS:VOLT? CH1") self.instr.write("MEAS:VOLT? CH1")
time.sleep(meas_del) time.sleep(meas_del)
voltage = SPD.read() voltage = self.instr.read()
SPD.write("MEAS:CURR? CH1") self.instr.write("MEAS:CURR? CH1")
time.sleep(meas_del) time.sleep(meas_del)
current = SPD.read() current = self.instr.read()
SPD.write("MEAS:POWE? CH1") self.instr.write("MEAS:POWE? CH1")
time.sleep(meas_del) time.sleep(meas_del)
power = SPD.read() power = self.instr.read()
self.ui.chan1_mv_val.setText(voltage) self.ui.chan1_mv_val.setText(voltage)
self.ui.chan1_mi_val.setText(current) self.ui.chan1_mi_val.setText(current)
@@ -322,19 +305,18 @@ class MainWindow(QMainWindow):
def chan2_timer (self): def chan2_timer (self):
global SPD
global meas_del global meas_del
# get voltage/current/power # get voltage/current/power
SPD.write("MEAS:VOLT? CH2") self.instr.write("MEAS:VOLT? CH2")
time.sleep(meas_del) time.sleep(meas_del)
voltage = SPD.read() voltage = self.instr.read()
SPD.write("MEAS:CURR? CH2") self.instr.write("MEAS:CURR? CH2")
time.sleep(meas_del) time.sleep(meas_del)
current = SPD.read() current = self.instr.read()
SPD.write("MEAS:POWE? CH2") self.instr.write("MEAS:POWE? CH2")
time.sleep(meas_del) time.sleep(meas_del)
power = SPD.read() power = self.instr.read()
self.ui.chan2_mv_val.setText(voltage) self.ui.chan2_mv_val.setText(voltage)
self.ui.chan2_mi_val.setText(current) self.ui.chan2_mi_val.setText(current)
@@ -382,7 +364,7 @@ class MainWindow(QMainWindow):
test_time_target = 0 test_time_target = 0
SPD.write('CH1:VOLT ' + voltage_set) # Send power supply source voltage self.instr.write('CH1:VOLT ' + voltage_set) # Send power supply source voltage
current_t = self.ui.i_val.text() current_t = self.ui.i_val.text()
@@ -446,7 +428,7 @@ class MainWindow(QMainWindow):
self.ui.vt_val.setText("0.00") self.ui.vt_val.setText("0.00")
# Disable power supply output source # Disable power supply output source
#SPD.write('OUTP CH1,OFF') # Disable supply output self.instr.write('OUTP CH1,OFF') # Disable supply output
QApplication.processEvents() QApplication.processEvents()

View File

@@ -4,9 +4,6 @@ from PySide6.QtCore import (QCoreApplication, QMetaObject, QRect, Qt)
from PySide6.QtGui import (QBrush, QColor, QFont, QIcon, QPalette, QPixmap) from PySide6.QtGui import (QBrush, QColor, QFont, QIcon, QPalette, QPixmap)
from PySide6.QtWidgets import (QLabel, QPushButton, QWidget, QFrame, QLineEdit) from PySide6.QtWidgets import (QLabel, QPushButton, QWidget, QFrame, QLineEdit)
import pyqtgraph as pg
from pyqtgraph.Qt import QtGui
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
if not MainWindow.objectName(): if not MainWindow.objectName():