📄 orchid.h
字号:
/* -------------------------------------------------------------------------- */
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_SetConnectorList(HLVXTASK hLvxTask, const char* pszList);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_GetConnectorList(HLVXTASK hLvxTask, char* pszList, int iMaxLen);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_ClearConnectorList(HLVXTASK hLvxTask);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_AddConnectorToList(HLVXTASK hLvxTask, const char* pszConnectorName, const char* pszGrabberName, int iGrabberOrder);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_SetShutter(HLVXTASK hLvxTask, const char* pszName);
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_GetShutter(HLVXTASK hLvxTask, char* pszName, int iMaxLen);
/* -------------------------------------------------------------------------- */
/** Sets the asynchronous reset mode.
* If the LvxRtAr module is used, the module must have the AR mode set.
* The AR mode is a number from 0 to 7, corresponding the AR Mode in the Camera
* Editor. Most cameras provide 2 modes: Edge Preselect and Pulse Width.\n
* By default the mode is set to 0. \n
* The modes are also listed for each selected camera in the dialog box
* displayed by lvx_DisplayInitialSettingsDialog() method (when the module is
* LvxRtAr)\n
* @note This value is used for the module initialization (using the
* lvx_Initialize() method). Changing the property value after the module
* is initialized returns the module to the uninitialized status.
* @note Some cameras need additionally to be set to an appropriate mode
* by using additional means, for example by setting its DIP switches
* or by sending them a set of commands over the serial link interface.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask Handle to LvxRtAr module, created by lvx_OpenTask().
* @param iAsyncResetMode Number of the AR mode, in range 0-7.
* @par See also .NET version:
* LeutronVision::Orchid::LvxRtAr::AsyncResetMode
*/
DLLENTRY void WINAPI lvx_SetAsyncResetMode(HLVXTASK hLvxTask, int iAsyncResetMode);
/* -------------------------------------------------------------------------- */
/** Returns the asynchronous reset mode.
* If the LvxRtAr module is used, the module must have the AR mode set.
* The AR mode is a number from 0 to 7, corresponding the AR Mode in the Camera
* Editor. Most cameras provide 2 modes: Edge Preselect and Pulse Width.\n
* By default the mode is set to 0. \n
* The modes are also listed for each selected camera in the dialog box
* displayed by lvx_DisplayInitialSettingsDialog() method (when the module is
* LvxRtAr)\n
* @note This value is used for the module initialization (using the
* lvx_Initialize() method). Changing the property value after the module
* is initialized returns the module to the uninitialized status.
* @note Some cameras need additionally to be set to an appropriate mode
* by using additional means, for example by setting its DIP switches
* or by sending them a set of commands over the serial link interface.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask Handle to LvxRtAr module, created by lvx_OpenTask().
* @return The asynchronous reset mode number, in range 0-7.
* @par See also .NET version:
* LeutronVision::Orchid::LvxRtAr::AsyncResetMode
*/
DLLENTRY int WINAPI lvx_GetAsyncResetMode(HLVXTASK hLvxTask);
/* -------------------------------------------------------------------------- */
/* ---obsolete--- */
DLLENTRY void WINAPI lvx_SetBoardsExtSync(HLVXTASK hLvxTask, BOOL bSet);
/* ---obsolete--- */
DLLENTRY BOOL WINAPI lvx_GetBoardsExtSync(HLVXTASK hLvxTask);
/* -------------------------------------------------------------------------- */
/** Sets the number of frames in the sequence.
*
* The word "Subsequences" has historical reasons, from the analog grabbers
* where multiple cameras could be involved in the acquisition to a sequence.
* On all digital grabbers, as well as GigE and USB cameras and PicPort Elite,
* only single camera can be used in one module and thus the number of subsequences is
* equal to the number of frames. \n
* By setting the subsequences you specify the number of frames in the sequence.
*
* @note This property value is used for the module initialization (using the
* lvx_Initialize() method). Changing the property value after the module
* is initialized returns the module to the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @param iSubsequences Number of frames in the sequence.
* @par See also .NET version:
* LeutronVision::Orchid::LvxRtAr::Subsequences
*/
DLLENTRY void WINAPI lvx_SetSubsequences(HLVXTASK hLvxTask, int iSubsequences);
/* -------------------------------------------------------------------------- */
/** Returns the number of frames in the sequence.
*
* The word "Subsequences" has historical reasons, from the analog grabbers
* where multiple cameras could be involved in the acquisition to a sequence.
* On all digital grabbers, as well as GigE and USB cameras and PicPort Elite,
* only single camera can be used in one module and thus the number of subsequences is
* equal to the number of frames. \n
* By setting the subsequences you specify the number of frames in the sequence.
*
* @note This property value is used for the module initialization (using the
* lvx_Initialize() method). Changing the property value after the module
* is initialized returns the module to the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @return The number of frames in the sequence.
* @par See also .NET version:
* LeutronVision::Orchid::LvxRtAr::Subsequences
*/
DLLENTRY int WINAPI lvx_GetSubsequences(HLVXTASK hLvxTask);
/* -------------------------------------------------------------------------- */
/** Sets the acquisition checkpoints.
*
* Checkpoints are positions, where the acqusition module checks
* the conditions for the next acquisition step. For example if the lvx_GrabContinue()
* was called, the internal flag for continuing is set and so the program continues
* grabbing till the next checkpoint.\n
* The grab notification (see the lvx_SetNotifyCallBack() method) is made
* the checkpoint is reached.\n
* The checkpoint type can be selected from the 2 types:
* - Checkpoint_EndOfFrame
* - Checkpoint_EndOfSequence (this type may not be available on some devices)
*
* @note This property value is used for the module initialization (using the lvx_Initialize()
* method). Changing the property value after the module is initialized returns the module to
* the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @param iCheckpoints Value defining the checkpoint type - use the above mentioned predefined constants.
* @par See also .NET version:
* LeutronVision::Orchid::LvxRtAr::Checkpoints
*/
DLLENTRY void WINAPI lvx_SetCheckpoints(HLVXTASK hLvxTask, int iCheckpoints);
/* -------------------------------------------------------------------------- */
/** Returns the acquisition checkpoints type.
*
* Checkpoints are positions, where the acqusition module checks
* the conditions for the next acquisition step. For example if the lvx_GrabContinue()
* was called, the internal flag for continuing is set and so the program continues
* grabbing till the next checkpoint.\n
* The grab notification (see the lvx_SetNotifyCallBack() method) is made
* the checkpoint is reached.\n
* The checkpoint type can be selected from the 2 types:
* - Checkpoint_EndOfFrame
* - Checkpoint_EndOfSequence (this type may not be available on some devices)
*
* @note This property value is used for the module initialization (using the lvx_Initialize()
* method). Changing the property value after the module is initialized returns the module to
* the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @return The acquisition checkpoints type.
* @par See also .NET version:
* LeutronVision::Orchid::LvxRtAr::Checkpoints
*/
DLLENTRY int WINAPI lvx_GetCheckpoints(HLVXTASK hLvxTask);
/* -------------------------------------------------------------------------- */
/** Sets the flow mode.
* The flow mode determines, if the acquisition stops at each checkpoint or not.
* The following values (predefined constants) can be used:
* - lvx_Flow_ContinueOnRequest
* - lvx_Flow_PauseOnRequest
*
* The \b ContinueOnRequest is default flow mode. In this mode the module the acquisition stops on the
* checkpoint, if the internal continue flag is not set by previous lvx_GrabContinue() method call
* or external trigger (see also lvx_ExternalTrigger() ).\n
* In the \b PauseOnRequest mode the acquisition does not stop on the checkpoint, until the internal
* pause flag is set by the lvx_GrabPause() method call. In other words, the acquisition is still
* running in a loop, until it is explicitly paused. The paused acquisition can be then run again by
* calling the lvx_GrabContinue() method.\n
* @note This property value is used for the module initialization (using the lvx_Initialize()
* method). Changing the property value after the module is initialized returns the module to
* the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @param iFlowMode One of the predefined constant values listed above.
* @par See also .NET version:
* LeutronVision::Orchid::LvxRtAr::FlowMode
*/
DLLENTRY void WINAPI lvx_SetFlowMode(HLVXTASK hLvxTask, int iFlowMode);
/* -------------------------------------------------------------------------- */
/** Returns the flow mode.
* The flow mode determines, if the acquisition stops at each checkpoint or not.
* The following values (predefined constants) can be used:
* - lvx_Flow_ContinueOnRequest
* - lvx_Flow_PauseOnRequest
*
* The \b ContinueOnRequest is default flow mode. In this mode the module the acquisition stops on the
* checkpoint, if the internal continue flag is not set by previous lvx_GrabContinue() method call
* or external trigger (see also lvx_ExternalTrigger() ).\n
* In the \b PauseOnRequest mode the acquisition does not stop on the checkpoint, until the internal
* pause flag is set by the lvx_GrabPause() method call. In other words, the acquisition is still
* running in a loop, until it is explicitly paused. The paused acquisition can be then run again by
* calling the lvx_GrabContinue() method.\n
* @note This property value is used for the module initialization (using the lvx_Initialize()
* method). Changing the property value after the module is initialized returns the module to
* the uninitialized status.
* @ingroup OrchidFunctionsInitializing
* @param hLvxTask Handle to LvxRt or LvxRtAr module, created by lvx_OpenTask().
* @return The flow mode.
* @par See also .NET version:
* LeutronVision::Orchid::LvxRtAr::FlowMode
*/
DLLENTRY int WINAPI lvx_GetFlowMode(HLVXTASK hLvxTask);
/* -------------------------------------------------------------------------- */
/** Enables double-buffering for a camera in a free-run mode.
*
* The acquisition is controlled by setting an internal continue flag on each checkpoint. When the
* frame is acquired, the continue flag on
* the checkpoint is evaluated to decide, whether to continue immediately with the acquisition of
* the next frame. This happens in the short time between 2 images. If the flag is not set, then
* the next frame is lost, because setting the continue flag by the lvx_GrabContinue() \b after
* this evaluation means the continue flag is set already for the next checkpoint.\n
* Imagine you want to acquire one frame while another one is inspected; the inspection is
* fast enough to be done during the subsequence acquisition and you do not want to loose any frame.
* For such type of acquisition the internal continue flag on the checkpoint must be set \b before the
* checkpoint is evaluated, i.e. before the acquisition of the current frame is finished.\n
* To start such acquisition, you would have to:
* -# start acquisition of the first frame, wait until the acquisition actually starts and
* then set the continue flag for the second frame.
* -# Wait for the notification about the first frame completion, after you receive it, you
* can start processing it, and concurrently with it the second frame is acquired, as the
* continue flag for it was already set.
* -# If you finish the processing of the first frame before the second frame is
* completed, you can set the continue flag for the third frame and go to step 2). However,
* if you finish the processing too late, i.e. after also the second frame is completed,
* the acquisition is already stopped and some frames lost. To initiate double buffering, you
* would have to go again to step 1).
*
* The AsynchronousGrab mode simplifies this kind of acquisition; when the lvx_SetAsynchronousGrab()
* property is set to \b TRUE, then each lvx_GrabContinue() command inspects the current status of
* acquisition; if the acquisition is stopped, it initiates grabbing of 2 frames (as in the
* step 1 above); if it is not stopped, it behaves normally, i.e. initiates grabbing of the next
* frame (like in the step 3 above). So with the AsynchronousGrab you can implement acquisition with
* double buffering simply by calling lvx_GrabContinue() to start the acquisition, and then calling
* lvx_GrabContinue() after each frame is processed.\n
* @note When this property is set to TRUE, the following properties must fulfill these conditions:
* - lvx_SetSubsequences() must be set to a value greater than 1 (at least 2, better 3).
* - lvx_SetFlowMode() must be set to lvx_Flow_ContinueOnRequest.
* - lvx_SetCheckpoints() must be set to lvx_Checkpoint_EndOfFrame.
* - lvx_SetExternalTrigger() must be set to lvx_ExtEv_Ignore. If the
* ExternalTrigger is set to another value in the run-time, the AsynchronousGrab mode is
* disabled until the ExternalTrigger is set to lvx_ExtEv_Ignore again. The double buffering
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -