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
from PySide6.QtCore import (QTimer)
from PySide6.QtWidgets import (QApplication, QMainWindow, QFileDialog)
import pyvisa
import vxi11
import time
import sys
import csv
@@ -35,22 +35,11 @@ test_time_target = 0
repeat_state = 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
class MainWindow(QMainWindow):
instr = vxi11.Instrument("192.168.45.3")
def __init__(self):
global SPD
global setup_del
# Initialise main window
@@ -107,30 +96,28 @@ class MainWindow(QMainWindow):
self.chan2timer.setInterval(200)
self.chan2timer.timeout.connect(self.chan2_timer)
#self.testledtimer = QTimer()
#self.testledtimer.setInterval(500)
#self.testledtimer.timeout.connect(self.test_led_timer)
self.testledtimer = QTimer()
self.testledtimer.setInterval(500)
self.testledtimer.timeout.connect(self.test_led_timer)
#self.testtimer = QTimer()
#self.testtimer.setInterval(100)
#self.testtimer.timeout.connect(self.test_timer)
self.testtimer = QTimer()
self.testtimer.setInterval(100)
self.testtimer.timeout.connect(self.test_timer)
# 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)
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)
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)
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)
# Disable power supply output source
SPD.write('OUTP CH1,OFF') # Enable supply output
SPD.write('OUTP CH2,OFF') # Enable supply output
self.instr.write('OUTP CH1,OFF') # Enable supply output
self.instr.write('OUTP CH2,OFF') # Enable supply output
def file_browse_button_press (self):
global file_name
@@ -141,7 +128,6 @@ class MainWindow(QMainWindow):
def test_button_press (self):
global test_state_flag
global SPD
global file_name
global test_data
global test_time_counter
@@ -166,7 +152,7 @@ class MainWindow(QMainWindow):
self.ui.v_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
with open(file_name, newline='') as csvfile:
@@ -203,12 +189,11 @@ class MainWindow(QMainWindow):
self.ui.vt_val.setText("00.0")
# 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):
global chan1_state_flag
global setup_del
global SPD
if chan1_state_flag == False:
chan1_state_flag = True
@@ -222,13 +207,13 @@ class MainWindow(QMainWindow):
self.ui.chan1_grn.setHidden(False)
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)
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)
# 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
self.chan1timer.start()
@@ -243,7 +228,7 @@ class MainWindow(QMainWindow):
self.ui.chan1_red.setHidden(True)
# Disable power supply output source
SPD.write('OUTP CH1,OFF') # Disable supply output
self.instr.write('OUTP CH1,OFF') # Disable supply output
# Disable timer
self.chan1timer.stop()
@@ -255,7 +240,6 @@ class MainWindow(QMainWindow):
def chan2_button_press (self):
global chan2_state_flag
global setup_del
global SPD
if chan2_state_flag == False:
chan2_state_flag = True
@@ -269,13 +253,13 @@ class MainWindow(QMainWindow):
self.ui.chan2_grn.setHidden(False)
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)
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)
# 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
self.chan2timer.start()
@@ -290,7 +274,7 @@ class MainWindow(QMainWindow):
self.ui.chan2_red.setHidden(True)
# Disable power supply output source
SPD.write('OUTP CH2,OFF') # Disable supply output
self.instr.write('OUTP CH2,OFF') # Disable supply output
# Disable timer
self.chan2timer.stop()
@@ -300,19 +284,18 @@ class MainWindow(QMainWindow):
self.ui.chan2_mp_val.setText("0.00")
def chan1_timer (self):
global SPD
global meas_del
# get voltage/current/power
SPD.write("MEAS:VOLT? CH1")
self.instr.write("MEAS:VOLT? CH1")
time.sleep(meas_del)
voltage = SPD.read()
SPD.write("MEAS:CURR? CH1")
voltage = self.instr.read()
self.instr.write("MEAS:CURR? CH1")
time.sleep(meas_del)
current = SPD.read()
SPD.write("MEAS:POWE? CH1")
current = self.instr.read()
self.instr.write("MEAS:POWE? CH1")
time.sleep(meas_del)
power = SPD.read()
power = self.instr.read()
self.ui.chan1_mv_val.setText(voltage)
self.ui.chan1_mi_val.setText(current)
@@ -322,19 +305,18 @@ class MainWindow(QMainWindow):
def chan2_timer (self):
global SPD
global meas_del
# get voltage/current/power
SPD.write("MEAS:VOLT? CH2")
self.instr.write("MEAS:VOLT? CH2")
time.sleep(meas_del)
voltage = SPD.read()
SPD.write("MEAS:CURR? CH2")
voltage = self.instr.read()
self.instr.write("MEAS:CURR? CH2")
time.sleep(meas_del)
current = SPD.read()
SPD.write("MEAS:POWE? CH2")
current = self.instr.read()
self.instr.write("MEAS:POWE? CH2")
time.sleep(meas_del)
power = SPD.read()
power = self.instr.read()
self.ui.chan2_mv_val.setText(voltage)
self.ui.chan2_mi_val.setText(current)
@@ -382,7 +364,7 @@ class MainWindow(QMainWindow):
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()
@@ -446,7 +428,7 @@ class MainWindow(QMainWindow):
self.ui.vt_val.setText("0.00")
# Disable power supply output source
#SPD.write('OUTP CH1,OFF') # Disable supply output
self.instr.write('OUTP CH1,OFF') # Disable supply output
QApplication.processEvents()