74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
#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
|
|
|
|
|
|
|
|
|
|
|
|
|