PVs
self.timestamp_pv = epics.PV(pv_name+':Image:TimeStamp_RBV', auto_monitor=True)
self.arraydata_pv = epics.PV(pv_name+':Image:ArrayData')# size of the image
#self.numpix_x_pv = epics.PV(pv_name+':ROI:ArraySizeX_RBV')
#self.numpix_y_pv = epics.PV(pv_name+':ROI:ArraySizeY_RBV')
self.numpix_x_pv = epics.PV(pv_name+':Image:ArraySize0_RBV')
self.numpix_y_pv = epics.PV(pv_name+':Image:ArraySize1_RBV')#self.acquire_pv = epics.PV(pv_name+':ROI:Acquire_RBV')
self.is_rotated_pv = epics.PV(pv_name+':IS_ROTATED')
self.x_orient_pv = epics.PV(pv_name+':X_ORIENT')
self.y_orient_pv = epics.PV(pv_name+':Y_ORIENT')- Reshape: camdata.data = new_data.reshape((numpix_y,numpix_x))
Timing
We performed a timing test of the PV readout. We used the EPICS address 'CAMR:LI20:107:Image:ArrayData', which is the data array of the camera image.
- caget() → 6.95 ms ± 102 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
- pv.get() → 6.87 ms ± 54 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
- pv.value → 328 ns ± 11.4 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)
- → pv.value should be used for fast readout