学习笔记: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:项目的云采集请求的设置