Files
dev/script/ShellCommand.py
2023-05-01 11:28:04 +02:00

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