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

58 lines
1.6 KiB
Python

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)