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()