コード例 #1
0
 def closeCamera(self):
     try:
         for i in range(len(self._listBuffers)):
             PCO.FreeBuffer(self._camera, self._listBuffers[i])
     except:
         print 'Could not free buffers'
     try:
         PCO.SetRecordingState(self._camera, 0)
     except:
         a = PCO.GetRecordingState(self._camera)
         if not a == 0:
             print 'Problem setting recording state to zero'
     PCO.CloseCamera(self._camera)
     return
コード例 #2
0
 def abortTakeTriggedPicture(self, nPicture=1):
     try:
         PCO.CancelImages(self._camera)
     except:
         print 'Could not cancel image'
     try:
         PCO.SetRecordingState(self._camera, 0)
     except:
         print 'Could not set recording state to zero'
     try:
         for i in range(len(self._listBuffers)):
             PCO.FreeBuffer(self._camera, self._listBuffers[i])
     except:
         print 'Could not free buffers'
     return self.checkCameraOk()
コード例 #3
0
    def _setupCamera(self):
        self._description = PCO.GetCameraDescription(self._camera)
        self._sizes = PCO.GetSizes(self._camera)
        #        T = PCO.GetTemperature(self._camera)
        PCO.SetBinning(self._camera, 1, 1)
        PCO.SetStorageMode(self._camera, 0)
        PCO.SetRecorderSubmode(self._camera, 1)
        PCO.SetAcquireMode(self._camera, 0)
        PCO.SetDelayExposureTime(self._camera, 0, self._exposure, 1, 1)
        PCO.SetPixelRate(self._camera, 12000000)

        #        PCO.SetRecordingState(self._camera,0)
        #        r = PCO.GetActiveRamSegment(self._camera)
        return
コード例 #4
0
    def takeSinglePicture(self):
        #        Set right parameters (trigger mode, interlacing mode)
        PCO.SetDelayExposureTime(self._camera, 0, self._exposure, 1, 1)
        PCO.SetTriggerMode(self._camera, 0)
        #        PCO.SetDoubleImageMode(self._camera,0)
        #        Initialize a new buffer
        imsize = self._sizes.XResAct * self._sizes.YResAct * 2
        bufsize = imsize
        buf = PCO.AllocateBuffer(self._camera, bufsize, -1)
        bufnr = buf.BufNr
        self._listBuffers.append(bufnr)
        #        Arm the camera to validate the settings
        PCO.ArmCamera(self._camera)
        #        Set recording state to 1
        PCO.SetRecordingState(self._camera, 1)
        #        Add the buffer to the list of active buffer
        PCO.AddBufferEx(self._camera, 0, 0, buf.BufNr, self._sizes.XResAct,
                        self._sizes.YResAct, self._description.wDynResDESC)
        #        Wait until the buffer event is set in order to be able to read the picture
        v = 0
        while (v & 32768) == 0:
            bufStat = PCO.GetBufferStatus(self._camera, buf.BufNr)
            v = (bufStat.StatusDll + 2**32)
            time.sleep(0.1)
#        Once the event is set, read the buffer
        im = buf.Buf[:bufsize]
        im = np.array(im)
        im = np.reshape(im[:self._sizes.XResAct * self._sizes.YResAct],
                        (self._sizes.YResAct, self._sizes.XResAct))
        #        Remove the buffer from the queue, set recording state to 0 and free the buffer
        PCO.CancelImages(self._camera)
        PCO.SetRecordingState(self._camera, 0)
        PCO.FreeBuffer(self._camera, buf.BufNr)
        self._listBuffers.remove(bufnr)

        return im
コード例 #5
0
 def checkCameraOk(self):
     k = PCO.GetCameraHealthStatus(self._camera).Status
     returnString = 'Status of camera :\n'
     if k & 1 > 0:
         returnString = returnString + '\t- Camera is in default state, no settings were changed'
     else:
         returnString = returnString + '\t- Camera is not default state, settings were changed since power up or reset'
     if k & 2 > 0:
         returnString = returnString + '\t- Settings are valid (last "Arm Camera" was successful and no settings were changed appart from exposure time")'
     else:
         returnString = returnString + '\t- Settings were changed but not yet checked and accepted by an "Arm Camera" command'
     if k & 4 > 0:
         returnString = returnString + '\t- Recording state is on'
     else:
         returnString = returnString + '\t- Recording state is off'
     if k & 16 > 0:
         returnString = returnString + '\t- Framerate setting is on'
     else:
         returnString = returnString + '\t- Framerate setting is off'
     return returnString
コード例 #6
0
 def openCamera(self, number=0):
     self._camera = PCO.OpenCamera(number)
     self._setupCamera()
     return
コード例 #7
0
    def takeTriggedPicture(self, nPicture=1):
        #        Set right parameters (trigger mode, interlacing mode)
        unit = 1
        PCO.SetDelayExposureTime(self._camera, 0, self._exposure, unit, unit)
        unitStr = ''
        if unit == 0:
            unitStr = 'ns'
        elif unit == 1:
            unitStr = 'us'
        elif unit == 2:
            unitStr = 'ms'
        PCO.SetTriggerMode(self._camera, 2)
        PCO.SetDoubleImageMode(self._camera, 1)
        time.sleep(0.1)
        #        Initialize two new buffers
        imsize = self._sizes.XResAct * self._sizes.YResAct
        print 'XResAct = ', self._sizes.XResAct, ' ; YResAct = ', self._sizes.YResAct
        #        print 'XResAct',self._sizes.XResAct
        #        print 'YResAct',self._sizes.YResAct
        bufsize = int(1.2 * imsize)
        print 'Before initialize buffer'
        buf = PCO.AllocateBuffer(self._camera, bufsize, -1)
        bufBgd = PCO.AllocateBuffer(self._camera, bufsize, -1)
        print 'After initialize buffer'
        bufnr = buf.BufNr
        self._listBuffers.append(bufnr)
        bufnrbg = bufBgd.BufNr
        self._listBuffers.append(bufnrbg)
        print 'list of buffers', self._listBuffers
        #        Arm the camera to validate the settings
        PCO.ArmCamera(self._camera)
        #        Set recording state to 1
        PCO.SetRecordingState(self._camera, 1)
        #        Add the buffers to the list of active buffers
        PCO.AddBufferEx(self._camera, 0, 0, buf.BufNr, self._sizes.XResAct,
                        self._sizes.YResAct, self._description.wDynResDESC)
        PCO.AddBufferEx(self._camera, 0, 0, bufBgd.BufNr, self._sizes.XResAct,
                        self._sizes.YResAct, self._description.wDynResDESC)
        #        Wait until the buffer event is set in order to be able to read the picture
        v = 0
        vBgd = 0
        vOld = 0
        vBgdOld = 0
        print 'start waiting'
        while (v & 32768) == 0 or (vBgd & 32768) == 0:
            #        while (v&32768)==0:
            vOld = v
            vBgdOld = vBgd
            bufStat = PCO.GetBufferStatus(self._camera, buf.BufNr)
            v = (bufStat.StatusDll + 2**32)
            bufStat = PCO.GetBufferStatus(self._camera, bufBgd.BufNr)
            vBgd = (bufStat.StatusDll + 2**32)
            time.sleep(0.1)
            if not (v & 32768) == (vOld & 32768):
                print 'event 1 set'
            if not (vBgd & 32768) == (vBgdOld & 32768):
                print 'event 2 set'
#        Once the event is set, read the buffer
        print 'try to read first buffer of size ', bufsize, ' up to ', imsize
        im = buf.Buf[:imsize]
        print 'try to read second buffer of size ', bufsize, ' up to ', imsize
        bgd = bufBgd.Buf[:imsize]
        print 'buffer saved as list'
        #im1 = np.zeros((len(im),),dtype = np.int32)
        #bgd1 = np.zeros((len(bgd),),dtype = np.int32)
        #im1[:] = im
        #bgd1[:] = bgd
        #        Remove the buffer from the queue, set recording state to 0 and free the buffer
        print 'start emptying buffers'
        PCO.SetRecordingState(self._camera, 0)
        PCO.CancelImages(self._camera)
        PCO.FreeBuffer(self._camera, buf.BufNr)
        PCO.FreeBuffer(self._camera, bufBgd.BufNr)
        self._listBuffers.remove(bufnr)
        self._listBuffers.remove(bufnrbg)
        print 'list of buffers', self._listBuffers
        #        Process the pictures
        im1, im2 = self.transformListToArray(im)
        bgd1, bgd2 = self.transformListToArray(bgd)
        image = []
        image.append(im1)
        image.append(im2)
        image.append(bgd1)
        image.append(bgd2)
        return image