def testSettingsBasedWait(self): setScanSettings(MyScanSettings()) cmd = SettingsBasedWait('SomePV', 42) self.assertEquals(str(cmd), "Wait('SomePV', 42, comparison='>=')") cmd = SettingsBasedWait('PerpetualCounter', 42) self.assertEquals(str(cmd), "Wait('PerpetualCounter', 42, comparison='increase by')")
def testSettingsBasedSet(self): setScanSettings(MyScanSettings()) cmd = SettingsBasedSet('My:Motor1', 42) self.assertEquals(str(cmd), "Set('My:Motor1', 42, completion=True, readback='My:Motor1.RBV', timeout=100)") cmd = SettingsBasedSet('Unknown:Motor1', 42) self.assertEquals(str(cmd), "Set('Unknown:Motor1', 42, readback='Unknown:Motor1.RBV')") cmd = SettingsBasedSet('Unknown:Motor1', 42, readback=False) self.assertEquals(str(cmd), "Set('Unknown:Motor1', 42)")
def testSettingsBasedWait(self): setScanSettings(MyScanSettings()) cmd = SettingsBasedWait('SomePV', 42) self.assertEquals( str(cmd), "Wait('SomePV', 42, comparison='>=', tolerance=0.1)") cmd = SettingsBasedWait('PerpetualCounter', 42) self.assertEquals( str(cmd), "Wait('PerpetualCounter', 42, comparison='increase by', tolerance=0.1)" )
def testSettingsBasedLoop(self): setScanSettings(MyScanSettings()) cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, Delay(1)) self.assertEquals( str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1) ], completion=True, readback='My:Motor1.RBV', tolerance=0.2, timeout=100)" ) cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, Delay(1), Delay(2)) self.assertEquals( str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], completion=True, readback='My:Motor1.RBV', tolerance=0.2, timeout=100)" ) cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, [Delay(1), Delay(2)]) self.assertEquals( str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], completion=True, readback='My:Motor1.RBV', tolerance=0.2, timeout=100)" ) cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, [Delay(1), Delay(2)], completion=False) self.assertEquals( str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], readback='My:Motor1.RBV', tolerance=0.2, timeout=100)" ) cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, [Delay(1), Delay(2)], completion=False, timeout=0) self.assertEquals( str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], readback='My:Motor1.RBV', tolerance=0.2)" ) cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, [Delay(1), Delay(2)], completion=False, readback=False) self.assertEquals( str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ])")
def testSettingsBasedSet(self): setScanSettings(MyScanSettings()) cmd = SettingsBasedSet('My:Motor1', 42) self.assertEquals( str(cmd), "Set('My:Motor1', 42, completion=True, readback='My:Motor1.RBV', timeout=100)" ) cmd = SettingsBasedSet('Unknown:Motor1', 42) self.assertEquals( str(cmd), "Set('Unknown:Motor1', 42, readback='Unknown:Motor1.RBV')") cmd = SettingsBasedSet('Unknown:Motor1', 42, readback=False) self.assertEquals(str(cmd), "Set('Unknown:Motor1', 42)")
def testSettingsBasedLoop(self): setScanSettings(MyScanSettings()) cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, Delay(1)); self.assertEquals(str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1) ], completion=True, readback='My:Motor1.RBV', timeout=100)") cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, Delay(1), Delay(2)); self.assertEquals(str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], completion=True, readback='My:Motor1.RBV', timeout=100)") cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ]); self.assertEquals(str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], completion=True, readback='My:Motor1.RBV', timeout=100)") cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], completion=False); self.assertEquals(str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], readback='My:Motor1.RBV', timeout=100)") cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], completion=False, timeout=0); self.assertEquals(str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], readback='My:Motor1.RBV')") cmd = SettingsBasedLoop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ], completion=False, readback=False); self.assertEquals(str(cmd), "Loop('My:Motor1', 1, 10, 2, [ Delay(1), Delay(2) ])")
def testSettingsBasedSet(self): setScanSettings(MyScanSettings()) cmd = SettingsBasedSet('My:Motor1', 42) self.assertEquals( str(cmd), "Set('My:Motor1', 42, completion=True, timeout=100, readback='My:Motor1.RBV', tolerance=0.100000)" ) cmd = SettingsBasedSet('Unknown:Motor1', 42) self.assertEquals( str(cmd), "Set('Unknown:Motor1', 42, readback='Unknown:Motor1.RBV', tolerance=0.100000)" ) cmd = SettingsBasedSet('Unknown:Motor1', 42, readback=False) self.assertEquals(str(cmd), "Set('Unknown:Motor1', 42)") cmd = SettingsBasedSet('DeviceWithStatus', 5) self.assertEquals( str(cmd), "Set('DeviceWithStatus', 5, completion=True, readback='Status', readback_value='OK')" )
def getReadbackName(self, device_name): # Motors use their *.RBV field for readback if device_name.startswith("pos"): return device_name + ".RBV" return device_name if __name__ == "__main__": print "Without scan settings:" cmds = [ Set('temperature', 10), Wait('PerpetualCounter', 10), ] for cmd in cmds: print cmd # Result: # Set('temperature', 10) # Wait('PerpetualCounter', 10, comparison='>=') setScanSettings(MyScanSettings()) print "With scan settings:" cmds = [ Set('temperature', 10), Wait('PerpetualCounter', 10), ] for cmd in cmds: print cmd # Result: # Set('temperature', 10, completion=True, timeOut=300) # Wait('PerpetualCounter', 10, comparison='increase by')
timeout=10) # # def getReadbackName(self, device_name): # # Motors use their *.RBV field for readback # if 'motor' in device_name: # return device_name + ".RBV" # return device_name if __name__ == '__main__': orig_motor_x = 0 orig_motor_y = 0 # Custom settings configure the TableScan setScanSettings(LocalScanSettings()) # Create table scan command # list all scan parameters table = TableScan(['motor_x', 'motor_y', "Wait For", "Value"], [ [1, 1, 'Seconds', 1], ['', 2, 'Seconds', 1], ['', 3, 'Seconds', 1], [2, 1, 'Seconds', 1], ['', 2, 'Seconds', 1], ['', 3, 'Seconds', 1], [3, 1, 'Seconds', 1], ['', 2, 'Seconds', 1], ['', 3, 'Seconds', 1], [4, 1, 'Seconds', 1], ['', 2, 'Seconds', 1], ['', 3, 'Seconds', 1],
# use motor, and does not check its readback self.defineDeviceClass(".*motor.*", completion=True, readback=False, timeout=10) # # def getReadbackName(self, device_name): # # Motors use their *.RBV field for readback # if 'motor' in device_name: # return device_name + ".RBV" # return device_name if __name__ == '__main__': orig_motor_x = 0 orig_motor_y = 0 # Custom settings configure the TableScan setScanSettings(LocalScanSettings()) # Create table scan command # use function to generate scan range table = TableScan(['Comment', 'motor_x', 'motor_y', 'Wait For', 'Value'], [['Example', '', '', '', ''], ['', 'range(1, 6, 1)', 'range(1, 4, 1)', 'Seconds', 1], ['', 1, 1, '', '']], pre=Set('motor_x', 1, completion=True), post=[Set('motor_x', orig_motor_x, completion=True), Set('motor_y', orig_motor_y, completion=True),], start=Set("neutrons", 0, completion=True, timeout=10), log_always=('neutrons', 'setpoint') ) cmds = table.createScan() try: