Beispiel #1
0
    def update(self, wait=False):
        # notify the machine EVG of the changes
        ec = tuple(map(int, self.__ec))
        bd = tuple(map(int, self.__bd))
        fd = tuple(map(int, self.__fd))
        bc = tuple(map(int, self.__bc))

        Pv.put(self.__pv_EC_array, ec)
        Pv.put(self.__pv_BD_array, bd)
        Pv.put(self.__pv_FD_array, fd)
        Pv.put(self.__pv_BC_array, bc)

        Pv.wait_for_value(self.__pv_EC_array, ec, timeout=1)
        Pv.wait_for_value(self.__pv_BD_array, bd, timeout=1)
        Pv.wait_for_value(self.__pv_FD_array, fd, timeout=1)
        Pv.wait_for_value(self.__pv_BC_array, bc, timeout=1)

        if wait:
            self.reset_update_cb()
        Pv.put(self.__pv_notify, 1)
        if wait:
            self.wait_update_cb()
Beispiel #2
0
 def follower(self):
     """ puts the pulse picker in follower mode """
     self._cleanup()
     self.trigger.delay(self._followerdelay)
     Pv.put(self._PVname('RUN_FOLLOWERMODE'), 1)
     Pv.wait_for_value(self._PVname('SE'), 6)
Beispiel #3
0
 def burst(self):
     """ puts the pulse picker in burst mode """
     self._cleanup()
     self.trigger.delay(self._burstdelay)
     Pv.put(self._PVname('RUN_BURSTMODE'), 1)
     Pv.wait_for_value(self._PVname('SE'), 3)
Beispiel #4
0
 def flipflop(self):
     """ puts the pulse picker in flip-flop mode """
     self._cleanup()
     self.trigger.delay(self._flipflopdelay)
     Pv.put(self._PVname('RUN_FLIPFLOP'), 1)
     Pv.wait_for_value(self._PVname('SE'), 2)
Beispiel #5
0
 def home(self):
     """ home the pulse picker rotation motor """
     self._cleanup()
     Pv.put(self._PVname('HOME:MOTOR'), 1)
     Pv.wait_until_change(self._PVname('SE'), 1)
     Pv.wait_for_value(self._PVname('SE'), 0)
Beispiel #6
0
 def _cleanup(self):
     self._seq.stop()
     self._reset_mode()
     Pv.wait_for_value(self._PVname("SD_L"), 0)
     # wait after this cleanup finishes - causes some issues otherwise
     time.sleep(0.5)