def test_big_detector_size():
    """Change the size of the simulator

    Make sure the hardware detector size matches the request
    """
    cam = Simulator.Camera()
    hw = Simulator.Interface(cam)
    ct = Core.CtControl(hw)
    cam.setFrameDim(Core.FrameDim(2048, 2000, Core.Bpp32))
    dim = ct.image().getImageDim()
    assert dim.getSize() == Core.Size(2048, 2000)

    detinfo = hw.getHwCtrlObj(Core.HwCap.DetInfo)
    assert detinfo.getMaxImageSize() == Core.Size(2048, 2000)
def test_update_mode():
    """Change the simulator mode of the detector

    Check that the size have not changed
    """
    cam = Simulator.Camera()
    hw = Simulator.Interface(cam)
    ct = Core.CtControl(hw)
    cam.setFrameDim(Core.FrameDim(100, 100, Core.Bpp32))
    dim = ct.image().getImageDim()
    assert dim.getSize() == Core.Size(100, 100)

    new_mode = Simulator.Camera.MODE_GENERATOR_PREFETCH
    cam.setMode(new_mode)

    dim = ct.image().getImageDim()
    assert dim.getSize() == Core.Size(100, 100)
示例#3
0
    def write_Roi(self, attr):

        data = attr.get_write_value()
        state = self.dev_state()
        self.Stop()

        roi = Core.Roi()
        roi.setTopLeft(Core.Point(data[0], data[1]))
        roi.setSize(Core.Size(data[2], data[3]))
        self.image.setRoi(roi)

        if state == PyTango.DevState.ON: self.Start()
def test_slsdetector_control(config_fname, enable_debug, use_events,
                             print_time, sleep_time, all_frames):

    if enable_debug:
        Core.DebParams.enableModuleFlags(Core.DebParams.AllFlags)
        Core.DebParams.enableTypeFlags(Core.DebParams.AllFlags)
    else:
        Core.DebParams.disableModuleFlags(Core.DebParams.AllFlags)

    deb.Always("Creating SlsDetectorAcq")
    acq = SlsDetectorAcq(config_fname, use_events, print_time, sleep_time,
                         all_frames)
    deb.Always("Done!")

    acq.initSaving("data", "img", ".edf", 0, Core.CtSaving.EDF,
                   Core.CtSaving.AutoFrame, 1)

    deb.Always("First run with default pars")
    acq.run()
    deb.Always("Done!")

    exp_time = 100e-3
    acq.setExpTime(exp_time)

    nb_acq_frames = 50
    acq.setNbAcqFrames(nb_acq_frames)

    deb.Always("Run exp_time=%s, nb_acq_frames=%s" % (exp_time, nb_acq_frames))
    acq.run()
    deb.Always("Done!")

    bin = Core.Bin(2, 2)
    acq.setBin(bin)

    nb_acq_frames = 5
    acq.setNbAcqFrames(nb_acq_frames)

    deb.Always("Run bin=<%sx%s>, nb_acq_frames=%s" %
               (bin.getX(), bin.getY(), nb_acq_frames))
    acq.run()
    deb.Always("Done!")

    roi = Core.Roi(Core.Point(256, 512), Core.Size(256, 512))
    if acq.checkValidRoi(roi):
        acq.setRoi(roi)

        roi_tl, roi_size = roi.getTopLeft(), roi.getSize()
        deb.Always(
            "Run roi=<%s,%s>-<%sx%s>" %
            (roi_tl.x, roi_tl.y, roi_size.getWidth(), roi_size.getHeight()))
        acq.run()
        deb.Always("Done!")
示例#5
0
    def setKinPars(self, kin_win_size, kin_line_beg, kin_stripes):
        deb.Param('Setting kin pars: ' +
                  'kin_win_size=%s, kin_line_beg=%s, kin_stripes=%s' % \
                  (kin_win_size, kin_line_beg, kin_stripes))
        if kin_stripes > 1:
            deb.Warning('Ignoring kin_stripes=%d' % kin_stripes)

        bin = _FrelonAcq.getBin()
        if kin_win_size % bin.getY() != 0:
            msg = 'Invalid kinetics window size (%d): ' % kin_win_size + \
                  'must be multiple of vert. bin (%d)' % bin.getY()
            raise Core.Exception, msg

        roi = _FrelonAcq.getRoi()
        roi = roi.getUnbinned(bin)
        tl = Core.Point(roi.getTopLeft().x, kin_line_beg)
        size = Core.Size(roi.getSize().getWidth(), kin_win_size)
        roi = Core.Roi(tl, size)
        roi = roi.getBinned(bin)
        _FrelonAcq.setRoi(roi)

        _FrelonAcq.setRoiLineBegin(kin_line_beg)
def test_frelon_acc(enable_debug, espia_dev_nb, vert_bin, exp_time,
                    acc_max_exp_time, nb_frames, acc_time_mode):

    if enable_debug:
        Core.DebParams.enableModuleFlags(Core.DebParams.AllFlags)
        Core.DebParams.enableTypeFlags(Core.DebParams.AllFlags)
    else:
        Core.DebParams.disableModuleFlags(Core.DebParams.AllFlags)

    deb.Always("Creating FrelonAcq")
    acq = Frelon.FrelonAcq(espia_dev_nb)
    deb.Trace("Done!")

    cam = acq.getFrelonCamera()

    ct = acq.getGlobalControl()
    ct_image = ct.image()
    ct_acq = ct.acquisition()

    acq_state = Core.AcqState()
    status_cb = ImageStatusCallback(ct, acq_state)
    ct.registerImageStatusCallback(status_cb)

    deb.Always("Setting Full Frame Mode - Speed - Chan 3&4")
    cam.setSPB2Config(Frelon.SPB2Speed)
    cam.setFrameTransferMode(Frelon.FFM)
    cam.setInputChan(Frelon.Chan34)
    deb.Trace("Done!")

    frame_dim = acq.getFrameDim(max_dim=True)
    bin = Core.Bin(1, vert_bin)
    deb.Always("Setting binning %s" % bin)
    ct_image.setBin(bin)
    deb.Trace("Done!")

    image_size = frame_dim.getSize()
    nb_cols = image_size.getWidth()
    nb_lines = image_size.getHeight() / vert_bin
    roi = Core.Roi(Core.Point(0, nb_lines - 2), Core.Size(nb_cols, 1))
    deb.Always("Setting RoI %s" % roi)
    ct_image.setRoi(roi)
    deb.Trace("Done!")

    deb.Always("Setting Kinetic RoI mode")
    cam.setRoiMode(Frelon.Kinetic)
    deb.Trace("Done!")

    deb.Always("Setting Acc. mode")
    ct_acq.setAcqMode(Core.Accumulation)
    deb.Trace("Done!")

    deb.Always("Setting %s Acc. Time mode" % acc_time_mode)
    acc_mode = Core.CtAcquisition.Live \
               if acc_time_mode == 'Live' \
               else Core.CtAcquisition.Real
    ct_acq.setAccTimeMode(acc_mode)
    deb.Trace("Done!")

    deb.Always("Setting Acc. max. exp. time %s" % acc_max_exp_time)
    ct_acq.setAccMaxExpoTime(acc_max_exp_time)
    deb.Trace("Done!")

    deb.Always("Setting exp. time %s" % exp_time)
    ct_acq.setAcqExpoTime(exp_time)
    deb.Trace("Done!")

    deb.Always("Setting nb. frames %s" % nb_frames)
    ct_acq.setAcqNbFrames(nb_frames)
    deb.Trace("Done!")

    acc_nb_frames = ct_acq.getAccNbFrames()
    acc_dead_time = ct_acq.getAccDeadTime()
    acc_live_time = ct_acq.getAccLiveTime()
    deb.Always("AccNbFrames: %d, AccDeadTime: %.6f, AccLiveTime: %.6f" %
               (acc_nb_frames, acc_dead_time, acc_live_time))

    deb.Always("Preparing acq.")
    ct.prepareAcq()
    deb.Trace("Done!")

    deb.Always("Starting acq.")
    status_cb.start()
    ct.startAcq()
    deb.Trace("Done!")

    state_mask = Core.AcqState.Acquiring
    acq_state.waitNot(state_mask)
    deb.Always("Finished!")

    dead_time = cam.getDeadTime()
    read_time = cam.getReadoutTime()
    xfer_time = cam.getTransferTime()
    deb.Always("Dead Time: %.6f, Readout Time: %.6f, Transfer Time: %.6f" %
               (dead_time, read_time, xfer_time))
示例#7
0
 def getMaxImageSize(self) :
     """Maximum size of the image
     @return """        
     return Core.Size(self.__width,self.__height)
示例#8
0
#  This software is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
# 
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, see <http://www.gnu.org/licenses/>.
############################################################################

from Lima import Core, Simulator

Core.DebParams.setTypeFlags(Core.DebParams.AllFlags)

cam = Simulator.Camera()

frame_dim = Core.FrameDim(Core.Size(800, 600), Core.Bpp32)
cam = Simulator.Camera()
getter = cam.getFrameGetter() 
getter.setFrameDim(frame_dim)

hwint = Simulator.Interface(cam)
control = Core.CtControl(hwint)

acq = control.acquisition()
acq.setAcqNbFrames(1)

img = control.image()
roi = Core.Roi(300,50,450,300)
img.setRoi(roi)
# img.setBin(Core.Bin(2, 2))
img.setRotation(Core.Rotation_90)
def test_frelon_control(enable_debug, use_events, print_time, sleep_time,
                        all_frames):

    if enable_debug:
        Core.DebParams.enableModuleFlags(Core.DebParams.AllFlags)
        Core.DebParams.enableTypeFlags(Core.DebParams.AllFlags)
    else:
        Core.DebParams.disableModuleFlags(Core.DebParams.AllFlags)

    deb.Always("Creating FrelonAcq")
    espia_dev_nb = 0
    acq = FrelonAcq(espia_dev_nb, use_events, print_time, sleep_time,
                    all_frames)
    deb.Always("Done!")
    
    acq.initSaving("data", "img", ".edf", 0, Core.CtSaving.EDF, 
                   Core.CtSaving.AutoFrame, 1);

    deb.Always("First run with default pars")
    acq.run()
    deb.Always("Done!")
    
    exp_time = 1e-6
    acq.setExpTime(exp_time)

    nb_acq_frames = 500
    acq.setNbAcqFrames(nb_acq_frames)

    deb.Always("Run exp_time=%s, nb_acq_frames=%s" % (exp_time, nb_acq_frames))
    acq.run()
    deb.Always("Done!")
    
    bin = Core.Bin(2, 2)
    acq.setBin(bin)

    nb_acq_frames = 5
    acq.setNbAcqFrames(nb_acq_frames)

    deb.Always("Run bin=<%sx%s>, nb_acq_frames=%s" % 
               (bin.getX(), bin.getY(), nb_acq_frames))
    acq.run()
    deb.Always("Done!")
    
    roi = Core.Roi(Core.Point(256, 256), Core.Size(512, 512));
    acq.setRoi(roi);

    roi_tl, roi_size = roi.getTopLeft(), roi.getSize()
    deb.Always("Run roi=<%s,%s>-<%sx%s>" %
               (roi_tl.x, roi_tl.y,
                roi_size.getWidth(), roi_size.getHeight()))
    acq.run()
    deb.Always("Done!")
    
    roi = Core.Roi(Core.Point(267, 267), Core.Size(501, 501));
    acq.setRoi(roi);

    roi_tl, roi_size = roi.getTopLeft(), roi.getSize()
    deb.Always("Run roi=<%s,%s>-<%sx%s>" %
               (roi_tl.x, roi_tl.y,
                roi_size.getWidth(), roi_size.getHeight()))
    acq.run()
    deb.Always("Done!")
示例#10
0
import time
from Lima import Core, Simulator

#Core.DebParams.setTypeFlags(Core.DebParams.AllFlags)

cam = Simulator.Camera()

frame_dim = Core.FrameDim(Core.Size(600, 300), Core.Bpp32)
cam = Simulator.Camera()
getter = cam.getFrameGetter()
getter.setFrameDim(frame_dim)

hwint = Simulator.Interface(cam)
control = Core.CtControl(hwint)

acq = control.acquisition()
acq.setAcqNbFrames(1)
acq.setAcqExpoTime(0.001)

img = control.image()

print("Attach debugger now")
input()

roi = Core.Roi(1, 1, 598, 298)  # Almost full frame
#roi = Core.Roi(0, 0, 600, 300) # Full frame
img.setRoi(roi)

rots = [
    Core.Rotation_0, Core.Rotation_90, Core.Rotation_180, Core.Rotation_270
]
示例#11
0
from Lima import Core, Simulator

Core.DebParams.setTypeFlags(Core.DebParams.AllFlags)

frame_dim = Core.FrameDim(Core.Size(800, 600), Core.Bpp32F)

cam = Simulator.Camera()
getter = cam.getFrameGetter()
getter.setFrameDim(frame_dim)
assert getter.getFrameDim() == frame_dim

hwint = Simulator.Interface(cam)
control = Core.CtControl(hwint)

img = control.image()
assert img.getMaxImageSize() == Core.Size(800, 600)
assert img.getImageDim() == frame_dim

###
img.reset()

# Rotate first, define ROI, unrotate
img.setRotation(Core.Rotation_90)
assert img.getMaxImageSize() == Core.Size(600, 800)

roi = Core.Roi(250, 300, 300, 450)
img.setRoi(roi)
img.setRotation(Core.Rotation_0)  # InvalidValue: Invalid corner coords

###
img.reset()
示例#12
0
 def getMaxImageSize(self):
     return Core.Size(self.__width, self.__height)