周更!节日快乐!

1. 参数

1.1 CAM file

CAM file是文件扩展名为.cam的可读ASCII文件,包含了参数列表,比如:AcquisitionMode,TrigMode等。通过McSetParamStr方法将Camfile加载到通道:

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

1.2 channel

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

1. 负责图像捕获的相机。
2. 帧捕获器负责图像的采集和传输。
3. 用于在主机PC中存储图像的内存缓冲区。

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

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

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

Ready

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

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

代码示例:

1.3 surface

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

Surface state Meaning
FREE 自由表面能够无条件地从抓取器接收图像数据。
FILLING

目前正在从抓取器接收图像数据,或准备接收数据。一个cluster中应该都有一个FILLING状态的Surface。

FILLED 已完成从抓取器接收图像数据,已准备好进行处理。
PROCESSING

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

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

代码示例:

一组surface称为cluster,一个通道只能有一个cluster。cluster的状态有OFF,READY(在获取图像但没有surface处于PROCESSING),BUSY(有surface处于PROCESSING),UNAVAILABLE(不能获取图像)

Single Buffering

Dual Buffering

Triple Buffering

1.4 Multicam Signaling

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

Frame Trigger Violation  
Start Exposure 该信号在帧曝光条件开始时发出。
End Exposure 该信号在帧曝光条件结束时发出。
Surface Filled 当目标cluster的Surface 进入Filled状态时,会发出此信号。
Surface Processing 当目标cluster的Surface 进入Processing状态时,会发出此信号。
Cluster Unavailable  
Acquisition failure (**)  

Start of Acquisition Sequence

 
End of Acquisition Sequence  
End of Channel Activity  

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

1. 涉及在出现预定义信号时自动调用的用户编写的函数。(callback)
2. 允许线程等待预定义信号出现的专用机制。
3. 涉及标准Windows等待函数的用户定义机制。

使用callback的步骤:

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

2. 注册回调函数

3. 在回调函数中,使用包含触发事件信息的PMCSIGNALINFO捕获事件。

示例:

1.5 Trigger

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

1.5.1 初始触发事件:

  • 连续:将ChannelState设为Active后立即启动,NextTrigMode为REPEAT
  • 硬触发
  • 软触发:将ForceTrig参数设置为TRIG
  • 结合触发

1.5.2 触发事件的结束

可以通过EndTrigMode结束采集阶段:
1)帧、页或行计数器到期时,采集序列自动终止。(AUTO)
2)当检测到硬件端触发线的有效转换时,采集序列终止(HARD)
或者通过BreakEffect参数直接终止channel的活动状态:

1)在slice/phase/sequence结束后再停止采集(FINISH)

2)立刻停止(ABORT)

1.6 Acquisition Mode

  • VIDEO模式用于从标准区域扫描摄像机记录多个视频序列。ActivityLength指定通道活动周期内的序列数。
  • SNAPSHOT模式用于从区域扫描相机获取快照图像。唯一序列能够在信道活动周期内获取SeqLength_Fr帧。
  • PAGE模式用于从线扫描相机获取离散对象的图像。每一页由连续的行组成;页面长度(以行表示)由PageLength\u Ln指定。单个序列能够在通道活动周期内获取SeqLength_Pg页面。
  • WEB模式用于从线扫描相机获取连续对象(如网络)的图像。在信道活动周期内,可使用单个序列获取连续行的SeqLength_。序列被划分为连续的相位,每个相位获取PageLength\u Ln行。如果SeqLength_Ln不是PageLength_Ln的倍数,则在最后阶段会部分填充surface。序列和第一采集阶段根据触发模式启动。后续采集阶段自动启动,无任何线路损耗。BreakEffect指定用户中断时的行为。

1.7 Exception

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

  • None 没有异常时为MC_OK或者0,有异常时函数会返回MCSTATUS类型的值。

  • MSGBOX 没有异常时为MC_OK或者0,有异常会显示对话框

  • Exception
  • MSGException

2. Demo

2.1 打开driver

// Open MultiCam driver
MC.OpenDriver();

2.2 创建channel

// 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获取图片的数据,将图片数据转换为bitmap。如果接收到的是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 channel状态置为READY

// Prepare the channel in order to minimize the acquisition sequence startup latency
MC.SetParam(channel, "ChannelState", "READY");

3.  测试程序的编写

触发模式就用默认的连续触发。

将camfile的加载显示在界面上。

Demo界面只有Go和stop还有状态条,增加按钮打开/关闭相机和开始/停止采集。

曝光开始事件触发,帧开始count++;surface_processing事件触发,采图count++;获取失败事件触发,丢失帧count++。

代码绝对是运行不起来的,毕竟我是一个采集卡都没见过的人,纸上谈兵罢了哈哈哈

C#笔记 关于采集卡的更多相关文章

  1. 关于使用,NI采集卡+labview信号采集,问题交流【第二贴】

    *** 采集卡 NI PCI-6534:  max sample rate 20MHz:32位的数字输入,数字输出.  ***输入信号:    峰峰值,4.16V   最小值 -80mV    频率 ...

  2. Win 10 系统下研华采集卡Advantech Navi SDK虚拟demo设备安装方法

    研华的DAQNavi是其采集卡设备的.net编程SDK,安装了其通讯工具Navigator后,可以添加虚拟采集卡 demo device. 在Win10上,执行添加操作时,可能会出现添加失败,这是由于 ...

  3. 关于basler线阵相机和Mtrox采集卡的安装

    说明: 本系列博文是我自己研究生课题,采用做一步记录一步,在论文答辩结束或者机器设计结束之后才会附上源代码! 以前都是用opencv,直接拿个照片去处理,基本都是软件的使用,这次做课题要用到Matro ...

  4. 如何使用WinDriver为PCIe采集卡装驱动

    如何使用WinDriver为PCIe采集卡装驱动 第一步:使用WinDriver生成驱动 1.运行Drier Wizard 2.点击New host driverproject 3.在列表中,选择待安 ...

  5. 关于海康视频采集卡的简介---基于pci的插潮采集卡

    vga 640x480 qvga vga的1/4,宽高分别是vga的一半 (1)采集类型 海康威视 DS-2CE16A2P-IT3P 700TVL 1/3" DIS ICR 红外防水筒型摄像 ...

  6. 海康威视采集卡结合opencv使用(两种方法)-转

    (注:第一种方法是我的原创 ^_^. 第二种方法是从网上学习的.) 第一种方法:利用 板卡的API:  GetJpegImage 得到 Jpeg 格式的图像数据,然后用opencv里的一个函数进行解码 ...

  7. 【VS开发】【DSP开发】如何使用WinDriver为PCIe采集卡装驱动

    如何使用WinDriver为PCIe采集卡装驱动 第一步:使用WinDriver生成驱动 1.运行Drier Wizard 2.点击New host driverproject 3.在列表中,选择待安 ...

  8. 98-基于FPGA Spartan6 的双路光纤PCIe采集卡(2路光纤卡)

    基于FPGA Spartan6 的双路光纤PCIe采集卡(2路光纤卡) 1.板卡概述  板卡采用xilinx Spartan6系列芯片,支持 PCI Express Base Specificatio ...

  9. PCIE_DMA实例五:基于XILINX XDMA的PCIE高速采集卡

    PCIE_DMA实例五:基于XILINX XDMA的PCIE高速采集卡 一:前言 这一年关于PCIE高速采集卡的业务量激增,究其原因,发现百度"xilinx pcie dma",出 ...

  10. HDMI转USB视频采集卡(ACASIS 1080P高清视频采集卡)--九五小庞

    ACASIS阿卡西斯是深圳市菲德越科技有限公司旗下数码科技品牌.菲德越是2008年成立的一家专注于采集卡.硬盘盒.集线器等专业3C配件产品,集研发.设计.生产.销售于一体的高新科技公司,我们公司以向客 ...

随机推荐

  1. 重新点亮linux 命令树————用户和用户组的配置文件[八]

    前言 简单整理一下 正文 首先看下vim /etc/passwd 这个东西. 可以看到这些就是我们的用户表. 刚才我们创建的user1就在末尾了. 那么下面有这个x:1001:1001 这个是什么意思 ...

  2. LeetCode:999. 车的可用捕获量

    999. 车的可用捕获量 在一个 8 x 8 的棋盘上,有一个白色车(rook).也可能有空方块,白色的象(bishop)和黑色的卒(pawn).它们分别以字符 "R"," ...

  3. css 中的BFC

    一.是什么 我们在页面布局的时候,经常出现以下情况: 这个元素高度怎么没了? 这两栏布局怎么没法自适应? 这两个元素的间距怎么有点奇怪的样子? ...... 归根究底是元素之间相互的影响,导致了意料之 ...

  4. 力扣607(MySQL)-销售员(简单)

    题目: 表: SalesPerson 表: Company 表: Orders 编写一个SQL查询,报告没有任何与名为 "RED" 的公司相关的订单的所有销售人员的姓名. 以 任意 ...

  5. 阿里云张振尧:阿里云边缘云驱动5G时代行业新价值

    ​简介:近日,以"5G融合通信趋势下的技术创新"为主题的2021中国增值电信及虚拟运营高峰论坛在北京召开,阿里云边缘云高级产品专家张振尧发表了<阿里云边缘云驱动5G时代行业新 ...

  6. 2021云栖大会丨阿里云发布第四代神龙架构,提供业界首个大规模弹性RDMA加速能力

    ​简介: 10月20日,2021年杭州栖大云会上,阿里云发布第四代神龙架构,升级至全新的eRMDA网络架构,是业界首个大规模弹性RDMA加速能力. 10月20日,2021年杭州栖大云会上,阿里云发布第 ...

  7. [FAQ] 英文字母输入时变成了胖体

    如下,在输入法上右键,切换为 "半角" 即可. Link:https://www.cnblogs.com/farwish/p/17513598.html

  8. 2018-2-13-win10-uwp-从StorageFile获取文件大小

    title author date CreateTime categories win10 uwp 从StorageFile获取文件大小 lindexi 2018-2-13 17:23:3 +0800 ...

  9. Node.js 万字教程

    0. 基础概念 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使用了一个事件驱动.非阻塞式 I/O 模型,让 JavaScript 运行在服务端的开发平台. ...

  10. 2024-05-01:用go语言,给定两个长度为偶数n的整数数组nums1和nums2, 分别移除它们各自的一半元素, 将剩下的元素合并成集合s。 找出集合s中可能包含的最多元素数量。 输入:nums

    2024-05-01:用go语言,给定两个长度为偶数n的整数数组nums1和nums2, 分别移除它们各自的一半元素, 将剩下的元素合并成集合s. 找出集合s中可能包含的最多元素数量. 输入:nums ...