#CAS.setServerPort(5064) import java.util.function.BiFunction as BiFunction class ShellCommand(RegisterBase, RegisterArray): def __init__(self, name): RegisterBase.__init__(self, name) self.val = "" self.debug=False self.max_size = 10000 def getSize(self): return 1 def doRead(self): if self.debug: print "READ: ", self.val return self.val def doWrite(self, val): self.val = "RUNNING" try: if self.debug: print "WRITE: ", val cmd = str(val[0]) class eval_callback(BiFunction): def apply(self_callback, ret, ex): try: if ex is not None: err=ex.message if "Exception:" in err: err = err[err.index("Exception:")+10:].strip() self.val = "ERR:" + err else: self.val = "RET:" + str(ret) self.val = self.val[0:self.max_size] except: err=str(sys.exc_info()[1]) self.val = "EXC: " + err if self.debug: print self.val #self.val = cmd get_context().evalLineBackgroundAsync(cmd).handle(eval_callback()) except: err=str(sys.exc_info()[1]) if "Exception:" in err: err = err[err.index("Exception:")+10:].strip() self.val = "EXC: " + err self.val = self.val[0:self.max_size] if self.debug: print self.val add_device(ShellCommand("sc"), True) cas = CAS("TESTCAS:sc", sc, 'string') #print caget("TESTCAS:sc","s") #/Users/gobbo_a/anaconda3/envs/epics/epics/bin/darwin-x86