INT UEyeCamDriver::setExtTriggerMode() { if (!isConnected()) return IS_INVALID_CAMERA_HANDLE; INT is_err = IS_SUCCESS; if (!extTriggerModeActive()) { setStandbyMode(); // No need to check for success if ((is_err = is_EnableEvent(cam_handle_, IS_SET_EVENT_FRAME)) != IS_SUCCESS) { std::cerr << "Could not enable frame event for UEye camera '" << cam_name_ << "' (" << err2str(is_err) << ")" << std::endl; return is_err; } if ((is_err = is_SetExternalTrigger(cam_handle_, IS_SET_TRIGGER_HI_LO)) != IS_SUCCESS) { std::cerr << "Could not enable falling-edge external trigger mode on UEye camera '" << cam_name_ << "' (" << err2str(is_err) << ")" << std::endl; return is_err; } if ((is_err = is_CaptureVideo(cam_handle_, IS_DONT_WAIT)) != IS_SUCCESS) { std::cerr << "Could not start external trigger live video mode on UEye camera '" << cam_name_ << "' (" << err2str(is_err) << ")" << std::endl; return is_err; } std::cout << "Started falling-edge external trigger live video mode on UEye camera '" + cam_name_ + "'" << std::endl; } return is_err; }
void UEye_EventThread::start(void) { if(!this->m_running) { int status = is_EnableEvent(this->m_camera->getCameraID(), this->m_event); if(status == IS_SUCCESS) { this->m_stop = false; pthread_create(&m_eventThread, NULL, handler, this); } } }
int GUeyeCameraEventThread::start (HIDS hCam,int event) { int ret = 0; m_hCam = hCam; m_event = event; #ifndef __LINUX__ ret = is_InitEvent(m_hCam, m_hEvent, m_event); #endif ret = is_EnableEvent (m_hCam, m_event); if (ret == 0) { //printf ("started event %d detection!\n", m_event); m_bRunEventThread = true; QThread::start (); // start the thread run function } return ret; }
bool IdsSourceSink::StartAcquisition(QString dev) { if (dev!="IDS") qDebug()<<"Different devices not yet implemented"; is_SetExternalTrigger (hCam, IS_SET_TRIGGER_OFF); //This makes that calling freeze image creates a new image #ifdef Q_OS_WIN32 hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); is_InitEvent(hCam, hEvent, IS_SET_EVENT_FRAME); #endif is_EnableEvent(hCam, IS_SET_EVENT_FRAME); is_CaptureVideo(hCam, IS_WAIT); //this is to make it correspond to the default value in the gui SetInterval(100); SetShutter(100); return true; }
INT UEyeCamDriver::setFreeRunMode() { if (!isConnected()) return IS_INVALID_CAMERA_HANDLE; INT is_err = IS_SUCCESS; if (!freeRunModeActive()) { setStandbyMode(); // No need to check for success // Set the flash to a high active pulse for each image in the trigger mode INT flash_delay = 0; UINT flash_duration = 1000; setFlashParams(flash_delay, flash_duration); UINT nMode = IO_FLASH_MODE_FREERUN_HI_ACTIVE; if ((is_err = is_IO(cam_handle_, IS_IO_CMD_FLASH_SET_MODE, (void*) &nMode, sizeof(nMode))) != IS_SUCCESS) { std::cerr << "Could not set free-run active-low flash output for UEye camera '" << cam_name_ << "' (" << err2str(is_err) << ")" << std::endl; return is_err; } if ((is_err = is_EnableEvent(cam_handle_, IS_SET_EVENT_FRAME)) != IS_SUCCESS) { std::cerr << "Could not enable frame event for UEye camera '" << cam_name_ << "' (" << err2str(is_err) << ")" << std::endl; return is_err; } if ((is_err = is_CaptureVideo(cam_handle_, IS_WAIT)) != IS_SUCCESS) { std::cerr << "Could not start free-run live video mode on UEye camera '" << cam_name_ << "' (" << err2str(is_err) << ")" << std::endl; return is_err; } std::cout << "Started live video mode on UEye camera '" + cam_name_ + "'" << std::endl; } return is_err; }
ImageCaptureInterface::CapErrorCode UEyeCaptureInterface::startCapture() { qDebug("Start capture"); printf("Enabling events...\n"); #ifdef Q_OS_WIN leftCamera.mWinEvent = CreateEvent(NULL, FALSE, FALSE, NULL); is_InitEvent(leftCamera.mCamera, leftCamera.mWinEvent, IS_SET_EVENT_FRAME); rightCamera.mWinEvent = CreateEvent(NULL, FALSE, FALSE, NULL); is_InitEvent(rightCamera.mCamera, rightCamera.mWinEvent, IS_SET_EVENT_FRAME); #endif is_EnableEvent(leftCamera.mCamera, IS_SET_EVENT_FRAME); is_EnableEvent(rightCamera.mCamera, IS_SET_EVENT_FRAME); switch (sync) { case NO_SYNC: is_CaptureVideo (leftCamera.mCamera, IS_DONT_WAIT); is_CaptureVideo (rightCamera.mCamera, IS_DONT_WAIT); break; case SOFT_SYNC: is_SetExternalTrigger (leftCamera.mCamera , IS_SET_TRIGGER_SOFTWARE); is_SetExternalTrigger (rightCamera.mCamera, IS_SET_TRIGGER_SOFTWARE); break; case HARD_SYNC: { /* Should make a check that connection exist */ /*Left camera will generate flash*/ UINT nMode = IO_FLASH_MODE_FREERUN_HI_ACTIVE; printf("Setting left flash IO_FLASH_MODE_FREERUN_HI_ACTIVE...\n"); ueyeTrace(is_IO(leftCamera.mCamera, IS_IO_CMD_FLASH_SET_MODE, (void*)&nMode, sizeof(nMode))); /* Switching on leftCamera flash that will become right camera trigger */ printf("Setting left flash duration and delay...\n"); IO_FLASH_PARAMS flashParams; flashParams.s32Delay = 0; flashParams.u32Duration = 5000; // in us ueyeTrace(is_IO(leftCamera.mCamera, IS_IO_CMD_FLASH_SET_PARAMS, (void*)&flashParams, sizeof(flashParams))); /*right camera will generate flash also (for debug)*/ nMode = IO_FLASH_MODE_FREERUN_HI_ACTIVE; printf("Setting right flash IO_FLASH_MODE_FREERUN_HI_ACTIVE...\n"); ueyeTrace(is_IO(rightCamera.mCamera, IS_IO_CMD_FLASH_SET_MODE, (void*)&nMode, sizeof(nMode))); /* Switching on leftCamera flash that will become right camera trigger */ printf("Setting right flash duration and delay...\n"); flashParams.s32Delay = 0; flashParams.u32Duration = 5000; ueyeTrace(is_IO(rightCamera.mCamera, IS_IO_CMD_FLASH_SET_PARAMS, (void*)&flashParams, sizeof(flashParams))); /* Right camera is trigger based */ ueyeTrace(is_SetExternalTrigger (rightCamera.mCamera, IS_SET_TRIGGER_LO_HI)); //ueyeTrace(is_SetExternalTrigger (rightCamera.mCamera, IS_SET_TRIGGER_HI_LO)); printf("Launching both cameras run...\n"); /* Left camera is in free run mode */ ueyeTrace(is_CaptureVideo (leftCamera.mCamera, IS_DONT_WAIT)); /* Same for the right camera */ ueyeTrace(is_CaptureVideo (rightCamera.mCamera, IS_DONT_WAIT)); break; } case FRAME_HARD_SYNC: { /* TODO: Should make a check that connection exist */ /* Both cams are now trigger based*/ ueyeTrace(is_SetExternalTrigger (leftCamera.mCamera, IS_SET_TRIGGER_OFF)); /*Left camera will generate flash*/ UINT nMode = IO_FLASH_MODE_FREERUN_HI_ACTIVE; printf("Setting left flash IO_FLASH_MODE_TRIGGER_HI_ACTIVE...\n"); ueyeTrace(is_IO(leftCamera.mCamera, IS_IO_CMD_FLASH_SET_MODE, (void*)&nMode, sizeof(nMode))); /* Switching on leftCamera flash that will become right camera trigger */ printf("Setting left flash duration and delay...\n"); IO_FLASH_PARAMS flashParams; flashParams.s32Delay = 0; flashParams.u32Duration = 5000; ueyeTrace(is_IO(leftCamera.mCamera, IS_IO_CMD_FLASH_SET_PARAMS, (void*)&flashParams, sizeof(flashParams))); printf("Setting right camera to TRIGGER MODE...\n"); ueyeTrace(is_SetExternalTrigger (rightCamera.mCamera, IS_SET_TRIGGER_LO_HI )); /*right camera will generate flash also (for debug)*/ nMode = IO_FLASH_MODE_TRIGGER_HI_ACTIVE; printf("Setting right flash IO_FLASH_MODE_TRIGGER_HI_ACTIVE...\n"); ueyeTrace(is_IO(rightCamera.mCamera, IS_IO_CMD_FLASH_SET_MODE, (void*)&nMode, sizeof(nMode))); /* Switching on leftCamera flash that will become right camera trigger */ printf("Setting right flash duration and delay...\n"); flashParams.s32Delay = 0; flashParams.u32Duration = 5000; ueyeTrace(is_IO(rightCamera.mCamera, IS_IO_CMD_FLASH_SET_PARAMS, (void*)&flashParams, sizeof(flashParams))); break; } case EXT_SYNC: { printf("Running on external syncro...\n"); /* Setting triggers for both cams*/ printf("Setting left camera to TRIGGER MODE...\n"); ueyeTrace(is_SetExternalTrigger (leftCamera.mCamera, IS_SET_TRIGGER_LO_HI)); printf("Setting right camera to TRIGGER MODE...\n"); ueyeTrace(is_SetExternalTrigger (rightCamera.mCamera,IS_SET_TRIGGER_LO_HI)); /*Left camera will generate flash*/ UINT nMode = IO_FLASH_MODE_TRIGGER_HI_ACTIVE; printf("Setting left flash IO_FLASH_MODE_TRIGGER_HI_ACTIVE...\n"); ueyeTrace(is_IO(leftCamera.mCamera, IS_IO_CMD_FLASH_SET_MODE, (void*)&nMode, sizeof(nMode))); /* Switching on leftCamera flash that will become right camera trigger */ printf("Setting left flash duration and delay...\n"); IO_FLASH_PARAMS flashParams; flashParams.s32Delay = 0; flashParams.u32Duration = 5000; ueyeTrace(is_IO(leftCamera.mCamera, IS_IO_CMD_FLASH_SET_PARAMS, (void*)&flashParams, sizeof(flashParams))); /*right camera will generate flash also (for debug)*/ nMode = IO_FLASH_MODE_TRIGGER_HI_ACTIVE; printf("Setting right flash IO_FLASH_MODE_TRIGGER_HI_ACTIVE...\n"); ueyeTrace(is_IO(rightCamera.mCamera, IS_IO_CMD_FLASH_SET_MODE, (void*)&nMode, sizeof(nMode))); /* Switching on leftCamera flash that will become right camera trigger */ printf("Setting right flash duration and delay...\n"); flashParams.s32Delay = 0; flashParams.u32Duration = 5000; ueyeTrace(is_IO(rightCamera.mCamera, IS_IO_CMD_FLASH_SET_PARAMS, (void*)&flashParams, sizeof(flashParams))); /* Left camera is repeated run mode */ ueyeTrace(is_CaptureVideo (leftCamera.mCamera, IS_DONT_WAIT)); /* Same for the right camera */ ueyeTrace(is_CaptureVideo (rightCamera.mCamera, IS_DONT_WAIT)); break; } } shouldStopSpinThread = false; spin.start(); return ImageCaptureInterface::SUCCESS; }