void * UEye_EventThread::handler(void * arg) { UEye_EventThread * thread = reinterpret_cast<UEye_EventThread *>(arg); while(!thread->m_stop) { if(is_WaitEvent(thread->m_camera->getCameraID(), thread->m_event, EVENT_TIMEOUT) == IS_SUCCESS) { thread->m_eventCallback(thread->m_camera); } } thread->m_running = false; return NULL; }
const char* UEyeCamDriver::processNextFrame(INT timeout_ms) { if (!freeRunModeActive() && !extTriggerModeActive()) return NULL; INT is_err = IS_SUCCESS; // Wait for frame event if ((is_err = is_WaitEvent(cam_handle_, IS_SET_EVENT_FRAME, timeout_ms)) != IS_SUCCESS) { std::cerr << "Failed to acquire image from UEye camera '" << cam_name_ << "' (" << err2str(is_err) << ")" << std::endl; return NULL; } return cam_buffer_; }
bool IdsSourceSink::GrabFrame(ImagePacket &target, int indexIncrement) { if (indexIncrement<0) qDebug()<<"Cannot stream backwards"; #ifdef Q_OS_WIN32 if (WaitForSingleObject(hEvent, EVENTTHREAD_WAIT_TIMEOUT) == WAIT_OBJECT_0) { #else if (is_WaitEvent (hCam, IS_SET_EVENT_FRAME, camTimeStep*5) == IS_SUCCESS) { #endif void *pMemVoid; //pointer to where the image is stored ********************** is_GetImageMem (hCam, &pMemVoid); buffer.data = (unsigned char*)pMemVoid; is_GetImageInfo( hCam, memId, &ImageInfo, sizeof(ImageInfo)); //Get info ASAP in case of an interruption due to a click target.image=buffer.clone(); if (camTimeOffset==0) { camTimeOffset=3600000*ImageInfo.TimestampSystem.wHour+60000*ImageInfo.TimestampSystem.wMinute+1000.0*ImageInfo.TimestampSystem.wSecond+ImageInfo.TimestampSystem.wMilliseconds; target.timeStamp=0; } else { double tis; tis=3600000*ImageInfo.TimestampSystem.wHour+60000*ImageInfo.TimestampSystem.wMinute+1000.0*ImageInfo.TimestampSystem.wSecond+ImageInfo.TimestampSystem.wMilliseconds-camTimeOffset; target.timeStamp=tis; } target.seqNumber=ImageInfo.u64FrameNumber; target.pixFormat="MONO8"; } return true; } bool IdsSourceSink::StopAcquisition() { is_StopLiveVideo(hCam, IS_WAIT); is_DisableEvent (hCam, IS_SET_EVENT_FRAME); //added by Sam #ifdef Q_OS_WIN32 is_ExitEvent(hCam, hEvent); #endif is_FreeImageMem (hCam, imgMem, memId); Sleeper::msleep(10*camTimeStep); // NEEDS some sleep to stop all internal events return true; }
void GUeyeCameraEventThread::run () { //printf ("start waiting on event %d\n", m_event); while (m_bRunEventThread) { #ifdef __LINUX__ if (is_WaitEvent (m_hCam, m_event, 1) == IS_SUCCESS) #else if (WaitForSingleObject(m_hEvent, 1000) == WAIT_OBJECT_0) #endif { //printf ("event %d detected\n", m_event); emit eventhappen (m_event); } } m_bRunEventThread = FALSE; is_DisableEvent (m_hCam, m_event); #ifndef __LINUX__ is_ExitEvent(m_hCam, m_event); #endif //printf ("stop waiting on event %d\n", m_event); }