diff --git a/dstat-interface/dstat_comm.py b/dstat-interface/dstat_comm.py
index 931e163d85f3e8ef20e1242245b4ea200be87a59..889fb51dd5a547c588881bb8596ce8d08548714c 100644
--- a/dstat-interface/dstat_comm.py
+++ b/dstat-interface/dstat_comm.py
@@ -73,6 +73,90 @@ def version_check(ser_port):
return (int(parted[0]), int(parted[1]))
+def read_light_sensor():
+ """Tries to contact DStat and get light sensor reading. Returns uint of
+ light sensor clear channel.
+ """
+
+ serial_instance.flushInput()
+ serial_instance.write('!')
+
+ while not serial_instance.read()=="C":
+ time.sleep(.5)
+ serial_instance.write('!')
+
+
+ serial_instance.write('T')
+ for line in serial_instance:
+ if line.lstrip().startswith('T'):
+ input = line.lstrip().lstrip('T')
+ elif line.startswith("#"):
+ print line
+ elif line.lstrip().startswith("no"):
+ print line
+ serial_instance.flushInput()
+ break
+
+ parted = input.rstrip().split('.')
+ print parted
+
+ return int(parted[0])
+
+def read_settings():
+ """Tries to contact DStat and get settings. Returns dict of
+ settings.
+ """
+
+ global settings
+ settings = {}
+
+ serial_instance.flushInput()
+ serial_instance.write('!')
+
+ while not serial_instance.read()=="C":
+ time.sleep(.5)
+ serial_instance.write('!')
+
+ serial_instance.write('SR')
+ for line in serial_instance:
+ if line.lstrip().startswith('S'):
+ input = line.lstrip().lstrip('S')
+ elif line.startswith("#"):
+ print line
+ elif line.lstrip().startswith("no"):
+ print line
+ serial_instance.flushInput()
+ break
+
+ parted = input.rstrip().split(':')
+
+ for i in range(len(parted)):
+ settings[parted[i].split('.')[0]] = [i, parted[i].split('.')[1]]
+
+ return
+
+def write_settings():
+ """Tries to write settings to DStat from global settings var.
+ """
+
+ serial_instance.flushInput()
+ serial_instance.write('!')
+
+ while not serial_instance.read()=="C":
+ time.sleep(.5)
+ serial_instance.write('!')
+
+ write_buffer = range(len(settings))
+
+ for i in settings: # make sure settings are in right order
+ write_buffer[settings[i][0]] = settings[i][1]
+
+ serial_instance.write('SW')
+ for i in write_buffer:
+ serial_instance.write(i)
+ serial_instance.write(' ')
+
+ return
class delayedSerial(serial.Serial):
@@ -138,6 +222,8 @@ class Experiment(object):
self.commands[0] += " "
self.commands[1] += (self.parameters['gain'])
self.commands[1] += " "
+ self.commands[1] += (self.parameters['re_short'])
+ self.commands[1] += " "
def run(self):
"""Execute experiment. Connects and sends handshake signal to DStat
diff --git a/dstat-interface/interface/adc_pot.glade b/dstat-interface/interface/adc_pot.glade
index b40362d95775d57530d4092aedff77a0b9143024..6cb4371f8439ff8abab2a961c56f74e3a5ada646 100644
--- a/dstat-interface/interface/adc_pot.glade
+++ b/dstat-interface/interface/adc_pot.glade
@@ -220,7 +220,7 @@
diff --git a/dstat-interface/interface/adc_pot.py b/dstat-interface/interface/adc_pot.py
index e3888986f6c94e04ccd5b83282e1b26897102070..6fdbd598d6b09238110150b51cff247779738241 100644
--- a/dstat-interface/interface/adc_pot.py
+++ b/dstat-interface/interface/adc_pot.py
@@ -46,6 +46,7 @@ class adc_pot:
self.cell = gtk.CellRendererText()
self.buffer_toggle = self.builder.get_object('buffer_checkbutton')
+ self.short_toggle = self.builder.get_object('short_checkbutton')
#initialize comboboxes
self.pga_combobox = self.builder.get_object('pga_combobox')
diff --git a/dstat-interface/interface/exp_int.py b/dstat-interface/interface/exp_int.py
index 7b75ee6a2195c76bed70327c3c40621adc53eee6..045046265762e465d9a8b5a9aa48693f1db68b23 100644
--- a/dstat-interface/interface/exp_int.py
+++ b/dstat-interface/interface/exp_int.py
@@ -17,7 +17,11 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
+import os, sys
import gtk
+import dstat_comm
+import __main__
+import gobject
class ExpInterface(object):
"""Generic experiment interface class. Should be subclassed to implement
@@ -202,12 +206,35 @@ class PD(ExpInterface):
self.entry['voltage'] = self.builder.get_object('voltage_adjustment')
self.entry['time'] = self.builder.get_object('time_entry')
+ self.entry['interlock'] = self.builder.get_object('interlock_button')
+
+ def on_light_button_clicked(self, data=None):
+ __main__.MAIN.on_pot_stop_clicked()
+ gobject.source_remove(__main__.MAIN.ocp_proc)
+ self.builder.get_object('light_label').set_text(str(
+ dstat_comm.read_light_sensor()))
+ dstat_comm.read_settings()
+ self.builder.get_object('threshold_entry').set_text(str(
+ dstat_comm.settings['tcs_clear_threshold'][1]))
+ __main__.MAIN.start_ocp()
+
+ def on_threshold_button_clicked(self, data=None):
+ __main__.MAIN.on_pot_stop_clicked()
+ gobject.source_remove(__main__.MAIN.ocp_proc)
+ dstat_comm.settings['tcs_clear_threshold'][1] = self.builder.get_object(
+ 'threshold_entry').get_text()
+ dstat_comm.write_settings()
+ dstat_comm.read_settings()
+ self.builder.get_object('threshold_entry').set_text(
+ str(dstat_comm.settings['tcs_clear_threshold'][1]))
+ __main__.MAIN.start_ocp()
def get_params(self):
"""Returns a dict of parameters for experiment."""
parameters = {}
parameters['voltage'] = int(self.entry['voltage'].get_value())
parameters['time'] = int(self.entry['time'].get_text())
+ parameters['interlock'] = self.entry['interlock'].get_active()
return parameters
diff --git a/dstat-interface/interface/pd.glade b/dstat-interface/interface/pd.glade
index 10be2295f0cc9f1425cb7a4bad8ce086ab75da9a..05c104ee40a272331da1d1d23df88aa81414b4d1 100644
--- a/dstat-interface/interface/pd.glade
+++ b/dstat-interface/interface/pd.glade
@@ -131,6 +131,7 @@
True
True
True
+
4
@@ -169,6 +170,7 @@
True
True
True
+
5
diff --git a/dstat-interface/main.py b/dstat-interface/main.py
index e079e24ac395a61d3bb9f1ce2e588960771fdf8b..dc3602e2ac847692c2ce7526b462409a4680342c 100755
--- a/dstat-interface/main.py
+++ b/dstat-interface/main.py
@@ -176,8 +176,7 @@ class Main(object):
version_list = comm.version_check(self.serial_liststore.get_value(
self.serial_combobox.get_active_iter(), 0))
- self.version = version_list[0]
- self.serial = version_list[1]
+ self.version = version_list
self.statusbar.remove_all(self.error_context_id)
@@ -191,6 +190,7 @@ class Main(object):
"".join(["DStat version: ", str(self.version[0]),
".", str(self.version[1])])
)
+ comm.read_settings()
self.start_ocp()
self.connected = True
self.serial_connect.set_sensitive(False)
@@ -253,6 +253,11 @@ class Main(object):
parameters['adc_buffer'] = "2"
else:
parameters['adc_buffer'] = "0"
+
+ if self.adc_pot.short_toggle.get_active():
+ parameters['re_short'] = "1"
+ else:
+ parameters['re_short'] = "0"
srate_model = self.adc_pot.srate_combobox.get_model()
pga_model = self.adc_pot.pga_combobox.get_model()