| 接口: | USB3 Vision |
| 修订: | 20.11.19 |
| 日期: | 2023-04-05 |
请注意,自 1.1 版起,USB3 Vision 规范支持具有多个图像流的设备。HALCON USB3Vision 接口目前只支持单一图像流,这也是绝大多数设备所提供的。在这种情况下,打开设备的格式将通过流条目进行扩展。当前的格式将打开第一个可用的流。
同样,将来设备字符串格式可能会扩展为一个条目,指定设备所连接的 "interface"(即计算机的 USB 3.0 总线)。在这种情况下,目前的格式仍然有效,但会搜索所有接口,而不仅仅是指定的接口。
RemoteFile=%PATH_TO_GENICAM_FILE_OF_THE_DEVICE% SystemFile=%PATH_TO_GENICAM_FILE_OF_THE_SYSTEM_MODULE% InterfaceFile=%PATH_TO_GENICAM_FILE_OF_THE_INTERFACE_MODULE% DeviceFile=%PATH_TO_GENICAM_FILE_OF_THE_LOCAL_DEVICE_MODULE% StreamFile=%PATH_TO_GENICAM_FILE_OF_THE_STREAM_MODULE%可重复使用相同的 ini 文件格式,强制 HALCON 采集接口为其中一个或多个实体加载替代 XML 文件。这在更新或故障排除等方面非常有用。ini 文件中列出的文件将用于给定实体,而不是原始文件。对于 ini 文件中排除的实体,将按常规方式搜索和加载 GenICam 描述文件。要应用 ini 文件,请在 "CameraType" 参数中将其完整路径传递给 open_framegrabber。
RemotePersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_DEVICE% SystemPersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_SYSTEM_MODULE% InterfacePersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_INTERFACE_MODULE% DevicePersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_LOCAL_DEVICE_MODULE% StreamPersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_STREAM_MODULE%如果特定设备不支持持久功能(或根本不支持),可使用 GenICam 的 UserSetSave/UserSetLoad 功能(如果设备支持)。这些功能允许在设备的非易失性存储器中存储/加载设备设置。
请注意,最初引入此最大限制参数是由于底层 libusb 库(Windows 下)的限制,该库无法处理超过 64 个并发 USB 传输,这反过来又会给多相机设置带来问题。现在这种限制已不复存在,但为了避免向后兼容问题,我们暂时保留了相同的默认设置(已知在大多数情况下都能可靠运行)。
另请参阅控制事件引擎行为的相关功能( 高级事件引擎控制 )。
支持从相机(另见 PFNC)到接口(另见本文档中的 "color_space" 参数)的以下转换:
|
||||||||||||||
|
G = (G1 + G2) / 2。
R = Y' + 1.4020 * (Cr- M)
G = Y' - 0.34414 * (Cb- M) -0.71414 * (Cr- M)
B = Y' + 1.7720 * (Cb - M)
Y' = 0.299 * R + 0.587 * G + 0.114 * B
Cb = -0.16874 * R - 0.33126 * G + 0.5 * B + M
Cr = 0.5 * R - 0.41869 * G - 0.08131 * B + M
Y' = 0.299 * R + 0.587 * G + 0.114 * B
M = 128 表示 8 位原始数据,和 M = 32768 表示 16 位原始数据。| 参数 | 值列表 | 类型 | 方式 | 描述 |
|---|---|---|---|---|
| 'bits_per_channel' | [-1, 8, 10, 12, 14, 16] | 整数 | 预定义 | 每个通道的比特值。 |
| 'camera_type' | ['CAMFILE:', 'ini;xml', '<path>', 'default'] | 字符串 | 预定义 | 连接配置文件的语法和默认值。 |
| 'color_space' | ['default', 'gray', 'raw', 'rgb', 'yuv'] | 字符串 | 预定义 | 值。 |
| 'defaults' | [0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1.0, 'false', 'default', '0', 0, 0] | 混合型 | 预定义 | open_framegrabber的默认值。 |
| 'device' | [' | device:<device id> | unique_name:<unique name> | user_name:<user-defined name> | interface:<interface id> | producer:Usan | device_sn:<serial number>'] | 字符串 | 动态 | 系统中发现的 USB3 Vision 设备列表,包含设备 ID、唯一名称、用户定义名称、连接接口和图像采集接口标识符等信息。参见 "设备打开" 一节 的完整描述。仅列出当前可打开的设备。 |
| 'external_trigger' | [] | 忽略。 | ||
| 'field' | [] | 未使用。 | ||
| 'general' | [] | 字符串 | 预定义 | 有关 HALCON USB3Vision 接口的信息。 |
| 'generic' | ['', 'num_buffers=<num>' , 'direct_connection=<mode>' , 'install_driver=<vendor_id/product_id>' , 'add_permissions=<bus_number/device_address>' , 'streaming_mode=0' , 'device_event_handling=0' ] | 字符串 | 预定义 | 通用参数的值列表。 |
| 'horizontal_resolution' | [0, 1] | 整数 | 预定义 | 水平分辨率的值列表。 |
| 'image_height' | [] | 不支持查询。 | ||
| 'image_width' | [] | 不支持查询。 | ||
| 'info_boards' | [' | device:<device_id> | unique_name:<unique_name> | user_name:<user_defined_name> | interface:<interface_id> | producer:Usan | vendor:<device_vendor> | model:<device_model> | device_sn:<device_serial_number> | tl_type:<tl_type> | status:<device_status> | suggestion:<generic_param>'] | 字符串 | 动态 | 系统中发现的 USB3 Vision 设备列表,包含字符串形式的附加信息。某些值只有在可用时才会显示。对于配置错误的设备(如未使用驱动程序或使用错误驱动程序的设备),建议使用相应的通用参数来解决问题。
|
| 'parameters' | ['<parameters>'] | 字符串 | 预定义 | HALCON 接口的预定义参数。 |
| 'parameters_readonly' | ['<parameters>'] | 字符串 | 预定义 | HALCON 接口的预定义只读参数。 |
| 'parameters_writeonly' | ['<parameters>'] | 字符串 | 预定义 | HALCON 接口的预定义只写参数。 |
| 'port' | [] | 未使用。 | ||
| 'revision' | '<revision>' | 字符串 | 预定义 | USB3 Vision 接口的版本号。 |
| 'start_column' | [] | 不支持查询。 | ||
| 'start_row' | [] | 不支持查询。 | ||
| 'vertical_resolution' | [0, 1] | 整数 | 预定义 | 垂直分辨率的值列表。 |
| 参数 | 值 | 默认值 | 类型 | 描述 |
|---|---|---|---|---|
| Name | 'USB3Vision' | 字符串 | HALCON 接口的名称。 | |
| HorizontalResolution | 0, 1, resolution | 1 | 整数 | 设置所需的相机图像水平分辨率:
|
| VerticalResolution | 0, 1, resolution | 1 | 整数 | 设置所需的相机图像垂直分辨率:
|
| ImageWidth | --- | 0 | 忽略。 | |
| ImageHeight | --- | 0 | 忽略。 | |
| StartRow | --- | 0 | 忽略。通过设备参数配置图像大小。 | |
| StartColumn | --- | 0 | 忽略。通过设备参数配置图像大小。 | |
| Field | --- | 忽略。 | ||
| BitsPerChannel | -1, 8, 10, 12, 14, 16 | -1 | 整数 | 生成的 HALCON 图像每个通道的比特数。如果为-1,则使用各采集缓冲区的比特深度。如果指定的值大于 8,抓取的图像将以 uint2 图像的形式传输。 |
| ColorSpace | 'default', 'gray', 'raw', 'rgb', 'yuv' | 'default' | 字符串 | 指定所需的,从而指定生成的 HALCON 图像的图像通道数。如果单色像素格式为 "默认",则设为 "灰度",否则设为 "rgb"(未知像素格式设为 "原始")。 |
| Generic | '', ['num_buffers=<num>' , 'direct_connection=<mode>' , 'install_driver=<vendor_id/product_id>' , 'add_permissions=<bus_number/device_address>' , 'streaming_mode=0' , 'device_event_handling=0' ], -1 | -1 | 混合型 | 通过通用参数,可以在相机初始化之前设置一些重要的值。请注意,包括值在内的参数名称必须是字符串,例如 "num_buffers=5" 将缓冲区的数量设置为 5。 可使用以下参数:
|
| ExternalTrigger | --- | 忽略。要配置触发模式,请使用带有相机通用(SFNC)触发参数的 set_framegrabber_param。 | ||
| CameraType | 'default', <ini/xml filename> | 'default' | 字符串 | 配置文件的完整路径,其中指定了要为设备和 USB3 Vision 生产者加载的其他 GenICam 描述文件,参见 有关设备打开一节 的详细描述。 |
| Device | ' | device:<device id> | unique_name:<unique name> | user_name:<user-defined name> | interface:<interface id> | producer:Usan | device_sn:<serial number>', '<device id>' | 字符串 | 要打开相机,可以使用 info_framegrabber(...'device'...) 或 info_framegrabber(...'info_boards'...) 中显示的设备名称。某些字符串条目可能会被跳过或设置为 "默认" 。要打开特定相机,必须设置设备、设备唯一名称或序列号。作为快捷方式,可以只指定设备 ID 或用户自定义名称,或者使用字符串 "默认"。参见 "打开设备 "一节 的完整描述。 | |
| Port | --- | 未使用。 | ||
| LineIn | --- | 忽略。 |
| 参数 | 值 | 默认值 | 类型 | 描述 |
|---|---|---|---|---|
| '[Consumer]exposure' | 实数 | 指定曝光时间。曝光时间通常以微秒为单位。不过,相机可能会偏离这一标准。有关更多详细信息,请参阅您相机的说明文档。如果 [Consumer]exposure_auto 未设置为 "关",则 [Consumer]exposure 访问为只读或不可用。此外,此 EasyParam 还取决于相机参数 ExposureMode。如果 [Consumer]exposure 不可用,您可能需要手动将 ExposureMode 更改为 "Timed" 。 | ||
| '[Consumer]exposure_auto' | 'Off', 'Continuous', 'Once' | 字符串 | 指定曝光时间是由用户手动设置还是由相机自动设置。
|
|
| '[Consumer]gain' | 实数 | 允许通过应用放大系数来增加图像亮度。有关更多详细信息,请查阅您的相机文档。如果 [Consumer]gain_auto 未设置为 "关",则 [Consumer]gain 访问权限为只读或不可用。 | ||
| '[Consumer]gain_auto' | 'Off', 'Continuous', 'Once' | 字符串 | 指定增益是由用户手动设置还是由相机自动设置。
|
|
| '[Consumer]trigger' | 'Off', 'Software', 'Line<x>' | 字符串 | 指定触发图像采集的模式。
|
|
| '[Consumer]trigger_activation' | 'RisingEdge', 'FallingEdge', 'AnyEdge', 'LevelHigh', 'LevelLow' | 字符串 | 指定触发器的激活模式。此 EasyParam 在使用硬件触发器(即 [Consumer]trigger 为 "Line<x>")且设备支持的情况下可用。
|
|
| '[Consumer]trigger_delay' | 实数 | 指定接收到触发器后激活图像采集前的延迟时间。延迟单位通常为微秒。不过,相机可能会偏离这一标准。详细信息请查阅相机的文档。 | ||
| '[Consumer]trigger_software' | 整数 | 产生内部信号。[Consumer]trigger 必须设置为 "软件",否则 EasyParam 无法使用。 | ||
| '[Device]DeviceEventsThreadApplyPriority' | --- | 整数 | 将通过 "[Device]DeviceEventsThreadPriority" 和 "[Device]DeviceEventsThreadSchedulingPolicy" 参数配置的线程优先级和调度策略(如果适用于给定的操作系统)应用到事件处理线程。如果线程正在运行,则直接应用这些值。如果线程暂时未运行,则会存储这些值,并在线程再次启动时立即应用。应用程序有责任确保调用进程有足够的权限。 如果设备不支持设备事件,或使用 "device_event_handling=0" 通用参数禁用了事件处理功能,则无法使用该功能。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| '[Device]DeviceEventsThreadPriority' | <thread_priority> | 整数 | 用于内部事件处理线程的操作系统特定线程优先级值。实际值直接是操作系统的优先级标识符,例如 Windows 下的 THREAD_PRIORITY_HIGHEST 或 Linux 下的实时优先级值。 只有在执行 "[Device]DeviceEventsThreadApplyPriority" 命令参数后,才会应用实际优先级,如果适用于 给定系统,还可能连同 "[Device]DeviceEventsThreadSchedulingPolicy" 值一起应用。 应用程序有责任确保调用进程有足够权限应用优先级更改,并确保写入参数的值是有效的优先级标识符。应用 "[Device]DeviceEventsThreadApplyPriority" 后,应用程序可以读回优先级值,以验证是否正确应用。 请注意,在打开设备时,USB3 Vision 生产者会尝试将线程优先级提升到合适的值。 如果设备不支持设备事件,或使用 "device_event_handling=0" 通用参数禁用了事件处理功能,则无法使用该功能。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| '[Device]DeviceEventsThreadSchedulingPolicy' | <scheduling_policy> | 整数 | 用于内部事件处理线程的操作系统特定调度策略值。实际值直接是操作系统的优先级标识符,例如 Linux 下的 SCHED_FIFO。请注意,Windows 下不提供此功能。 只有在执行 "[Device]DeviceEventsThreadApplyPriority" 命令参数和 "[Device]DeviceEventsThreadPriority" 值后,才会应用实际调度策略。 应用程序有责任确保调用进程有足够的权限应用调度策略,并确保写入参数的值是有效的调度策略标识符。应用 "[Device]DeviceEventsThreadApplyPriority" 后,应用程序可以读回调度策略值,以验证是否正确应用。 如果设备不支持设备事件,或使用 "device_event_handling=0" 通用参数禁用了事件处理,则无法使用该功能。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| '[Device]DeviceScheduledEventsMaximum' | <max_scheduled_events> | 2 | 整数 | 事件引擎为收集设备事件而尝试提前安排到 USB3 子系统的最大传输次数,与其他参数无关。只有当事件处理线程未激活时才可写入。目前,采集接口会保持线程永久运行,因此该功能实际上是只读的。这种情况将来可能会改变。 如果设备不支持设备事件,或使用 "device_event_handling=0" 通用参数禁用了事件处理,则无法使用该功能。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
| '[Stream]StreamAuxiliaryBufferCount' | <num_aux_buffers> | 2 | 整数 | 流引擎为采集分配的辅助缓冲区数量。缓冲区的大小取决于设备报告的有效载荷大小。如果没有空闲的用户缓冲区可供填充(通常是相机的采集速度快于应用程序的处理速度),则会根据需要安排辅助缓冲区进行采集。根据 "[Stream]StreamBufferHandlingMode" 参数的不同,采集到辅助缓冲区中的数据仍可传送给应用程序,要么覆盖输出队列中的旧缓冲区,要么填充同时可用的空闲用户缓冲区。 仅在无采集活动时可写入。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
| '[Stream]StreamBufferHandlingMode' | 'OldestFirst', 'OldestFirstOverwrite', 'NewestOnly' | 'OldestFirst' | 字符串 | 选择流引擎用于处理新采集数据的模式,尤其是当相机运行速度快于应用程序处理速度时。该参数只有在没有采集活动时才可写入。支持的值有
|
| '[Stream]StreamScheduledBuffersMaximum' | <max_scheduled_buffers> | 4 | 整数 | 流引擎尝试提前安排 USB3 子系统采集的最大缓冲区数量,与其他参数无关。请注意,每个缓冲区通常需要 3-4 次 USB 传输才能填满。 仅在无采集活动时可写入。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
| '[Stream]StreamScheduledBuffersTarget' | <tgt_scheduled_buffers> | 2 | 整数 | 在任何给定时刻,流引擎都将尝试提前调度 USB3 子系统采集的缓冲区的理想最佳数量。如果已调度的缓冲区数量低于此值,流引擎将开始调度可用的辅助缓冲区。只要该参数中指定的水平达到饱和,就不会使用辅助缓冲区。 仅在无采集活动时可写。 请注意,计划缓冲区的实际数量绝对不能超过 "[Stream]StreamScheduledBuffersMaximum" 。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
| '[Stream]StreamThreadApplyPriority' | --- | 整数 | 将通过 "[Stream]StreamThreadPriority" 和 "[Stream]StreamThreadSchedulingPolicy" 参数配置的线程优先级和调度策略(如果适用于给定的操作系统)应用于流处理线程。如果线程正在运行(采集启动),则直接应用这些值。如果线程暂时未运行,则会存储这些值,并在线程再次启动时立即应用。应用程序有责任确保调用进程拥有足够的权限。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| '[Stream]StreamThreadPriority' | <thread_priority> | 整数 | 用于内部流处理线程的操作系统特定线程优先级值。实际值直接是操作系统的优先级标识符,例如 Windows 下的 THREAD_PRIORITY_HIGHEST 或 Linux 下的实时优先级值。 实际优先级只有在执行 "[Stream]StreamThreadApplyPriority" 命令参数后才会应用,如果适用于给定系统,还可能与 "[Stream]StreamThreadSchedulingPolicy" 值一起应用。 应用程序有责任确保调用进程有足够权限应用优先级更改,并确保写入参数的值是有效的优先级标识符。应用 "[Stream]StreamThreadApplyPriority" 后,应用程序可以读回优先级值,以验证是否正确应用。 请注意,在打开设备时,USB3 Vision 生产者会尝试将线程优先级提升至合适的值。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| '[Stream]StreamThreadSchedulingPolicy' | <scheduling_policy> | 整数 | 用于内部流处理线程的操作系统特定调度策略值。实际值直接是操作系统的优先级标识符,例如 Linux 下的 SCHED_FIFO。请注意,Windows 下不提供此功能。 只有在执行 "[Stream]StreamThreadApplyPriority" 命令参数和 "[Stream]StreamThreadPriority" 值后,才会应用实际调度策略。 应用程序有责任确保调用进程有足够的权限应用调度策略,并确保写入参数的值是有效的调度策略标识符。应用 "[Stream]StreamThreadApplyPriority" 后,应用程序可以读回调度策略值,以验证是否正确应用。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| 'add_objectmodel3d_overlay_attrib' | 'disable', 'enable' | 'disable' | 字符串 | 控制采集接口是否应尝试将强度/颜色叠加附加到生成的三维对象模型上。仅适用于从给定抓取算子输出三维对象体模型的情况。开启后,采集接口将尝试在采集的数据中找到合适的信息(如果设备提供)。如果有,则会以扩展属性的形式为输出模型中的每个点添加叠加信息。请注意,在某些高级使用案例中,设备可能会输出多个潜在的叠加图像,因此采集接口会尝试找到最合适的图像。 首先,它会尝试识别采集数据中标记为 "强度" 图像的数据。如果发现并提供的是单色二维图像,则将其附加 为 "&intensity_gray" 扩展属性。如果找到并提供的是 RGB 图像,则会作为 "&intensity_red"、"&intensity_green" 和 "&intensity_blue" 三个扩展属性附加。 如果无法识别 "强度" 数据,则会尝试查找标记为 "反射率" 的数据。如果找到并提供的是单色二维图像,则将其附加为 "&reflectance_gray" 扩展属性。如果找到并提供的是 RGB 图像,则会作为 "&reflectance_red"、"&reflectance_green" 和 "&reflectance_blue" 三个扩展属性添加。 最后,如果 "强度" 和 "反射率" 数据都无法识别(要么不存在,要么设备没有正确标记),则会在获取的数据中挑选第一个可以映射到三维坐标的二维图像。如果找到并提供的是单色二维图像,则将其添加为"&overlay_gray" 扩展属性。如果找到并提供的是 RGB 图像,它将作为 "&overlay_red"、"&overlay_green" 和 "&overlay_blue" 三个扩展属性附加。 如果没有找到合适的二维图像,则不会添加叠加。例如,可以使用带有 "extended_attribute_names" 参数的 get_object_model_3d_params 运算符查询实际添加的扩展属性。覆盖层也可用于可视化目的。 |
| 'bits_per_channel' | -1, 8, 10, 12, 14, 16 | 整数 | 生成的 HALCON 图像每个通道的比特数。如果为-1,则使用各采集缓冲区的比特深度。如果指定的值大于 8,抓取的图像将以 uint2 图像的形式传输。 | |
| 'buffer_reallocation_mode' | 'only_increase_size', 'follow_payloadsize' | 'only_increase_size' | 字符串 | 定义为新采集重新分配缓冲区时所遵循的策略。如果使用 "only_increase_size",则只有在有效载荷大小增加时才会重新分配缓冲区。如果使用 "follow_payloadsize",则每次有效载荷大小发生变化时都会重新分配缓冲区。 |
| 'clear_buffer' | 'disable', 'enable' | 'disable' | 字符串 | 如果启用,则在重新排队前会清除每个缓冲区的内容(所有字节都设置为 0xF0,而不考虑预期的像素格式),这样就可以看到图像的哪些部分丢失了,以防某些图像数据包传输失败。当然,这个参数会增加运行时的开销,因为每次缓冲区排队时都要写入 0xF0 数据。它主要用于结合传输层进行调试,因为传输层不能保证传输完整的图像。请注意,该参数不会修改缓冲区队列,只会将缓冲区的内容设置为定义的状态。 |
| 'color_space' | 'default', 'gray', 'raw', 'rgb', 'yuv' | 字符串 | 指定所需的,从而指定生成的 HALCON 图像的图像通道数。如果单色像素格式为 "default",则设为 "gray",否则设为 "rgb"(未知像素格式设为 "raw")。 | |
| 'confidence_mode' | 'off', 'object_model_3d' | 'off' | 字符串 | 控制采集接口是否使用(以及如何使用)像素置信度信息。仅适用于置信度信息与实际像素数据一起交付(按像素)的设备和用例。 区分有效像素和无效像素的阈值由 "置信度阈值" 参数控制。 请注意,在某些使用情况下,可能有其他标准来标记给定像素无效,例如,如果设备对三维坐标使用 "无效像素值"。"置信度模式" 参数不包括这些情况,三维对象模型始终会剔除这些无效像素。可能的值有:
|
| 'confidence_threshold' | [0.0, 1.0] | 0.5 | 浮点数 | 区分有效像素和无效像素的阈值。仅适用于将置信度信息(按像素)与实际像素数据一起传送的设备和用例。使用 "confidence_mode" 参数可决定如何应用置信度阈值(应用于哪些输出)。 阈值被解释为 0.0 和 1.0 之间的(浮点数)比率。采集接口会将此比率重新映射到设备提供的实际置信度范围,并以此来决定哪些像素有效,哪些无效。置信度低于指定阈值的像素将被视为无效。 |
| 'coordinate_transform_mode' | 'none', 'cartesian', 'reference' | 'reference' | 字符串 | 控制采集接口在根据获取的三维坐标建立三维对象模型时,应尝试执行哪些坐标变换算子。请注意,决定执行哪种变换以及使用哪些参数完全取决于设备提供的三维配置信息和获取的数据。如果这些信息不充分或坐标不准确,变换的结果可能毫无意义或无法预测。详情请参阅使用三维设备 。 可能的值有:
|
| 'create_objectmodel3d' | 'disable', 'enable' | 'disable' | 字符串 | 控制采集接口在遇到采集数据中的三维坐标时是否应尝试生成 HALCON 三维对象模型。 要获取三维对象模型,应用程序必须使用 grab_data/grab_data_async 算子,它们可以通过控制数据输出返回生成模型的句柄。而 grab_image/grab_image_async 算子不能返回三维对象模型。 重要提示:默认情况下禁用该参数。启用后,一旦不再需要给定的模型,应用程序就有责任使用 clear_object_model_3d 算子释放生成的对象模型和相关资源。为此,应用程序应跟踪每次 grab_data/grab_data_async 调用的控制数据输出中哪些带有三维对象模型句柄。这可以使用 "data_contents" 参数来实现。 生成三维模型模型时,采集接口会处理采集数据中的三维坐标,并借助设备报告的实际三维配置信息构建点云。详情请参阅使用三维设备 。 |
| 'delay_after_stop' | <milliseconds> | 0 | 整数 | 设备上停止采集(AcquisitionStop 命令)与 USB3 Vision 生产者之间的等待时间(毫秒)。 |
| 'do_abort_grab' | --- | 终止当前图像采集并解锁采集时可能锁定的参数。参见 采集概述 。 | ||
| 'do_fileaccess_delete' | --- | 删除设备文件 "fileaccess_remote_name" 的内容,前提是设备支持文件删除操作。 请注意,只有在给定设备支持 GenICam 文件访问功能时,所有与文件访问相关的参数才可用。 |
||
| 'do_fileaccess_download' | --- | 将设备文件 "fileaccess_remote_name" 的内容下载到 "fileaccess_file_path" 中指定的主机文件中。 请注意,只有给定设备支持 GenICam 文件访问功能时,所有与文件访问相关的参数才可用 | ||
| 'do_fileaccess_upload' | --- | 将主机文件 "fileaccess_file_path" 中的数据上传到 "fileaccess_remote_name" 中指定的设备文件。用户有责任确保源文件的大小和内容符合设备的预期。 请注意,只有当指定设备支持 GenICam 文件访问功能时,所有与文件访问相关的参数才可用。 | ||
| 'do_fwupdate_apply' | --- | 应用在 "fwupdate_update_selector" 中选择的固件更新。 请注意,所有固件更新相关参数只能在专用的 "安全模式" 下使用,参见 固件更新 。 |
||
| 'do_load_settings' | <input_file> | 字符串 | 恢复先前存储的已打开设备的设置。参数 "settings_selector" 指定是否要恢复实际(远程)设备、USB3 Vision 生产者模块之一或消费者参数(USB3 Vision 图像采集接口的内部参数)的设置。参见 "参数 - 持续设备状态" 一节的详细描述。 | |
| 'do_write_configuration' | <output_file> | 字符串 | 写入配置 (ini) 文件,并将带有设备当前配置的 GenICam 描述文件和持久性文件写入同一目录。 字符串参数必须是目标 ini 文件的文件名(包括完整路径)。该路径必须在写入之前就存在。写入的 ini 文件包含写入的描述文件和持久化文件的路径列表。 为远程设备和与当前打开的设备相关联的每个 USB3 Vision 生产者模块写入 GenICam 描述文件。为远程设备和每个 USB3 Vision 生产者模块以及 USB3 Vision 图像采集接口的内部参数写入持久文件。 完整配置可通过 open_framegrabber 算子的 "CameraType" 参数加载,详细描述参见 "设备打开" 一节 。内部参数的持久值会覆盖传递给 "open_framegrabber" 的相应参数(尤其是 "BitsPerChannel" 和 "ColorSpace" )。 可以使用 "默认" 或空字符串来代替指定输出 ini 文件的全名。在这种情况下,文件将被写入临时目录(取决于 %TEMP%、%TMP%、$TMPDIR、/tmp 或 %HALCONROOT%),配置文件的文件名为 halcon_generl_config.ini。此默认选项也适用于使用图像采集助手。 另见相关小节 选择 GenICam 功能描述文件 和 参数 - 持续设备状态 。 |
|
| 'do_write_settings' | <output_file> | 字符串 | 写入已打开设备的当前设置,以便日后恢复。参数 "settings_selector" 指定要写入的是实际(远程)设备的设置、USB3 Vision 生产者模块之一还是消费者参数(USB3 Vision 图像采集接口的内部参数)。参见 "参数 - 持续设备状态" 一节的详细描述。 | |
| 'event_data' | '<list of genicam_feature/internal_parameter>' | 字符串 | 配置 GenICam 功能和/或内部参数(自由组合),以便将其添加到 "event_message_queue" 指定的消息队列中,为在 "event_selector" 中选择的功能发送功能更改通知。 功能可以单独添加,也可以作为一个元组添加——该参数的每个 "设置" 操作都会追加到当前的事件数据列表中。要移除单个功能,请在其前面加上"~"。要清除当前添加的所有功能,请调用 set_framegrabber_param(..., 'event_data', [])。 如需进一步了解该机制的用法,请访问 事件消息队列 。 |
|
| 'event_message_queue' | 0, '<queue_handle>' | 句柄 | 选择采集接口应向其发送功能更改通知的消息队列(详见 事件消息队列 )。 相应的 功能/参数 需要事先通过 "event_selector" 选择。 设置 0 (NULL)后,先前选定的消息队列将不再收到有关给定功能/参数的通知。 |
|
| 'event_notification_helper' | 'disable', 'enable' | 'disable' | 字符串 | 控制采集接口在 set_framegrabber_callback 期间,如果回调正在(未)注册到符合 SFNC 标准的事件上,是否应尝试自动(取消)设置 "EventNotification"。请注意,只有当回调是在实际事件特征(如 "EventExposureEnd")而非事件数据特征(如 "EventExposureEndTimestamp")上注册时才会起作用。有关事件的更多信息,参见 事件数据 。 |
| 'event_selector' | '<genicam_feature/internal_parameter>' | 'grab_timeout' | 字符串 | 选择一个 GenICam 功能或内部参数,为其配置通过消息队列发送的功能更改通知。 这些通知会连同在 "event_data" 中配置的附加数据一起发送到 "event_message_queue" 中指定的消息队列。 有关该机制使用的更多信息,请参阅 事件消息队列(这是通过回调发送通知的另一种选择,即 功能更改通知 )。 |
| 'fileaccess_file_path' | '<file_path>' | 字符串 | 指定用于主机和设备之间文件交换操作的本地文件(在主机文件系统中)的完整路径、"do_fileaccess_download" 或 "do_fileaccess_upload"。 当前用户/进程必须有足够的权限访问文件。请注意,只有当指定设备支持 GenICam 文件访问功能时,所有与文件访问相关的参数才可用。 |
|
| 'fileaccess_remote_name' | '<file_name>' | 字符串 | 选择设备上需要执行 "do_fileaccess_download"、"do_fileaccess_upload" 或 "do_fileaccess_delete" 文件访问处理操作之一的文件。 文件名必须是设备执行的文件之一 - 有效文件名称集可通过 "fileaccess_remote_name_values" 查询。请注意,只有当指定设备支持 GenICam 文件访问功能时,所有与文件访问相关的参数才可用。 | |
| 'fwupdate_file_path' | '<file_name>' | 字符串 | 包含 GenICam 兼容固件更新(guf 文件)的文件路径。设置后,将验证该文件并枚举其中包含的固件更新。如果无效或找不到与当前设备匹配的更新,则会出错。如果成功,可以使用 "fwupdate_update_selector_values" 查询匹配的更新集,并使用 "fwupdate_update_selector" 选择实际要应用的更新。最后,可使用 "do_fwupdate_apply" 应用选定的更新。 请注意,所有固件更新相关参数只能在专用的 "安全模式" 下使用,参见 固件更新 。 |
|
| 'fwupdate_update_selector' | '<firmware_update_label>' | 字符串 | 选择可通过 "do_fwupdate_apply" 应用的固件更新。在 "fwupdate_file_path" 中选择一个有效的固件更新文件后,选择器就可用了。可使用 "fwupdate_update_selector_values" 查询选项(描述在该文件中找到的匹配固件更新的标签)。 请注意,所有固件更新相关参数只能在专用的 "安全模式" 下使用,参见 固件更新 。 |
|
| 'fwupdate_wait_after_reset' | '<timeout>' | 整数 | 如果在固件更新过程中需要重置设备,在设备重新发现前应用的额外超时(毫秒)。该超时将添加到固件更新文件本身指定的相应超时中。当使用原始超时无法安全地重新发现设备时,用于解决系统特定问题。 请注意,所有固件更新相关参数只能在专用的 "安全模式" 下使用,参见 固件更新 。 |
|
| 'grab_timeout' | <milliseconds> | 5000 | 整数 | 终止待处理抓取的预期超时(毫秒)。如果指定-1,则超时设置为无限。 |
| 'image_height' | --- | 0 | 不支持(只读参数)。 | |
| 'image_width' | --- | 0 | 不支持(只读参数)。 | |
| 'register_<addr>_<len>' | 整数 | 直接访问寄存器,用于读写整数。数值必须是十六进制,如 0x0938。注意只接受 4 或 8 字节长度的值。设备字节顺序不进行转换。注意: 这是一个危险的功能,用于调试和特殊情况。通常只能使用 XML 中的功能。 | ||
| 'settings_selector' | 'RemoteDevice', 'Stream', 'Device', 'System', 'Interface', 'Consumer' | 'RemoteDevice' | 字符串 | 在使用 set_framegrabber_param(..., 'do_write_settings', []) 和 set_framegrabber_param(..., 'do_load_settings', []) 时,选择将哪个组件(参数集)的可流参数持久保存到文件中或从文件中恢复。在实际(远程)设备、GenTL 生产者模块之一或消费者参数(GenICamTL 图像采集接口的内部参数)之间进行选择。并非所有 GenTL 生产者都能实现所有模块。查询 "settings_selector_values" 可获得可接受值的列表。有关该机制使用的更多信息,请参阅 参数 - 持久设备状态。 |
| 'split_param_values_into_dwords' | 'disable', 'enable' | 'disable' | 字符串 | 启用一种特殊模式,允许将整数参数视为两个 32 位整数的元组。为了与单参数模式兼容,第一个元组元素总是携带数值的低 32 位部分,第二个元素携带高 32 位部分。用户有责任正确组合这两个部分。该模式特别有助于解决 32 位 HALCON 仅具有 32 位整数参数,但必须面对 64 位宽 GenICam 功能的问题。在此模式下,get_framegrabber_param 返回的总是两个整数的元组,set_framegrabber_param 可接受单个参数或元组。请注意,该模式只影响整数参数,而且只影响基于 GenICam 的参数,而不影响 HALCON GenICamTL 图像采集接口的内部参数("buffer_timestamp"、"buffer_timestamp_ns"、"device_timestamp_frequency" 和 "buffer_frameid" 内部参数除外)。 |
| 'start_async_after_grab_async' | 'disable', 'enable' | 'enable' | 字符串 | 默认情况下,在 grab_image_async 结束时,会自动向采集设备发出一条新的异步抓取命令。如果参数 "start_async_after_grab_async" 设置为 "disable",则会省略新的抓取命令。 |
| 'start_column' | --- | 0 | 不支持(只读参数)。通过设备参数配置图像大小。 | |
| 'start_row' | --- | 0 | 不支持(只读参数)。通过设备参数配置图像大小。 | |
| 'volatile' | 'disable', 'enable' | 'disable' | 字符串 | 启用后,将开启易失性模式,直接使用图像缓冲区创建 HALCON 图像。这是避免在内存中复制原始图像的最快模式。但要注意,采集引擎可能会随时用新数据覆盖旧图像。当设备配置发生变化,必须重新分配采集缓冲区时,旧的 HALCON 图像甚至会失效(指向不再存在的内存)。另见 有关采集缓冲区处理的详细信息 。 请注意,无论当前配置如何,都可以随时开启易失性模式。不过,在运行时,只有与易失性模式兼容的采集图像才会传送给应用程序(其他图像将被丢弃)。兼容尤其是指采集图像的像素格式与为 HALCON 图像输出格式配置的 color_space 和 bits_per_channel 设置相匹配。 |
在调用 info_framegrabber(.., 'parameters', ..) 时,所有这些后置固定参数名都不会返回,而是用于通过通用图形用户界面,特别是 HDevelop 图像采集助手,方便地进行参数设置。
| 参数 | 值 | 默认值 | 类型 | 方式 | 描述 |
|---|---|---|---|---|---|
| '[Consumer]exposure' | 实数 | 预定义 | 指定曝光时间。曝光时间通常以微秒为单位。不过,相机可能会偏离这一标准。有关更多详细信息,请参阅您相机的说明文档。如果 [Consumer]exposure_auto 未设置为 "关",则 [Consumer]exposure 访问为只读或不可用。此外,此 EasyParam 还取决于相机参数 ExposureMode。如果 [Consumer]exposure 不可用,您可能需要手动将 ExposureMode 更改为 "Timed" 。 | ||
| '[Consumer]exposure_auto' | 'Off', 'Continuous', 'Once' | 字符串 | 预定义 | 指定曝光时间是由用户手动设置还是由相机自动设置。
|
|
| '[Consumer]gain' | 实数 | 预定义 | 允许通过应用放大系数来增加图像亮度。有关更多详细信息,请查阅您的相机文档。如果 [Consumer]gain_auto 未设置为 "关",则 [Consumer]gain 访问权限为只读或不可用。 | ||
| '[Consumer]gain_auto' | 'Off', 'Continuous', 'Once' | 字符串 | 预定义 | 指定增益是由用户手动设置还是由相机自动设置。
|
|
| '[Consumer]info_general' | 句柄 | 预定义 | 返回包含设备一般信息的字典句柄。字典中的每个键映射一个 GenICam 设备信息功能。如果某个键未在设备上实现,其值将设为 "ni"(not implemented,即未实现)。包含的键:
|
||
| '[Consumer]trigger' | 'Off', 'Software', 'Line<x>' | 字符串 | 预定义 | 指定触发图像采集的模式。
|
|
| '[Consumer]trigger_activation' | 'RisingEdge', 'FallingEdge', 'AnyEdge', 'LevelHigh', 'LevelLow' | 字符串 | 预定义 | 指定触发器的激活模式。此 EasyParam 在使用硬件触发器(即 [Consumer]trigger 为 "Line<x>")且设备支持的情况下可用。
|
|
| '[Consumer]trigger_delay' | 实数 | 预定义 | 指定接收到触发器后激活图像采集前的延迟时间。延迟单位通常为微秒。不过,相机可能会偏离这一标准。详细信息请查阅相机的文档。 | ||
| '[Device]DeviceEventsThreadPriority' | <thread_priority> | 整数 | 预定义 | 用于内部事件处理线程的操作系统特定线程优先级值。实际值直接是操作系统的优先级标识符,例如 Windows 下的 THREAD_PRIORITY_HIGHEST 或 Linux 下的实时优先级值。 只有在执行 "[Device]DeviceEventsThreadApplyPriority" 命令参数后,才会应用实际优先级,如果适用于 给定系统,还可能连同 "[Device]DeviceEventsThreadSchedulingPolicy" 值一起应用。 应用程序有责任确保调用进程有足够权限应用优先级更改,并确保写入参数的值是有效的优先级标识符。应用 "[Device]DeviceEventsThreadApplyPriority" 后,应用程序可以读回优先级值,以验证是否正确应用。 请注意,在打开设备时,USB3 Vision 生产者会尝试将线程优先级提升到合适的值。 如果设备不支持设备事件,或使用 "device_event_handling=0" 通用参数禁用了事件处理功能,则无法使用该功能。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| '[Device]DeviceEventsThreadSchedulingPolicy' | <scheduling_policy> | 整数 | 预定义 | 用于内部事件处理线程的操作系统特定调度策略值。实际值直接是操作系统的优先级标识符,例如 Linux 下的 SCHED_FIFO。请注意,Windows 下不提供此功能。 只有在执行 "[Device]DeviceEventsThreadApplyPriority" 命令参数和 "[Device]DeviceEventsThreadPriority" 值后,才会应用实际调度策略。 应用程序有责任确保调用进程有足够的权限应用调度策略,并确保写入参数的值是有效的调度策略标识符。应用 "[Device]DeviceEventsThreadApplyPriority" 后,应用程序可以读回调度策略值,以验证是否正确应用。 如果设备不支持设备事件,或使用 "device_event_handling=0" 通用参数禁用了事件处理,则无法使用该功能。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| '[Device]DeviceScheduledEventsMaximum' | <max_scheduled_events> | 2 | 整数 | 预定义 | 事件引擎为收集设备事件而尝试提前安排到 USB3 子系统的最大传输次数,与其他参数无关。只有当事件处理线程未激活时才可写入。目前,采集接口会保持线程永久运行,因此该功能实际上是只读的。这种情况将来可能会改变。 如果设备不支持设备事件,或使用 "device_event_handling=0" 通用参数禁用了事件处理,则无法使用该功能。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
| '[Stream]StreamAuxiliaryBufferCount' | <num_aux_buffers> | 2 | 整数 | 预定义 | 流引擎为采集分配的辅助缓冲区数量。缓冲区的大小取决于设备报告的有效载荷大小。如果没有空闲的用户缓冲区可供填充(通常是相机的采集速度快于应用程序的处理速度),则会根据需要安排辅助缓冲区进行采集。根据"[Stream]StreamBufferHandlingMode" 参数的不同,采集到辅助缓冲区中的数据仍可传送给应用程序,要么覆盖输出队列中的旧缓冲区,要么填充同时可用的空闲用户缓冲区。 仅在无采集活动时可写入。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
| '[Stream]StreamBufferHandlingMode' | 'OldestFirst', 'OldestFirstOverwrite', 'NewestOnly' | 'OldestFirst' | 字符串 | 预定义 | 选择流引擎用于处理新采集数据的模式,尤其是当相机运行速度快于应用程序处理速度时。该参数只有在没有采集活动时才可写入。支持的值有
|
| '[Stream]StreamScheduledBuffersMaximum' | <max_scheduled_buffers> | 4 | 整数 | 预定义 | 流引擎尝试提前安排 USB3 子系统采集的最大缓冲区数量,与其他参数无关。请注意,每个缓冲区通常需要 3-4 次 USB 传输才能填满。 仅在无采集活动时可写入。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
| '[Stream]StreamScheduledBuffersTarget' | <tgt_scheduled_buffers> | 2 | 整数 | 预定义 | 在任何给定时刻,流引擎都将尝试提前调度 USB3 子系统采集的缓冲区的理想最佳数量。如果已调度的缓冲区数量低于此值,流引擎将开始调度可用的辅助缓冲区。只要该参数中指定的水平达到饱和,就不会使用辅助缓冲区。 仅在无采集活动时可写。 请注意,计划缓冲区的实际数量绝对不能超过 "[Stream]StreamScheduledBuffersMaximum" 。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
| '[Stream]StreamThreadPriority' | <thread_priority> | 整数 | 预定义 | 用于内部流处理线程的操作系统特定线程优先级值。实际值直接是操作系统的优先级标识符,例如 Windows 下的 THREAD_PRIORITY_HIGHEST 或 Linux 下的实时优先级值。 实际优先级只有在执行 "[Stream]StreamThreadApplyPriority" 命令参数后才会应用,如果适用于给定系统,还可能与 "[Stream]StreamThreadSchedulingPolicy" 值一起应用。 应用程序有责任确保调用进程有足够权限应用优先级更改,并确保写入参数的值是有效的优先级标识符。应用 "[Stream]StreamThreadApplyPriority" 后,应用程序可以读回优先级值,以验证是否正确应用。 请注意,在打开设备时,USB3 Vision 生产者会尝试将线程优先级提升至合适的值。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| '[Stream]StreamThreadSchedulingPolicy' | <scheduling_policy> | 整数 | 预定义 | 用于内部流处理线程的操作系统特定调度策略值。实际值直接是操作系统的优先级标识符,例如 Linux 下的 SCHED_FIFO。请注意,Windows 下不提供此功能。 只有在执行 "[Stream]StreamThreadApplyPriority" 命令参数和 "[Stream]StreamThreadPriority" 值后,才会应用实际调度策略。 应用程序有责任确保调用进程有足够的权限应用调度策略,并确保写入参数的值是有效的调度策略标识符。应用 "[Stream]StreamThreadApplyPriority" 后,应用程序可以读回调度策略值,以验证是否正确应用。 注意:设置该参数可能导致系统无法使用或性能不佳,请谨慎使用。 |
|
| 'add_objectmodel3d_overlay_attrib' | 'disable', 'enable' | 'disable' | 字符串 | 预定义 | 控制采集接口是否应尝试将强度/颜色叠加附加到生成的三维对象模型上。仅适用于从给定抓取算子输出三维对象体模型的情况。开启后,采集接口将尝试在采集的数据中找到合适的信息(如果设备提供)。如果有,则会以扩展属性的形式为输出模型中的每个点添加叠加信息。请注意,在某些高级使用案例中,设备可能会输出多个潜在的叠加图像,因此采集接口会尝试找到最合适的图像。 首先,它会尝试识别采集数据中标记为 "强度" 图像的数据。如果发现并提供的是单色二维图像,则将其附加 为"&intensity_gray" 扩展属性。如果找到并提供的是 RGB 图像,则会作为 "&intensity_red"、"&intensity_green" 和 "&intensity_blue" 三个扩展属性附加。 如果无法识别 "强度 "数据,则会尝试查找标记为 "反射率" 的数据。如果找到并提供的是单色二维图像,则将其附加为 "&reflectance_gray" 扩展属性。如果找到并提供的是 RGB 图像,则会作为 "&reflectance_red"、"&reflectance_green" 和 "&reflectance_blue" 三个扩展属性添加。 最后,如果 "强度" 和 "反射率" 数据都无法识别(要么不存在,要么设备没有正确标记),则会在获取的数据中挑选第一个可以映射到三维坐标的二维图像。如果找到并提供的是单色二维图像,则将其添加为"&overlay_gray" 扩展属性。如果找到并提供的是 RGB 图像,它将作为 "&overlay_red"、"&overlay_green" 和 "&overlay_blue" 三个扩展属性附加。 如果没有找到合适的二维图像,则不会添加叠加。例如,可以使用带有 "extended_attribute_names" 参数的 get_object_model_3d_params 运算符查询实际添加的扩展属性。覆盖层也可用于可视化目的。 |
| 'available_callback_types' | ['<callback_types>'] | 字符串 | 动态 | 返回一个包含所有参数的列表,可以为这些参数注册回调。这包括设备和 USB3 Vision 生产者通过 GenICam 接口发布的所有参数,包括那些暂时不可用的参数,因为可用性变化可能与回调有关。 | |
| 'available_easyparam_names' | '[Consumer]exposure_auto', '[Consumer]exposure', '[Consumer]gain_auto', '[Consumer]gain', '[Consumer]info_general', '[Consumer]trigger', '[Consumer]trigger_activation', '[Consumer]trigger_delay', '[Consumer]trigger_software' | 字符串 | 预定义 | 返回包含所有 MVTec EasyParams 的列表(参见 MVTec EasyParams )。 | |
| 'available_param_names' | ['<names>'] | 字符串 | 动态 | 返回包含所有可用参数的列表,即 HALCON USB3Vision 图像采集接口使用的参数(不包括 MVTec EasyParams,可使用 "available_easyparam_names" 列出),以及设备和 USB3 Vision 生产者通过 GenICam 接口发布的参数(参见 参数命名规则 )。某些参数的可用性可能取决于采集状态、其他参数的值或其他条件,因此列表在运行期间会动态变化。 | |
| 'bits_per_channel' | -1, 8, 10, 12, 14, 16 | -1 | 整数 | 预定义 | 生成的 HALCON 图像每个通道的比特数。如果为-1,则使用各采集缓冲区的比特深度。如果指定的值大于 8,抓取的图像将以 uint2 图像的形式传输。 |
| 'buffer_frameid' | <frame_id> | 整数 | 动态 | 设备(或 USB3 Vision 生产者)最后抓取(图像)缓冲区上的帧 ID。通常是按顺序递增的帧编号。序列中跳过的 ID 可能表示设备或 USB3 Vision 生产者丢弃了一个或多个帧,例如由于采集引擎溢出的原因。请注意,在 32 位系统上,最多只能传送 64 位时间戳的低 32 位部分(除非启用了 "split_param_values_into_dwords" 参数)。参见 采集缓冲区处理 。 | |
| 'buffer_is_incomplete' | 0, 1 | 整数 | 动态 | 显示最后抓取的图像是否不完整(例如由于数据包丢失)。参见 采集缓冲区处理 。 | |
| 'buffer_reallocation_mode' | 'only_increase_size', 'follow_payloadsize' | 'only_increase_size' | 字符串 | 预定义 | 定义为新采集重新分配缓冲区时所遵循的策略。如果使用 "only_increase_size",则只有在有效载荷大小增加时才会重新分配缓冲区。如果使用 "follow_payloadsize",则每次有效载荷大小发生变化时都会重新分配缓冲区。 |
| 'buffer_timestamp' | <timestamp> | 整数 | 动态 | 设备(或 USB3 Vision 生产者)最后抓取(图像)缓冲区的时间戳。时间戳的单位和实际含义(何时生成)取决于设备。如果知道时间戳计数器的频率,则可以从 "buffer_timestamp_ns" 中读取以纳秒为单位的值。需要注意的是,在 32 位系统上,最多只能提供 64 位时间戳的低 32 位部分(除非启用了 "split_param_values_into_dwords" 参数)。 参见 采集缓冲区处理 。 | |
| 'buffer_timestamp_ns' | <timestamp> | 整数 | 动态 | 设备(或 USB3 Vision 生产者)最后抓取(图像)缓冲区的时间戳。该值以纳秒为单位,但如果时间戳频率未知,则可能无法使用(另请参阅 "buffer_timestamp" 和 "device_timestamp_frequency")。请注意,在 32 位系统上,最多只能传送 64 位时间戳的低 32 位部分(除非启用了 "split_param_values_into_dwords" 参数)。参见 采集缓冲区处理 。 | |
| 'camera_type' | 'default', <ini/xml filename> | 'default' | 字符串 | 预定义 | 返回用于 open_framegrabber 中 CameraType 参数的配置文件的路径。 |
| 'clear_buffer' | 'disable', 'enable' | 'disable' | 字符串 | 预定义 | 如果启用,则在重新排队前会清除每个缓冲区的内容(所有字节都设置为 0xF0,而不考虑预期的像素格式),这样就可以看到图像的哪些部分丢失了,以防某些图像数据包传输失败。当然,这个参数会增加运行时的开销,因为每次缓冲区排队时都要写入 0xF0 数据。它主要用于结合传输层进行调试,因为传输层不能保证传输完整的图像。请注意,该参数不会修改缓冲区队列,只会将缓冲区的内容设置为定义的状态。 |
| 'color_space' | 'default', 'gray', 'raw', 'rgb', 'yuv' | 'default' | 字符串 | 预定义 | 返回当前的。 |
| 'confidence_mode' | 'off', 'object_model_3d' | 'off' | 字符串 | 预定义 | 控制采集接口是否使用(以及如何使用)像素置信度信息。仅适用于置信度信息与实际像素数据一起交付(按像素)的设备和用例。 区分有效和无效像素的阈值由 "置信度阈值" 参数控制。 请注意,在某些使用情况下,可能有其他标准来标记给定像素无效,例如,如果设备使用 "无效像素值" 来表示三维坐标。这些情况不包含在 "confidence_mode" 参数中,并且三维对象模型始终会剔除这些无效像素。可能的值有:
|
| 'confidence_threshold' | [0.0, 1.0] | 0.5 | 浮点数 | 预定义 | 区分有效像素和无效像素的阈值。仅适用于将置信度信息(按像素)与实际像素数据一起传送的设备和用例。使用 "confidence_mode" 参数可决定如何应用置信度阈值(应用于哪些输出)。 阈值被解释为 0.0 和 1.0 之间的(浮点数)比率。采集接口会将此比率重新映射到设备提供的实际置信度范围,并以此来决定哪些像素有效,哪些无效。置信度低于指定阈值的像素将被视为无效。 |
| 'coordinate_transform_mode' | 'none', 'cartesian', 'reference' | 'reference' | 字符串 | 预定义 | 控制采集接口在根据获取的三维坐标建立三维对象模型时,应尝试执行哪些坐标变换算子。请注意,决定执行哪种变换以及使用哪些参数完全取决于设备提供的三维配置信息和获取的数据。如果这些信息不充分或坐标不准确,变换的结果可能毫无意义或无法预测。详情请参阅 使用三维设备 。 可能的值有:
|
| 'create_objectmodel3d' | 'disable', 'enable' | 'disable' | 字符串 | 预定义 | 控制采集接口在遇到采集数据中的三维坐标时是否应尝试生成 HALCON 三维对象模型。 要获取三维对象模型,应用程序必须使用 grab_data/grab_data_async 算子,它们可以通过控制数据输出返回生成模型的句柄。而 grab_image/grab_image_async 算子不能返回三维对象模型。 重要提示:默认情况下禁用该参数。启用后,一旦不再需要给定的模型,应用程序就有责任使用 clear_object_model_3d 算子释放生成的对象模型和相关资源。为此,应用程序应跟踪每次 grab_data/grab_data_async 调用的控制数据输出中哪些带有三维对象模型句柄。这可以使用 "data_contents" 参数来实现。 生成三维模型模型时,采集接口会处理采集数据中的三维坐标,并借助设备报告的实际三维配置信息构建点云。详情请参阅 使用三维设备 。 |
| 'data_contents' | 'unknown', 'object_model_3d', 'text_report' | 0 | 字符串 | 预定义 | 描述上次抓取算子返回的控制数据输出逻辑类型的元组。如果最后一次成功抓取是通过 grab_image/grab_image_async 执行的,则不适用。如果是 grab_data/grab_data_async,它将返回一个大小与通过这些算子返回的控制数据值数量相对应的元组。可能的值有:
|
| 'data_purpose_id' | --- | 0xFFFFFFFFFFFFFFFF | 整数 | 预定义 | 整数值元组,用于跟踪与上一个抓取算子返回的单个控制数据输出相关联的数据目标 IDs。适用于数据应与设备配置相匹配的高级用例。该参数的使用与特定应用有关,需要了解 GenICam SFNC 数据模型和特定设备。如果上一次成功抓拍是通过 grab_image/grab_image_async 执行的,则不适用。如果是 grab_data/grab_data_async,则返回一个元组,其大小与通过这些算子返回的控制数据值的数量相对应。如果无法识别 ID(例如,由于底层通信协议不提供此类信息),则将返回无效值(给定整数范围内的最大值)。 |
| 'data_region_id' | --- | 0xFFFFFFFFFFFFFFFF | 整数 | 预定义 | 整数值元组,用于跟踪与上一个抓取算子返回的单个控制数据输出相关联的区域 IDs。适用于数据应与设备配置相匹配的高级用例。该参数的使用与特定应用有关,需要了解 GenICam SFNC 数据模型和特定设备。如果上一次成功抓拍是通过 grab_image/grab_image_async 执行的,则不适用。如果是 grab_data/grab_data_async,则返回一个元组,其大小与通过这些操作符返回的控制数据值的数量相对应。如果无法识别 ID(例如,由于底层通信协议不提供此类信息),则将返回无效值(给定整数范围内的最大值)。 |
| 'data_source_id' | --- | 0xFFFFFFFFFFFFFFFF | 整数 | 预定义 | 整数值元组,用于跟踪与上一个抓取算子返回的单个控制数据输出相关联的源 IDs。适用于数据应与设备配置相匹配的高级用例。该参数的使用与特定应用有关,需要了解 GenICam SFNC 数据模型和特定设备。如果上一次成功抓拍是通过 grab_image/grab_image_async 执行的,则不适用。如果是 grab_data/grab_data_async,则返回一个元组,其大小与通过这些操作符返回的控制数据值的数量相对应。如果无法识别 ID(例如,由于底层通信协议不提供此类信息),则将返回无效值(给定整数范围内的最大值)。 |
| 'delay_after_stop' | <milliseconds> | 0 | 整数 | 预定义 | 设备停止采集(AcquisitionStop 命令)与 USB3 Vision 生产者之间的等待时间(毫秒)。最佳值取决于所用设备的速度和 USB3 Vision 生产者所需的额外安全性。如果 USB3 Vision 生产者功能强大,则无需延迟。 |
| 'device' | ' | device:<device id> | unique_name:<unique name> | user_name:<user-defined name> | interface:<interface id> | producer:Usan | device_sn:<serial number>', '<device id>' | 字符串 | 动态 | 返回打开设备(open_framegrabber)时使用的设备参数字符串。 | |
| 'device_event_handling' | 0, 1 | 1 | 整数 | 预定义 | open_framegrabber 中指定的 device_event_handling 通用参数的值。默认情况下,支持事件传送(消息通道)的设备将打开 device_event_handling,不支持事件功能的设备将关闭 device_event_handling。通用参数 device_event_handling 明确允许关闭事件处理功能,即使对于支持事件的设备也是如此。 |
| 'device_timestamp_frequency' | <frequency_hz> | 整数 | 动态 | 设备时间戳计数器的频率,单位为每秒嘀嗒数 (Hz)。并非所有设备的频率都是已知的。例如,计数器用于将时间戳附加到获取的缓冲区。需要注意的是,在 32 位系统上,最多只能传送 64 位时间戳的低 32 位部分(除非启用了 "split_param_values_into_dwords" 参数)。 | |
| 'direct_connection' | 'disable', 'enable' | 'disable' | 字符串 | 预定义 | open_framegrabber 中指定的 direct_connection 通用参数的值。 |
| 'event_data' | '<list of genicam_feature/internal_parameter>' | 字符串 | 预定义 | 配置 GenICam 功能和/或内部参数(自由组合),以便将其添加到 "event_message_queue" 指定的消息队列中,为在 "event_selector" 中选择的功能发送功能更改通知。 功能可以单独添加,也可以作为一个元组添加——该参数的每个 "设置" 操作都会追加到当前的事件数据列表中。要移除单个功能,请在其前面加上"~"。要清除当前添加的所有功能,请调用 set_framegrabber_param(..., 'event_data', [])。 如需进一步了解该机制的用法,请访问 事件消息队列 。 |
|
| 'event_message_queue' | 0, '<queue_handle>' | 句柄 | 预定义 | 选择采集接口应向其发送功能更改通知的消息队列(详见 事件消息队列 )。 相应的 功能/参数 需要事先通过 "event_selector" 选择。 设置 0 (NULL)后,先前选定的消息队列将不再收到有关给定功能/参数的通知。 |
|
| 'event_notification_helper' | 'disable', 'enable' | 'disable' | 字符串 | 预定义 | 控制采集接口在 set_framegrabber_callback 期间,如果回调正在(未)注册到符合 SFNC 标准的事件上,是否应尝试自动(取消)设置 "EventNotification" 。请注意,只有当回调是在实际事件特征(如 "EventExposureEnd")而非事件数据特征(如 "EventExposureEndTimestamp" )上注册时才会起作用。有关事件的更多信息,参见 事件数据 。 |
| 'event_selector' | '<genicam_feature/internal_parameter>' | 'grab_timeout' | 字符串 | 预定义 | 选择一个 GenICam 功能或内部参数,为其配置通过消息队列发送的功能更改通知。 这些通知会连同在 "event_data" 中配置的附加数据一起发送到 "event_message_queue" 中指定的消息队列。 有关该机制使用的更多信息,请参阅 事件消息队列(这是通过回调发送通知的另一种选择,即 功能更改通知 )。 |
| 'external_trigger' | <default> | 'false' | 字符串 | 预定义 | 该值不会被使用,因此会返回默认值。 |
| 'field' | '<default>' | 'progressive' | 字符串 | 预定义 | 该值不会被使用,因此会返回默认值。 |
| 'fileaccess_file_path' | '<file_path>' | 字符串 | 预定义 | 指定用于主机和设备之间文件交换操作的本地文件(在主机文件系统中)的完整路径、"do_fileaccess_download" 或 "do_fileaccess_upload"。 当前用户/进程必须有足够的权限访问文件。请注意,只有当指定设备支持 GenICam 文件访问功能时,所有与文件访问相关的参数才可用。 |
|
| 'fileaccess_remote_name' | '<file_name>' | 字符串 | 预定义 | 选择设备上需要执行 "do_fileaccess_download"、"do_fileaccess_upload" 或 "do_fileaccess_delete" 文件访问处理操作之一的文件。 文件名必须是设备执行的文件之一 - 有效文件名称集可通过 "fileaccess_remote_name_values" 查询。请注意,只有当指定设备支持 GenICam 文件访问功能时,所有与文件访问相关的参数才可用。 | |
| 'fwupdate_file_path' | '<file_name>' | 字符串 | 预定义 | 包含 GenICam 兼容固件更新(guf 文件)的文件路径。设置后,将验证该文件并枚举其中包含的固件更新。如果无效或找不到与当前设备匹配的更新,则会出错。如果成功,可以使用 "fwupdate_update_selector_values" 查询匹配的更新集,并使用 "fwupdate_update_selector" 选择实际要应用的更新。最后,可使用 "do_fwupdate_apply" 应用选定的更新。 请注意,所有固件更新相关参数只能在专用的 "安全模式" 下使用,参见 固件更新 。 |
|
| 'fwupdate_update_selector' | '<firmware_update_label>' | 字符串 | 预定义 | 选择可通过 "do_fwupdate_apply" 应用的固件更新。在 "fwupdate_file_path" 中选择一个有效的固件更新文件后,选择器就可用了。可使用 "fwupdate_update_selector_values" 查询选项(描述在该文件中找到的匹配固件更新的标签)。 请注意,所有固件更新相关参数只能在专用的 "安全模式" 下使用,参见 固件更新 。 |
|
| 'fwupdate_wait_after_reset' | '<timeout>' | 整数 | 预定义 | 如果在固件更新过程中需要重置设备,在设备重新发现前应用的额外超时(毫秒)。该超时将添加到固件更新文件本身指定的相应超时中。当使用原始超时无法安全地重新发现设备时,用于解决系统特定问题。 请注意,所有固件更新相关参数只能在专用的 "安全模式" 下使用,参见 固件更新 。 |
|
| 'generic' | '', ['num_buffers=<num>' , 'direct_connection=<mode>' , 'streaming_mode=0' , 'device_event_handling=0' ], -1 | -1 | 混合型 | 预定义 | 通用参数的值。 |
| 'grab_timeout' | <milliseconds> | 5000 | 整数 | 预定义 | 当前抓取超时(毫秒)。 |
| 'horizontal_resolution' | 0, 1, resolution | 1 | 整数 | 预定义 | 水平分辨率的当前值。 |
| 'image_available' | 0, 1 | 整数 | 动态 | 显示当前是否有图像等待 USB3 Vision 生产者传输。 | |
| 'image_contents' | 'unknown', 'image', 'coord_a', 'coord_b', 'coord_c', 'coord_mixed', 'confidence' | 0 | 字符串 | 预定义 | 描述上次抓取算子返回的图像数据逻辑类型的元组。如果最后一次成功抓取是通过 grab_image/grab_image_async 执行的,该参数返回的总是单一值。如果是通过 grab_data/grab_data_async,则返回一个元组,其大小与通过这些算子返回的图像数相对应。可能的值有:
|
| 'image_height' | <height> | 0 | 整数 | 预定义 | 最后获取的图像的高度。参见 采集缓冲区处理 。如果没有可用的有效最后缓冲区,则返回远程设备 "高度" 参数的最后查询值。 |
| 'image_pixel_format' | --- | 0 | 整数 | 预定义 | 代表用于生成单个图像输出的源数据原始像素格式 ID 的整数值元组。这通常是给定像素格式的 PFNC 32 位 ID,如果未知或用于生成给定图像输出的数据自然不是图像,则报告为 0。如果源数据是多分量图像(如 RGB 或多分量三维坐标格式),无论所有分量是否用于生成给定的图像输出(如 RGB 图像),还是图像输出只反映了其中一个分量(如单独的三维坐标平面,作为单独的 HALCON 图像输出),都会报告原始的多分量像素格式。原始的多分量像素格式可能是平面格式,也可能不是。请注意,如果用户通过 "bits_per_channel" 和 "color_space" 参数要求进行转换,实际 HALCON 图像的和位深度可能与源格式有很大不同。 |
| 'image_purpose_id' | --- | 0xFFFFFFFFFFFFFFFF | 整数 | 预定义 | 整数值元组,用于跟踪与上一个抓取算子返回的单个图像输出相关联的数据用途 IDs。适用于数据应与设备配置相匹配的高级用例。该参数的使用与特定应用有关,需要了解 GenICam SFNC 数据模型和特定设备。如果上一次成功抓拍是通过 grab_image/grab_image_async 执行的,该参数返回的始终是单一值。如果是 grab_data/grab_data_async,则返回一个元组,其大小与通过这些算子返回的图像数相对应。如果无法识别 ID(例如,由于底层通信协议不提供此类信息),则将返回无效值(给定整数范围内的最大值)。 |
| 'image_raw_buffer_padding_bytes' | --- | 0 | 整数 | 预定义 | 整数元组,用于报告 "blob"(参见 "image_raw_buffer_type")类型原始缓冲区的大小,以及在抓取的 HALCON 图像末尾未使用的填充字节数。由于在这种情况下需要为生成的 HALCON 图像选择人工尺寸,图像的大小可能不完全等于缓冲区数据的大小,因此可能需要填充。"图像" 类型的缓冲区报告为零。仅适用于 "原始" 色彩格式。请参见 原始输出格式 一章。如果上一次成功抓取是通过 grab_image/grab_image_async 执行的,则该参数返回的始终是单一值。如果是 grab_data/grab_data_async,则返回一个元组,其大小与通过这些算子返回的图像数相对应。 |
| 'image_raw_buffer_type' | 'image', 'blob' | 0 | 字符串 | 预定义 | 字符串元组,显示最后抓取的 HALCON 图像是由包含已知属性(尤其是图像尺寸和像素格式)的实数图像数据的缓冲区创建的,还是由其他数据(非图像数据或未知格式的图像数据)的 blob 创建的。请注意,如果是 blob 数据,HALCON 图像的尺寸是没有意义的。主要适用于 "原始" 色彩格式。可能的值为 "image" 和 "blob" 。请参见 原始输出格式 一章。如果上一次成功抓取是通过 grab_image/grab_image_async 执行的,则该参数返回的始终是单一值。如果是 grab_data/grab_data_async,则返回一个元组,其大小与通过这些算子返回的图像数相对应。 |
| 'image_region_id' | --- | 0xFFFFFFFFFFFFFFFF | 整数 | 预定义 | 整数值元组,用于跟踪与最后抓取算子返回的单个图像输出相关联的区域 IDs。适用于数据应与设备配置相匹配的高级用例。该参数的使用与特定应用有关,需要了解 GenICam SFNC 数据模型和特定设备。如果上一次成功抓取是通过 grab_image/grab_image_async 执行的,则该参数返回的始终是单一值。如果是 grab_data/grab_data_async,则返回一个元组,其大小与通过这些算子返回的图像数相对应。如果无法识别 ID(例如,由于底层通信协议不提供此类信息),则将返回无效值(给定整数范围内的最大值)。 |
| 'image_source_id' | --- | 0xFFFFFFFFFFFFFFFF | 整数 | 预定义 | 整数值元组,用于跟踪与上次抓取算子返回的单个图像输出相关联的源 IDs。适用于数据应与设备配置相匹配的高级用例。该参数的使用与特定应用有关,需要了解 GenICam SFNC 数据模型和特定设备。如果上一次成功抓取是通过 grab_image/grab_image_async 执行的,则该参数返回的始终是单一值。如果是 grab_data/grab_data_async,则返回一个元组,其大小与通过这些算子返回的图像数相对应。如果无法识别 ID(例如,由于底层通信协议不提供此类信息),则将返回无效值(给定整数范围内的最大值)。 |
| 'image_width' | <width> | 0 | 整数 | 预定义 | 最后获取的图像的宽度。参见 采集缓冲区处理 。如果没有可用的有效最后缓冲区,则返回远程设备 "宽度" 参数的最后查询值。 |
| 'line_in' | <default> | 0 | 整数 | 预定义 | 该值不会被使用,因此会返回默认值。 |
| 'name' | 'USB3Vision' | 字符串 | 预定义 | HALCON 接口的名称。 | |
| 'num_buffers' | <number> | 4 | 整数 | 预定义 | 用于图像采集的缓冲区数量。 |
| 'num_buffers_await_delivery' | <number> | 整数 | 动态 | 等待 USB3 Vision 生产者传输的(图像)缓冲区数量。 | |
| 'num_buffers_underrun' | <number> | 整数 | 动态 | 自打开设备以来因缓冲队列不足而丢失的缓冲区数量。当 USB3 Vision 生产者有新的图像数据可用,但却没有空闲的缓冲区来存储这些数据时,就会出现队列不足。 | |
| 'port' | <port> | -1 | 整数 | 预定义 | 该值不会被使用,因此会返回默认值。 |
| 'register_<addr>_<len>' | 整数 | 预定义 | 直接访问寄存器,用于读写整数。数值必须是十六进制,如 0x0938。注意只接受 4 或 8 字节长度的值。设备字节顺序不进行转换。注意: 这是一个危险的功能,用于调试和特殊情况。通常只能使用 XML 中的功能。 | ||
| 'revision' | '<revision>' | 字符串 | 预定义 | USB3 Vision 接口的版本号。 | |
| 'settings_selector' | 'RemoteDevice', 'Stream', 'Device', 'System', 'Interface', 'Consumer' | 'RemoteDevice' | 字符串 | 预定义 | 在使用 set_framegrabber_param(..., 'do_write_settings', []) 和 set_framegrabber_param(..., 'do_load_settings', []) 时,选择将哪个组件(参数集)的可流参数持久保存到文件中或从文件中恢复。在实际(远程)设备、GenTL 生产者模块之一或消费者参数(GenICamTL 图像采集接口的内部参数)之间进行选择。并非所有 GenTL 生产者都能实现所有模块。查询 "settings_selector_values" 可获得可接受值的列表。有关该机制使用的更多信息,请参阅 参数 - 持久设备状态。 |
| 'split_param_values_into_dwords' | 'disable', 'enable' | 'disable' | 字符串 | 预定义 | 启用一种特殊模式,允许将整数参数视为两个 32 位整数的元组。为了与单参数模式兼容,第一个元组元素总是携带数值的低 32 位部分,第二个元素携带高 32 位部分。用户有责任正确组合这两个部分。该模式特别有助于解决 32 位 HALCON 仅具有 32 位整数参数,但必须面对 64 位宽 GenICam 功能的问题。在此模式下,get_framegrabber_param 返回的总是两个整数的元组,set_framegrabber_param 可接受单个参数或元组。请注意,该模式只影响整数参数,而且只影响基于 GenICam 的参数,而不影响 HALCON GenICamTL 图像采集接口的内部参数("buffer_timestamp"、"buffer_timestamp_ns"、"device_timestamp_frequency" 和 "buffer_frameid" 内部参数除外)。 |
| 'start_async_after_grab_async' | 'disable', 'enable' | 'enable' | 字符串 | 预定义 | "start_async_after_grab_async" 的状态。 |
| 'start_column' | <column> | 0 | 整数 | 预定义 | 不支持,返回值始终为 0。 |
| 'start_row' | <row> | 0 | 整数 | 预定义 | 不支持,返回值始终为 0。 |
| 'streaming_mode' | 0, 1 | 1 | 整数 | 预定义 | 在 open_framegrabber 中指定的 streaming_mode 通用参数的值。默认情况下,支持流的设备会打开 streaming_mode,而外围设备(没有任何数据流的设备)则关闭 streaming_mode。通用参数 streaming_mode 明确允许关闭流功能,即使对于支持流的设备也是如此。 |
| 'vertical_resolution' | 0, 1, resolution | 1 | 整数 | 预定义 | 垂直分辨率的当前值。 |
| 'volatile' | 'disable', 'enable' | 'disable' | 字符串 | 预定义 | 易失性模式的当前值。 |
回调函数的签名是 Herror (__stdcall *HAcqCallback)(void *AcqHandle, void *Context, void *UserContext) 并使用以下参数:
需要注意的是,用户专用回调函数的执行时间必须尽可能短,因为在回调函数执行期间,可能会阻塞对其他内部回调的处理。要做到这一点,可以将当前的处理工作从用户专用回调函数转移到一个单独的线程中,该线程通过信号或事件进行控制。回调函数在底层接口或驱动程序的上下文中执行。
同样重要的是要了解,回调可能会作为参数设置或抓取操作的副作用被触发,即可能会在各自的锁中被调用。用户有责任在回调处理程序中考虑到这一点,以避免死锁风险。
您可以通过发送电子邮件至 info@mvtec.com 申请获得 GPL 或 LGPL 许可的第三方库的源代码,邮件主题为 "申请第三方库的源代码"。