diff --git a/equipment_control/__pycache__/equipment.cpython-311.pyc b/equipment_control/__pycache__/equipment.cpython-311.pyc index e5b530873ffb7280253d0bac3cf39f99c15f31b5..656e109941a4e89daec1764462b956ead1dce9bd 100644 Binary files a/equipment_control/__pycache__/equipment.cpython-311.pyc and b/equipment_control/__pycache__/equipment.cpython-311.pyc differ diff --git a/equipment_control/__pycache__/hp4145.cpython-311.pyc b/equipment_control/__pycache__/hp4145.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7427a598aa61f7d6a06b6b5568801b2db1caeeb2 Binary files /dev/null and b/equipment_control/__pycache__/hp4145.cpython-311.pyc differ diff --git a/equipment_control/cm110.py b/equipment_control/cm110.py index cef28925f784ed8a28a6b9b52c2d3a92c11bcf57..8658953f32c981bde4bcb138bfd2d668bbe6e93f 100644 --- a/equipment_control/cm110.py +++ b/equipment_control/cm110.py @@ -1,7 +1,5 @@ -import equipment -import pyvisa +import equipment_control.equipment as equipment import time -import numpy as np import serial class cm110(equipment.equipment): diff --git a/equipment_control/dmm.py b/equipment_control/dmm.py index f4600f12edf1ace071d296f3fc107ae313072847..7444a6e546c2627dbc82c3447a744bd2e304f393 100644 --- a/equipment_control/dmm.py +++ b/equipment_control/dmm.py @@ -1,4 +1,4 @@ -import equipment +import equipment_control.equipment as equipment class dmm(equipment.equipment): @@ -7,7 +7,7 @@ class dmm(equipment.equipment): company="Keithley" url="https://www.tek.com/en/products/keithley/benchtop-digital-multimeter" - def initialize(self, mode, autozero=True, offset_compensation=True, nplc=1): + def initialize(self, mode, autozero=True, offset_compensation=True, nplc=1,timeout=10e3): """ mode: - "voltage": voltage measurement @@ -16,6 +16,7 @@ class dmm(equipment.equipment): - "4 wires": 4 wires measurement """ self.pyvisa_resource.write("*RST") + # self.set_connection_parameter_dic({"write_termination":'\r\n',"read_termination":'\r\n',"send_end":True}) if mode=="voltage": self.pyvisa_resource.write(":SENS:FUNC 'VOLT'") diff --git a/equipment_control/equipment.py b/equipment_control/equipment.py index b4f3c458d6c1065e68997a5ee580250f2ad781fa..739c56604aa389024521c6ee3617cb77277cff6f 100644 --- a/equipment_control/equipment.py +++ b/equipment_control/equipment.py @@ -3,15 +3,16 @@ import datetime import numpy as np -def available_connections(): - rm = pyvisa.ResourceManager() +def available_connections(rm=None): + if rm==None: + rm = pyvisa.ResourceManager() return rm.list_resources() def resource_manager(): rm = pyvisa.ResourceManager() return rm -class equipment(pyvisa.ResourceManager): +class equipment(): """Base for Equipment classes.""" @@ -19,11 +20,11 @@ class equipment(pyvisa.ResourceManager): company = "" url = "" - def __init__(self,address,rm=None): + def __init__(self,address,rm=None,timeout=10e3): if rm==None: rm = pyvisa.ResourceManager() self.pyvisa_resource = rm.open_resource(address) - + self.set_connection_parameter("timeout",timeout) def set_connection_parameter(self,key,value): if key=="timeout": @@ -50,8 +51,10 @@ class equipment(pyvisa.ResourceManager): def close_connection(self): self.pyvisa_resource.close() - def write_in_file(self,file_path,data): + def write_in_file(self,file_path,data,delimiter=",",extension="txt"): + if file_path.split(".")[-1]=="csv": + delimiter="," # Create file and header f = open(file_path, "a") f.write("%s\n"%(datetime.datetime.now().strftime("%c"))) @@ -64,6 +67,9 @@ class equipment(pyvisa.ResourceManager): elif len(shape)==2: for i in range(shape[0]): for j in range(shape[1]): - f.write("%.6f"%(data[i,j])) + if j==0: + f.write("%.6f"%(data[i,j])) + else: + f.write("%s%.6f"%(delimiter,data[i,j])) f.write("\n") f.close() diff --git a/equipment_control/example/single_equipment/hp4145_script.py b/equipment_control/example/single_equipment/hp4145_script.py new file mode 100644 index 0000000000000000000000000000000000000000..93848b6825f6e783b3e9befcc0d4e24629fe129e --- /dev/null +++ b/equipment_control/example/single_equipment/hp4145_script.py @@ -0,0 +1,59 @@ +# ============================================================================= +# 1. Import classes and modules +# ============================================================================= + +import sys +#sys.path.insert(1, '/path/to/application/app/folder') +sys.path.insert(1, 'D:/Roisin/Documents/chopes') + +import equipment_control.equipment as eq +import equipment_control.hp4145 as hp4145 + + +# ============================================================================= +# 2. List available connections (chopes use pyvisa package for communicate with most equipments) +# ============================================================================= +rm=eq.resource_manager() +list_connections= eq.available_connections() +print("Available connections: %s"%str(list_connections)) + +# ============================================================================= +# 3. Connection to the equipments +# ============================================================================= +myHP4145=hp4145.hp4145("GPIB0::1::INSTR") + +# ============================================================================= +# 4. Measurement parameters +# ============================================================================= +file_path='temp.txt' + +mode="voltage sweep" +number_channel=4 +smu_bias={"SMU2":0,"SMU3":0,"SMU4":0} +smu_compliance={"SMU1":1e-6,"SMU2":1e-6,"SMU3":1e-6,"SMU4":1e-6} +sweep_param={"start":0,"stop":1,"step":0.1} +integration_mode="IT1" +delay_time=0 +hold_time=0 + +# ============================================================================= +# 5. Initialization of the equipments +# ============================================================================= +myHP4145.initialize(mode=mode,number_channel=number_channel,smu_bias=smu_bias, + smu_compliance=smu_compliance,sweep_param=sweep_param, + integration_mode=integration_mode,delay_time=delay_time,hold_time=hold_time) + +# ============================================================================= +# 6. Measurement script +# ============================================================================= +data=myHP4145.launch_measurements() + +# ============================================================================= +# 7. Close connection +# ============================================================================= +myHP4145.close_connection() + +# ============================================================================= +# 8. Save data +# ============================================================================= +myHP4145.write_in_file(file_path,data) diff --git a/equipment_control/hp4145.py b/equipment_control/hp4145.py index 66229aae4988a961e18fac6e853672a5a54c2ed7..baab7d695d8888b2d861827b9dda1faf083f5582 100644 --- a/equipment_control/hp4145.py +++ b/equipment_control/hp4145.py @@ -1,4 +1,4 @@ -import equipment +import equipment_control.equipment as equipment import pyvisa import time import numpy as np @@ -28,7 +28,7 @@ class hp4145(equipment.equipment): self.delay_time=delay_time self.hold_time=hold_time - self.set_connection_parameter_dic({"timeout":10e3,"write_termination":'\r\n',"read_termination":'\r\n',"send_end":True}) + # self.set_connection_parameter_dic({write_termination":'\r\n',"read_termination":'\r\n',"send_end":True}) try: self.pyvisa_resource.write("BC") # clear all buffer. diff --git a/equipment_control/k24xx.py b/equipment_control/k24xx.py index 6ee66c007e3ee728148ee259703ae34885fd6edc..ce91ad446f06e2d945093b67089f5a46a254b85d 100644 --- a/equipment_control/k24xx.py +++ b/equipment_control/k24xx.py @@ -1,4 +1,4 @@ -import equipment +import equipment_control.equipment as equipment class k24XX(equipment.equipment): diff --git a/equipment_control/k4200.py b/equipment_control/k4200.py index 351a51cacdd1d02692d1986ef00fc2a17d7844fa..72aaf7a145a1af698f7a19c12791596714f628e8 100644 --- a/equipment_control/k4200.py +++ b/equipment_control/k4200.py @@ -1,4 +1,4 @@ -import equipment +import equipment_control.equipment as equipment import pyvisa import time import numpy as np @@ -28,7 +28,7 @@ class k4200(equipment.equipment): self.delay_time=delay_time self.hold_time=hold_time - self.set_connection_parameter_dic({"timeout":10e3,"write_termination":'\r\n',"read_termination":'\r\n',"send_end":True}) + self.set_connection_parameter_dic({"write_termination":'\r\n',"read_termination":'\r\n',"send_end":True}) try: self.pyvisa_resource.write("BC") # clear all buffer. diff --git a/equipment_control/sh242.py b/equipment_control/sh242.py index 71df43646268dc63cdc0a52eccdfebb6152e0e0d..7b31140340e4edffc66e346ba6c6c7993c937d98 100644 --- a/equipment_control/sh242.py +++ b/equipment_control/sh242.py @@ -1,4 +1,4 @@ -import equipment +import equipment_control.equipment as equipment import time import numpy as np @@ -9,6 +9,7 @@ class sh242(equipment.equipment): company="ESPEC" url="https://espec.com/na/products/model/sh_242" + # ============================================================================= # mysh242.read_termination = ';' # mysh242.write_termination = ';' @@ -18,6 +19,9 @@ class sh242(equipment.equipment): def initialize(self,temperature=True, humidity=False,temperature_dic={"upper":125,"lower":-45,"set":20},humidity_dic={"upper":100,"lower":0,"set":55}): + + self.set_connection_parameter_dic({"write_termination":';',"read_termination":';',"send_end":True}) + self.pyvisa_resource.write('POWER, ON') time.sleep(1) self.pyvisa_resource.read()