Files
sics/site_ansto/instrument/TEST_SICS/fakeCameraServer/SIM_DINGO_CAMSERVER.py
Ferdi Franceschini 2df9297a3f SICS-587 Setup hostport dictionary based configuration for dingo.
Also added simulated camera server and a camtest configuration file to
run test scans against a dummy motor.
2013-06-14 10:18:45 +10:00

77 lines
2.4 KiB
Python
Executable File

#!/usr/bin/python
from twisted.internet import reactor, protocol
from twisted.protocols.basic import LineReceiver
# camState = {'temp': "301.5", 'shspd': "21", 'ffmt': "TIFF", 'binres': "4", 'imsz': "2048", 'xstart': "0", 'ystart': "0", 'floc': "/experiments/dingo/camdata", 'fname': "image003.tiff", 'fcntr': "3", 'status': "Idle", 'shtime': "6"}
class CamServ(LineReceiver):
def __init__(self):
self.camState = {'camera': "clock=1mhz,bin=1x,size=2048,gain=1xhs,flip=normal,xpos=0,ypos=0,exposure=0.777,temperature=-50,threshold=800,shutteropentime=100,shutterclosetime=200", 'file': "path=/experiments/dingo/data,basename=DingoTst,startnumber=1,imageformat=tiff,experimentdetail=this is an experiment", 'meta': "sx=100,sy=200,experiment=testing3", 'status': "camera status", 'state': "Idle", 'info': "camera info"}
print "Camera get/set commands: ", self.camState.keys()
def getCmd(self, par):
if par in self.camState:
self.sendLine(self.camState[par])
else:
self.sendLine("ERROR: Unknown parameter, " + par)
def setCmd(self, s):
par,val = s.split(',',1)
if par in self.camState:
self.camState[par] = val
self.sendLine("OK")
else:
self.sendLine("ERROR: Unknown parameter, " + par)
def takeCmd(self, cmd):
if cmd == 'shot':
self.sendLine("OK")
elif cmd == 'multishot':
self.sendLine("OK")
else:
self.sendLine("ERROR:1")
def clearCmd(self, par):
if par == 'meta':
self.sendLine("OK")
else:
self.sendLine("ERROR:1")
def lineReceived(self, line):
print "RECEIVED: " + line
cmd = line.split()
if len(cmd) == 0:
self.sendLine(line)
return
if cmd[0] == "get":
self.getCmd(cmd[1])
elif cmd[0] =="set":
if len(cmd) == 1:
self.sendLine("ERROR:2")
return
self.setCmd(cmd[1])
elif cmd[0] == "take":
if len(cmd) == 1:
self.sendLine("ERROR:2")
return
self.takeCmd(cmd[1])
elif cmd[0] == "clear":
if len(cmd) == 1:
self.sendLine("ERROR:2")
return
self.clearCmd(cmd[1])
else:
self.sendLine("ERROR: Unknown command, " + line)
def main():
factory = protocol.ServerFactory()
factory.protocol = CamServ
reactor.listenTCP(63300,factory)
reactor.run()
if __name__ == '__main__':
main()