craft-software/Legacy/Instrument_Drivers/drivers/BK_9132B.py
2025-07-04 15:52:40 +02:00

97 lines
3.0 KiB
Python

import pyvisa
import time
timedelta = 0.02
class BK_9132B:
def __init__(self,adress):
#establish connection to device with pyvisa. The device is initiallized with visa adress "adress"
self.rm = pyvisa.ResourceManager()
try:
self.inst = self.rm.open_resource(adress)
except:
print(f'could not connect to {adress}')
return
time.sleep(1)
def __del__(self):
self.rm.close()
def read_Voltage(self):
#reads applied voltage of all three channels simultaneously. Output has format [V1, V2, V3].
command = f':MEAS:VOLT:ALL?'
data = str(self.inst.query(command))
data = data.split(', ') #Split string in single objects
data = [float(i) for i in data]
time.sleep(timedelta)
return data
def read_Current(self):
#reads applied current of all three channels simultaneously. Output has format [I1, I2, I3].
command = f':MEAS:CURR:ALL?'
data = str(self.inst.query(command))
data = data.split(', ') #Split string in single objects
data = [float(i) for i in data]
time.sleep(timedelta)
return data
def read_Power(self):
#reads applied power of all three channels simultaneously. Output has format [P1, P2, P3].
command = f':MEAS:POW:ALL?'
data = str(self.inst.query(command))
data = data.split(', ') #Split string in single objects
data = [float(i) for i in data]
time.sleep(timedelta)
return data
def set_Voltage(self, CH, Voltage):
#sets Voltage in Volt for channel CH
#Selects channel which voltage should be changed:
command = f'INST CH{CH}'
self.inst.write(command)
time.sleep(timedelta)
#Sets voltage of selected channel:
command = f':SOUR:VOLT {Voltage}'
self.inst.write(command)
time.sleep(timedelta)
def set_Current(self, CH, Current):
#sets Current in Ampere for channel CH
#Selects channel which current should be changed:
command = f'INST CH{CH}'
self.inst.write(command)
time.sleep(timedelta)
#Sets current of selected channel:
command = f':SOUR:CURR {Current}'
self.inst.write(command)
time.sleep(timedelta)
def set_Output(self, CH, On):
#sets Output of channel CH on or off.
# On -> On = True,
# Off -> On = False
#Selects channel which output should be changed:
command = f'INST CH{CH}'
self.inst.write(command)
time.sleep(timedelta)
#Sets output of selected channel:
if On == True:
command = ':SOUR:CHAN:OUTP ON'
self.inst.write(command)
elif On == False:
command = ':SOUR:CHAN:OUTP OFF'
self.inst.write(command)
time.sleep(timedelta)