public void StartWaitForFrame(TUCAM_OPEN openCam) { //if (m_bWaitting) // return; m_bWaitting = true; if ((IntPtr)0 == m_hThdWaitForFrame) { m_drawframe.pBuffer = IntPtr.Zero; m_drawframe.ucFormatGet = (byte)TUFRM_FORMATS.TUFRM_FMT_RGB888; m_drawframe.uiRsdSize = 1; // how many frames do you want int nValue = 0; if ((int)TUCAM_CAPTURE_MODES.TUCCM_SEQUENCE != m_nTriMode) { nValue = (int)TUCamera.TUCAM_Cap_GetTrigger(openCam.hIdxTUCam, ref attrTgr); attrTgr.nTgrMode = m_nTriMode; attrTgr.nFrames = -1; // how many frames do you want to capture to RAM(the frames less than 0, use maximum frames ) nValue = (int)TUCamera.TUCAM_Cap_SetTrigger(openCam.hIdxTUCam, attrTgr); } else { nValue = (int)TUCamera.TUCAM_Cap_GetTrigger(openCam.hIdxTUCam, ref attrTgr); attrTgr.nTgrMode = (int)TUCAM_CAPTURE_MODES.TUCCM_SEQUENCE; attrTgr.nFrames = 1; // TUCCM_SEQUENCE must set 1 frame nValue = (int)TUCamera.TUCAM_Cap_SetTrigger(openCam.hIdxTUCam, attrTgr); } TUCamera.TUCAM_Buf_Alloc(openCam.hIdxTUCam, ref m_drawframe); // Alloc buffer after set resolution or set ROI attribute TUCamera.TUCAM_Cap_Start(openCam.hIdxTUCam, (uint)attrTgr.nTgrMode); // Start capture m_dwFrmCnt = 0; // reset frame count //m_dwSTm = TUCamera.GetTickCount(); // reset start tick count m_hThdWaitForFrame = TUCamera.CreateEvent(HANDLE.Zero, false, true, string.Empty); //WaitForFrameThread.Start(); } //EnableControl(m_bWaitting); //EnableTriggerControl(!m_bWaitting); }