import java.lang.Short as Short import ch.psi.pshell.epics.CAS as CAS import ch.psi.pshell.device.Register.RegisterArray as RegisterArray import random camera = "SLG-LCAM-C102" CAMERA_ADDRESS = "tcp://192.168.0.70:9999" IMG_WIDTH = 200 IMG_HEIGHT = 100 EPICS_PV_SUFFIX_STATUS = ":INIT" EPICS_PV_SUFFIX_WIDTH = ":WIDTH" EPICS_PV_SUFFIX_HEIGHT = ":HEIGHT" EPICS_PV_SUFFIX_STREAM_ADDRESS = ":BSREADCONFIG" EPICS_PV_SUFFIX_IMG = ":FPICTURE" class Scalar(RegisterBase): def __init__(self, name): RegisterBase.__init__(self, name) def doRead(self): return self.val def doWrite(self, val): self.val = val add_device(Scalar("cam_init"), True) add_device(Scalar("cam_width"), True) add_device(Scalar("cam_height"), True) add_device(Scalar("cam_add"), True) cam_width.write(IMG_WIDTH) cam_height.write(IMG_HEIGHT) cam_init.write("INIT") cam_add.write(CAMERA_ADDRESS) #CAS.setServerPort(1234) cas1 = CAS(camera + EPICS_PV_SUFFIX_STATUS, cam_init, 'string') cas2 = CAS(camera + EPICS_PV_SUFFIX_WIDTH, cam_width, 'int') cas3 = CAS(camera + EPICS_PV_SUFFIX_HEIGHT, cam_height, 'int') cas4 = CAS(camera + EPICS_PV_SUFFIX_STREAM_ADDRESS, cam_add, 'string') class Img(ReadonlyRegisterBase, ReadonlyRegisterArray): def doRead(self): return Convert.toPrimitiveArray(Convert.flatten(cam_server.getArray()),Short) add_device(Img("cam_img"), True) cas5 = CAS(camera + EPICS_PV_SUFFIX_IMG, cam_img, 'double') print caget(camera + EPICS_PV_SUFFIX_STATUS) print caget(camera + EPICS_PV_SUFFIX_WIDTH) print caget(camera + EPICS_PV_SUFFIX_HEIGHT) print caget(camera + EPICS_PV_SUFFIX_STREAM_ADDRESS)