def sendU(self): if self.sim_index >= len(self.u): self.sim_index = 0 self.sim_time = 0.0 MDSplus.Event.stream(0, 'U', MDSplus.Float32(self.sim_time), MDSplus.Float64(self.u[self.sim_index])) self.ui.Ulabel.setText(str(self.u[self.sim_index])) self.sim_index += 1 self.ui.UNextlabel.setText(str(self.u[self.sim_index])) self.sim_time += .01
def decompile(self): self.assertEqual(str(m.Uint8(123)),'123BU') self.assertEqual(str(m.Uint16(123)),'123WU') self.assertEqual(str(m.Uint32(123)),'123LU') self.assertEqual(str(m.Uint64(123)),'123QU') self.assertEqual(str(m.Int8(123)),'123B') self.assertEqual(str(m.Int16(123)),'123W') self.assertEqual(str(m.Int32(123)),'123') self.assertEqual(str(m.Int64(123)),'123Q') self.assertEqual(str(m.Float32(1.2E-3)),'.0012') self.assertEqual(str(m.Float64(1.2E-3)),'.0012D0') self.assertEqual(str(m.Signal(m.ZERO(100000,0.).evaluate(),None,0.)),"Build_Signal(Set_Range(100000,0. /*** etc. ***/), *, 0.)")
def _dim(time, t0): if len(time): t0 = _mds.Int64(t0) time = _mds.Int64Array(time) if t0 == 0: unit = 'ns' else: time = _mds.Float64(time - t0) * 1E-9 unit = 's' wind = _mds.Window(time[0], time[time.shape[0] - 1], t0) dim = _mds.Dimension(wind, time) dim.setUnits(unit) return dim else: return _mds.EmptyData()
def sendY_M(self): print('sendY_M') print('sendStream') print('sendStream(shot, name, time, data)', 0, 'Y_M', MDSplus.Float32(self.sim_time), MDSplus.Float64Array(self.y_m[self.sim_index, :])) sendStream(0, 'Y_M', MDSplus.Float32(self.sim_time), MDSplus.Float64Array(self.y_m[self.sim_index, :])) print('send setpoint') MDSplus.Event.stream(0, 'SETPOINT', MDSplus.Float32(self.sim_time), MDSplus.Float64(self.set_point[self.sim_index])) self.sim_index += 1 print('set label') self.ui.Y_Mlabel.setText(str(self.y_m[self.sim_index, 0])) self.sim_time += .01 print('done')
def run(self): try: self.dev.tree.open() while not self.lib.is_stored(1): if not self.on: return time.sleep(.1) cinfo = self.lib.get_cinfo() self.dev.store_cinfo(cinfo) rate = float(cinfo['rate']) self.update(self.dev.frame_rate, (MDSplus.Float64(rate).setUnits('Hz'))) self.update(self.dev.exposure, (MDSplus.Int32(cinfo['exp']).setUnits('ns'))) num_cine = len(self.lib.cstats()) Q = queue.Queue(30) writer = self.Writer(self, Q) writer.start() try: for c in range(1, num_cine + 1): while not self.lib.is_triggered(c): if not self.on: return # end of measurement time.sleep(.1) self.lib.wait_stored(c) for trig, imgs in self.lib.read_images( 0, cine=c, debug=self.dev.debug, port=self.dev._host_port): while writer.is_alive(): try: Q.put((trig, imgs), True, 1) except queue.Full: continue else: break else: break finally: Q.put(None) # indicate last frame to end thread writer.join() if hasattr(writer, "exception"): self.exception = writer.exception except Exception as e: self.exception = e traceback.print_exc()
def run(self): while not self.stopped.wait(0.01): if (self.index == len(self.data) - 1): self.stopped.set() MDSplus.Event.stream(1, 'LIFT_COIL_DEMAND', MDSplus.Int64((time.time()) * 1000), MDSplus.Float64(self.data[self.index])) # data = json.dumps({u'absolute_time': 0, # u'shot': 1, # u'name': u'LIFT_COIL_DEMAND', # u'timestamp': int(time.time()), # u'times': [(time.time()-self.start_time)*1000], # u'seq_number': self.index, # u'samples': [self.data[self.index]]}) # print(data.__class__) # print(np.array(data)) # MDSplus.Event.setevent('LIFT_COIL_DEMAND',np.array(data)) self.index += 1
def store_temp(node, new): if isinstance(new, (float, )): node.record = MDSplus.Float64([new]) elif isinstance(new, (int, )): node.record = MDSplus.Uint32([new])
def sendSetPoint(self): MDSplus.Event.stream( 0, 'SETPOINT', MDSplus.Float32(self.time), MDSplus.Float64(self.ui.positionSlider.value() / 100.))
def sendUValue(self): u = float(self.ui.uValue.text()) MDSplus.Event.stream(0, 'U', MDSplus.Float32(self.time), MDSplus.Float64(u))