This commit is contained in:
73
script/ShellCommand.py
Normal file
73
script/ShellCommand.py
Normal file
@@ -0,0 +1,73 @@
|
||||
#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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user