名称
set_framegrabber_callback - 为图像采集设备注册一个回调函数。
用法
set_framegrabber_callback( : : AcqHandle, CallbackType, CallbackFunction, UserContext : )
描述
算子set_framegrabber_callback为AcqHandle指定的图像采集设备注册一个回调函数。 参数CallbackFunction包含指向要注册的函数的指针,而CallbackType则指定回调应该连接的基础API的哪个函数。
CallbackType的建议值为:
'exception':
图像采集引发了一个错误。
'exposure_end':
下一张照片的曝光已经完成。
'exposure_start':
下一张照片的曝光已经开始。
'transfer_end':
一个新的图像准备好由grab_image_async获取。
根据底层API的功能,CallbackType可能有其他值。 通过调用带有参数'available_callback_types'的get_framegrabber_param,可以查询特定图像采集设备实际支持的所有回调类型。 有关更多详细信息,请参阅特定图像采集接口的文档。
一旦回调被注册,每当发生基础事件(例如,曝光已经完成的通知)时,指定的回调函数CallbackFunction将被调用。 如果CallbackFunction设置为NULL,则相应的回调将被取消注册。
回调函数的用法如下:
Herror HAcqCallback(void * AcqHandle,void * Context,void * UserContext)
在Windows 32位系统上,使用__stdcall命名约定:
Herror (__stdcall HAcqCallback)(void *AcqHandle, void *Context, void *UserContext)
回调函数的第一个参数包含传递给AcqHandle的图像采集设备的句柄,第二个参数提供一个指向特定的接口的上下文数据的指针,第三个参数是UserContext中指定的用户特定的指针。
注意
对于多线程应用程序,所有图像采集算子(如open_framegrabber中列出的)都是自己的组,其中info_framegrabber,open_framegrabber,close_framegrabber和close_all_framegrabbers是独占执行的。
set_framegrabber_callback与该组内部和外部的所有非独占算子并行运行。
并行
● 多线程类型:可重入(与非独占算子并行运行)。
● 多线程范围:全局(可以从任何线程调用)。
● 不并行化处理。
该算子修改以下输入参数的状态:
AcqHandle
如果没有外部同步,此参数的值可能不会在多个线程之间共享。
参数
AcqHandle (input_control, state is modified) framegrabber → (integer)
要使用的采集设备的句柄。
CallbackType (input_control) string → (string)
回调类型
Default value: 'transfer_end'
Suggested values: 'exception', 'exposure_end', 'exposure_start', 'transfer_end'
CallbackFunction (input_control) pointer → (integer)
要设置的回调函数的指针。
UserContext (input_control) pointer → (integer)
用户特定上下文数据的指针。
结果
如果图像采集设备打开并且指定的回调已成功注册,则算子set_framegrabber_callback返回值2(H_MSG_TRUE)。 否则会引发异常。
Possible Predecessors
open_framegrabber, set_framegrabber_param
Possible Successors
grab_image, grab_data, grab_image_start, grab_image_async, grab_data_async, get_framegrabber_param
See also
open_framegrabber, get_framegrabber_callback
模块
Foundation