Esempio n. 1
0
def get_instruments(s=None, HOST='localhost', PORT=50007):
    '''Create virtual instruments for remote operation.'''
    if s is None:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((HOST, PORT))
    ins_names = ask_socket(s,'[ins._name for ins in instruments]')
    instruments = []
    for ins_name in ins_names:
        instruments.append(RemoteInstrument(socket=s, name=ins_name))
    return InstrumentList(*instruments, socket = s)
Esempio n. 2
0
 def do_measurement(self, measlist):
     if len(measlist)>0:
         meas = measlist.pop(0)
         if meas['type']=='do':
             do_func, args = meas['params']
             if hasattr(self.instruments, 's'):
                 ask_socket(self.instruments.s, '%s(*%s)' %(do_func, args))
             else:
                 eval('%s(*%s)' %(do_func, args))
             self.do_measurement(measlist.copy())
         if meas['type']=='sweep':
             self.recursive_sweep(measlist.copy(), *meas['params'])
         if meas['type']=='sweep_custom':
             self.recursive_sweep_custom(measlist.copy(), *meas['params'])
         if meas['type']=='do_while':
             clause = 'self.instruments.' + meas['params']
             while eval(clause):
                 self.do_measurement(measlist.copy())
         if meas['type']=='measure':
             dp = self.get_dp(meas['params'])
             self.pipe[0].send(dp)
             self.do_measurement(measlist.copy())
Esempio n. 3
0
 def _ask(self, cmd):
     return ask_socket(self._s, '0%s%s' %(len(cmd), cmd), 2)
Esempio n. 4
0
 def _set_param(self, param, value):
     if type(value) == str:
         cmd = "%s = '%s'" %(param, value)
     else:
         cmd = '%s = %s' %(param, value)
     return ask_socket(self._s, cmd)
Esempio n. 5
0
 def _get_param(self, param):
     return ask_socket(self._s, param)
Esempio n. 6
0
 def get_data(self):
     data = ask_socket(self.socket, 'self.get_data(\'%s\')' %(self.stamp))
     return pd.DataFrame(data, columns = self.columns)
Esempio n. 7
0
 def get_dp(self, n=None):
     dp = ask_socket(self.socket, 'self.get_dp(\'%s\', %s)' %(self.stamp, str(n)))
     dp = {key: val for key, val in zip(self.columns, dp)}
     return dp if dp != {} else None
Esempio n. 8
0
 def columns(self):
     if self._columns == []:
         self._columns = ask_socket(self.socket, 'self.get_columns(\'%s\')' %self.stamp)
     return self._columns
Esempio n. 9
0
 def data_length(self):
     data_length = ask_socket(self.socket, 'self.get_data_length(\'%s\')' %self.stamp)
     if data_length is not None:
         self._data_length = data_length
     return self._data_length
Esempio n. 10
0
 def start_remote(self):
     ask_socket(self.s, 'self.experiments[\'%s\'].run()' %self.stamp)
Esempio n. 11
0
 def create_remote(self):
     self.stamp = ask_socket(self.s, 'self.create_experiment(\'%s\', %s)' %(self.title, self.measlist))
Esempio n. 12
0
 def get_experiment(self, stamp):
     return ask_socket(self.s, 'self.get_experiment(\'%s\')' %stamp)
Esempio n. 13
0
 def _ask(self, cmd):
     if self._pipe is not None:
         return ask_pipe(self._pipe, cmd)
     elif self._socket is not None:
         return ask_socket(self._socket, self._name + '.' + cmd)