// stop streaming void CameraStop() { tPvErr errCode; //stop camera receiving triggers if ((errCode = PvCommandRun(GCamera.Handle,"AcquisitionStop")) != ePvErrSuccess) printf("AcquisitionStop command err: %u\n", errCode); else printf("AcquisitionStop success.\n"); //PvCaptureQueueClear aborts any actively written frame with Frame.Status = ePvErrDataMissing //Further queued frames returned with Frame.Status = ePvErrCancelled //Add delay between AcquisitionStop and PvCaptureQueueClear //to give actively written frame time to complete Sleep(200); printf("Calling PvCaptureQueueClear...\n"); if ((errCode = PvCaptureQueueClear(GCamera.Handle)) != ePvErrSuccess) printf("PvCaptureQueueClear err: %u\n", errCode); else printf("...Queue cleared.\n"); //stop driver stream if ((errCode = PvCaptureEnd(GCamera.Handle)) != ePvErrSuccess) printf("PvCaptureEnd err: %u\n", errCode); else printf("Driver stream stopped.\n"); }
void Camera::stop() { if (FSTmode_ == None) return; PvCommandRun(handle_, "AcquisitionStop"); PvCaptureEnd(handle_); PvCaptureQueueClear(handle_); FSTmode_ = None; }
void CtrlCHandler(int Signo) #endif { GCamera.Abort = true; if(GCamera.Handle) PvCaptureQueueClear(GCamera.Handle); #ifndef _WINDOWS signal(SIGINT, CtrlCHandler); #else return true; #endif }
// setup and start streaming // return value: true == success, false == fail bool CameraStart() { tPvErr errCode; // NOTE: This call sets camera PacketSize to largest sized test packet, up to 8228, that doesn't fail // on network card. Some MS VISTA network card drivers become unresponsive if test packet fails. // Use PvUint32Set(handle, "PacketSize", MaxAllowablePacketSize) instead. See network card properties // for max allowable PacketSize/MTU/JumboFrameSize. if((errCode = PvCaptureAdjustPacketSize(GCamera.Handle,8228)) != ePvErrSuccess) { printf("CameraStart: PvCaptureAdjustPacketSize err: %u\n", errCode); return false; } // start driver capture stream if((errCode = PvCaptureStart(GCamera.Handle)) != ePvErrSuccess) { printf("CameraStart: PvCaptureStart err: %u\n", errCode); return false; } // queue frame if((errCode = PvCaptureQueueFrame(GCamera.Handle,&(GCamera.Frame),NULL)) != ePvErrSuccess) { printf("CameraStart: PvCaptureQueueFrame err: %u\n", errCode); // stop driver capture stream PvCaptureEnd(GCamera.Handle); return false; } // set the camera in hardware trigger, continuous mode, and start camera receiving triggers if((PvAttrEnumSet(GCamera.Handle,"FrameStartTriggerMode","SyncIn1") != ePvErrSuccess) || (PvAttrEnumSet(GCamera.Handle,"AcquisitionMode","Continuous") != ePvErrSuccess) || (PvCommandRun(GCamera.Handle,"AcquisitionStart") != ePvErrSuccess)) { printf("CameraStart: failed to set camera attributes\n"); // clear queued frame PvCaptureQueueClear(GCamera.Handle); // stop driver capture stream PvCaptureEnd(GCamera.Handle); return false; } return true; }
// stop streaming void CameraStop() { tPvErr errCode; //stop camera receiving triggers if ((errCode = PvCommandRun(GCamera.Handle,"AcquisitionStop")) != ePvErrSuccess) printf("AcquisitionStop command err: %u\n", errCode); else printf("Camera stopped.\n"); //clear queued frames. will block until all frames dequeued if ((errCode = PvCaptureQueueClear(GCamera.Handle)) != ePvErrSuccess) printf("PvCaptureQueueClear err: %u\n", errCode); else printf("Queue cleared.\n"); //stop driver stream if ((errCode = PvCaptureEnd(GCamera.Handle)) != ePvErrSuccess) printf("PvCaptureEnd err: %u\n", errCode); else printf("Driver stream stopped.\n"); }
// unsetup the camera void cameraUnsetup(tCamera* camera) { // dequeue all the frame still queued (this will block until they all have been dequeued) PvCaptureQueueClear(camera->Handle); // then close the camera PvCameraClose(camera->Handle); }