自动采集编写(触发MCC#抓取surface笔记图像采集卡channel!)

优采云 发布时间: 2022-04-15 15:29

  自动采集编写(触发MCC#抓取surface笔记图像采集卡channel!)

  标签:触发MCC#抓取表面笔记图像采集卡片通道

  每周更新!

  1.参数1.1CAM文件

  CAM 文件是一个可读的 ASCII 文件,文件扩展名为 .cam,收录一系列参数,例如:AcquisitionMode、TrigMode 等。通过 McSetParamStr 方法将 Camfile 加载到通道:

  McSetParamStr(MyChannelMyChannel, MC_CamFile , "VCC VCC-870A_P15RA");

  1.2 频道

  通道是相机、图像采集卡和主机 PC 内存之间的 采集 路径。频道由三部分组成:

  1. 负责图像捕获的相机。

  2. 图像采集卡负责采集 和图像的传输。

  3. 用于在主机 PC 中存储图像的内存缓冲区。

  

  可以将通道设置为以下四种状态之一:

  名字

  意义

  孤儿

  没有与之关联的爬虫。所以不可能立即得到图像。但是通道是存在的,它的所有参数都可以自由设置或获取。

  空闲

  当一个通道空闲时,它有一个与之关联的抓取器。因此,图像 采集 可以立即完成。在这种状态下,MultiCam 可能会自动将采集器资源重新分配给另一个通道。

  准备好了

  当一个通道处于就绪状态时,它有一个与之关联的抓取器。因此,图像 采集 可以立即完成。在这种状态下,MultiCam 无法自动将采集器资源重新分配给另一个通道。

  活跃

  当一个通道处于活动状态时,它有一个与之关联的抓取器并执行一系列图像采集。在这种状态下,MultiCam 无法自动将采集器资源重新分配给另一个通道。

  代码示例:

  

  1.3 曲面

  surface 是一个缓冲区,用户应用程序可以在其中找到要分析的 采集图像。内存缓冲区由称为表面的 MultiCam 对象表示。曲面可以由 Multicam 自动创建或由用户手动创建。抓取器通过 DMA 机制自动将 采集 图像传输到目标表面。一个通道可以有一个或多个表面(默认为 4)。根据表面的数量,定义了单缓冲和多缓冲。

  表面状态

  意义

  免费

  自由曲面可以无条件地接收来自抓手的图像数据。

  填充

  目前正在从采集卡接收图像数据,或准备接收数据。集群中应该有一个处于 FILLING 状态的 Surface。

  填满

  已完成从抓取器接收图像数据,准备处理。

  处理

  处理器正在处理处于 PROCESSING 状态的 Surface。

  保留

  从标准状态转换机制中移除。

  代码示例:

  

  一组表面称为一个簇,一个通道只能有一个簇。集群状态为OFF、READY(正在获取图像但没有表面在PROCESSING)、BUSY(有表面在PROCESSING中)、UNAVAILABLE(无法获取图像)

  

  单缓冲

  

  双缓冲

  

  三重缓冲

  1.4多机位信号发送

  信号是由与用户应用程序交互的通道生成的事件。

  帧触发冲突

  开始曝光

  此信号在帧曝光条件开始时发出。

  结束曝光

  该信号在帧曝光条件结束时发出。

  表面填充

  当目标簇的Surface进入Filled状态时发出此信号。

  表面处理

  当目标簇的Surface进入Processing状态时发出此信号。

  集群不可用

  采集失败 (**)

  采集序列开始

  采集序列结束

  频道活动结束

  有三种访问它们的机制:

  1. 是指用户编写的函数,当预定义的信号出现时会自动调用这些函数。 (回调)

  2. 允许线程等待预定义信号发生的专用机制。

  3. 一种用户定义的机制,涉及标准的 Windows 等待函数。

  使用回调的案例:

  1. 默认情况下,所有信号都被禁用。 SignalEnable 参数用于设置。

  2.注册回调函数

  3. 在回调函数中,使用 PMCSIGNALINFO 捕获事件,其中收录有关触发事件的信息。

  例子:

  

  

  1.5触发器

  触发事件由 TrigMode 和 NextTrigMode 参数设置。

  1.5.1 初始触发事件:

  1.5.2触发事件结束

  采集阶段可以用 EndTrigMode 结束:

  1)当帧、页或行计数器到期时,采集 序列会自动终止。 (自动)

  2)当检测到硬件侧触发线的有效转换时,采集序列终止(HARD)

  或者通过BreakEffect参数直接终止通道的活动状态:

  1)切片/相位/序列结束后停止采集(FINISH)

  2)中止

  1.6采集模式1.7异常

  通过异常代码或 Windows 异常来管理异常。 ErrorHandling 参数设置错误管理行为,有 4 个可能的值。

  

  2.演示

  

  2.1 打开驱动

  // Open MultiCam driver

MC.OpenDriver();

  2.2 创建频道

  // Create a channel and associate it with the first connector on the first board

MC.Create("CHANNEL", out channel);

MC.SetParam(channel, "DriverIndex", 0);

  2.3 相机参数设置

  // Choose the CAM file

MC.SetParam(channel, "CamFile", "1000m_P50RG");

// Choose the camera expose duration

MC.SetParam(channel, "Expose_us", 20000);

// Choose the pixel color format

MC.SetParam(channel, "ColorFormat", "Y8");

  2.4 触发模式改变

  //Set the acquisition mode to Snapshot

MC.SetParam(channel, "AcquisitionMode", "SNAPSHOT");

// Choose the way the first acquisition is triggered

MC.SetParam(channel, "TrigMode", "COMBINED");

// Choose the triggering mode for subsequent acquisitions

MC.SetParam(channel, "NextTrigMode", "COMBINED");

  2.5 个事件触发器

  2.5.1 注册回调函数

  // Register the callback function

multiCamCallback = new MC.CALLBACK(MultiCamCallback);

MC.RegisterCallback(channel, multiCamCallback, channel);

  2.5.2 信号开启

  // Enable the signals corresponding to the callback functions

MC.SetParam(channel, MC.SignalEnable + MC.SIG_SURFACE_PROCESSING, "ON");

MC.SetParam(channel, MC.SignalEnable + MC.SIG_ACQUISITION_FAILURE, "ON");

  2.5.3 判断接收信号

  如果接收到的是MC.SIG_SURFACE_PROCESSING,调用ProcessingCallback获取图片的数据,并将图片数据转换为位图。如果收到 MC.SIG_ACQUISITION_FAILURE,调用 AcqFailureCallback 输出“Acquisition Failure”。

  private void MultiCamCallback(ref MC.SIGNALINFO signalInfo)

{

switch(signalInfo.Signal)

{

case MC.SIG_SURFACE_PROCESSING:

ProcessingCallback(signalInfo);

break;

case MC.SIG_ACQUISITION_FAILURE:

AcqFailureCallback(signalInfo);

break;

default:

throw new Euresys.MultiCamException("Unknown signal");

}

}

  2.6通道状态设置为READY

  // Prepare the channel in order to minimize the acquisition sequence startup latency

MC.SetParam(channel, "ChannelState", "READY");

  3. 编写测试程序

  触发方式使用默认的连续触发。

  在界面上显示camfile的加载。

  演示界面只有Go和stop和一个状态栏。添加按钮以打开/关闭相机和启动/停止采集.

  曝光开始事件被触发,帧数开始计数++;触发surface_processing事件,图像采集计数++;触发采集失败事件,丢帧计数++。

  

  

  代码肯定行不通。毕竟我是一个没见过采集卡片的人,所以我只是在说纸上谈兵哈哈哈

  标签:触发器、MC、C#、抓取、表面、笔记、图像、采集卡片、通道

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线