学习笔记:C#笔记 采集卡测试

优采云 发布时间: 2022-10-03 17:12

  学习笔记:C#笔记 采集卡测试

  一周多!

  1. 1CAM 文件1.参数

  CAM文件是一个可读的ASCII文件,文件扩展名为.cam文件,其中收录一个参数列表,如:采集模式,三元模式等。通过麦克塞特范式方法将康贝文件加载到通道中:

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

  1.2 通道

  通道是相机、帧捕获器和主机 PC 内存之间的采集路径。该频道由三部分组成:

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

  2.帧捕捉器负责图像的采集和传输。

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

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

  名字

  意义

  孤儿

  没有与之相关的抓取器。因此,不可能立即获取图像。但是通道存在,其所有参数都可以设置或自由获取。

  怠

  当通道处于空闲状态时,它有一个与之关联的抓取器。因此,可以立即执行图像采集。在此状态下,多机位可能会自动将爬网程序资源重新分配给另一个通道。

  准备

  当通道处于就绪状态时,它具有与之关联的抓取器。因此,可以立即执行图像采集。在此状态下,多*敏*感*词*无法自动将抓取器资源重新分配给另一个通道。

  积极

  当通道处于活动状态时,它具有与之关联的抓取器,并执行图像采集序列。在此状态下,多*敏*感*词*无法自动将抓取器资源重新分配给另一个通道。

  代码示例:

  1.3 表面

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

  表面状态

  意义

  自由

  自由表面能够无条件地从采集卡接收图像数据。

  填充

  图像数据是

  当前正在从抓取器接收,或正在准备接收数据。群集应都具有曲面的填充状态。

  㿙

  您已完成从采集卡接收图像数据,并已准备好进行处理。

  加工

  曲面的处理状态正在由处理器处理。

  保留

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

  代码示例:

  一组表面称为聚类,一个通道只能有一个聚类。群集的状态为“关闭”、“就绪”(无曲面的处理)、“忙碌”(“正在处理”中有一个曲面)和“不可用”(无法获取图像)

  )。

  单缓冲

  双缓冲

  三重缓冲

  1.4多声信令

  

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

  帧触发冲突

  开始曝光

  该信号在帧曝光条件开始时发射。

  结束曝光

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

  表面填充

  当目标簇的曲面进入“已填充”状态时,将发出此信号。

  表面处理

  当目标群集的曲面进入“正在处理”状态时,将发出此信号。

  群集不可用

  获取失败 (**)

  开始采集序列

  采集序列结束

  频道活动结束

  有三种机制可以访问它们:

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

  2. 一种专门的机制,允许线程等待预定义的信号出现。

  3.涉及标准 Windows 等待功能的用户定义机制。

  要使用回调:

  1. 默认情况下,所有信号都处于禁用状态。信号启用参数用于设置它。

  2. 注册回调函数

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

  例:

  1.5触发

  触发器事件由“三元模式”和“下一步三模式”参数设置。

  1.5.1 初始触发事件:

  1.5.2 触发事件结束

  采集阶段可以通过结束三模式结束:

  1)序列在采集帧、页或行计数器过期时自动终止。

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

  或者直接通过断路效应参数终止通道的活动状态:

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

  2) 立即停止(中止)

  )。

  1.6收购模式1.7 异常

  异常通过异常代码或 Windows 异常进行管理。错误处理参数使用 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,则调用处理回调以获取图片的数据并将图片数据转换为位图。如果收到MC.SIG_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 通道状态设置为就绪

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

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

  3. 编写测试程序

  触发模式默认按顺序触发。

  在界面上显示凸轮文件的加载情况。

  演示界面只有Go和停止,还有状态栏,增加了打开/关闭相机和启动/停止采集按钮。

  触发曝光开始事件,帧开始计数++;surface_processing事件触发,绘制计数++;获取触发的失败事件、丢失的帧计数++。

  代码绝对没有运行,毕竟我是一个从未见过采集卡的人,只是说说就哈哈哈

  程序员的灯塔

  测评:如何用优采云采集器器实现网络上企业名录、客户手机电话号码的搜索采集

  此时,您可以完成电话采集项目的设置、运行和数据导出的整个过程。

  

  请注意,在同一网站下,

  不建议同时运行多个采集项目,因为这会给对方的网站带来很大的访问压力,可能会被IP屏蔽。该软件的内置模板在访问压力上已经平衡,当单个项目运行时,它通常不会被阻止IP。但是,同时运行多个项目超出了均衡设置的范围。

  

  当IP地址被封禁时,请打开“项目高级设置”-云计算-选择“仅请求网页访问协助”进行云采集,可以绕过对方采集网站屏蔽。

  图 8:项目的云采集请求的设置

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线