예제 #1
0
 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
예제 #2
0
 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.)")
예제 #3
0
파일: base.py 프로젝트: zack-vii/archive
 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()
예제 #4
0
 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')
예제 #5
0
 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()
예제 #6
0
 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
예제 #7
0
 def store_temp(node, new):
     if isinstance(new, (float, )):
         node.record = MDSplus.Float64([new])
     elif isinstance(new, (int, )):
         node.record = MDSplus.Uint32([new])
예제 #8
0
 def sendSetPoint(self):
     MDSplus.Event.stream(
         0, 'SETPOINT', MDSplus.Float32(self.time),
         MDSplus.Float64(self.ui.positionSlider.value() / 100.))
예제 #9
0
 def sendUValue(self):
     u = float(self.ui.uValue.text())
     MDSplus.Event.stream(0, 'U', MDSplus.Float32(self.time),
                          MDSplus.Float64(u))