1. Dalsa 线扫相机 SDK 下载和安装
https://blog.csdn.net/mao0514/article/details/
1) 首先去官方网站下载 SDK
2) 安装 SDK 和 Sapera: 目前 8.6 版本包含完整的配置以及 CamExpert 工
具。安装包括 GigE 摄像机和帧抓取器的开发包。
3) 帮助文件,或者说开发指南,在 D:\DALSA\Help 目录下;例程在 Demos 目
录下,Binaries 文件夹中是生成好的 exe 文件;Classes 目录下是 VC++的项
目源代码。不用挨个文件夹的打开,直接根据你 Visual Studio 版本打开下
面的相应的 sln 文件即可。
2. Sapera 帮助文档
Sapera LT 是一套用于图像采集、显示和控制的独立于硬件以外的 C 和 C++
软件库(SDK),支持所有 DALSA Coreco 硬件平台。它的综合功能集包括程序可
移植性、多样化的相机控制、灵活的显示和管理功能,以及易于使用的应用开发
向导。Sapera LT 与 Microsoft Visual Studio C/C++、.Net、Visual Basic 6.0
和 Borland C++ Builder 兼容,支持 Windows XP、2000 和 NT 平台。
1)
Sepera.Net 介绍
Sapera.NET 是用于 Sapera LT 的应用程序编程接口(API)。它提供了直接
从使用 visualstudio 中的.NET 框架编写的托管应用程序访问 Sapera LT++API
的功能。NET 提供了高级类,降低了应用程序代码的复杂性,而其体系结构反映
了底层的 Sapera LT 体系结构。这为用户提供了高度的灵活性,同时保持了面向
对象代码的简洁性和紧凑性;
NET 类包含可用于许多图像处理应用程序的常用 Sapera 代码。这些类用于
用户界面,与硬件无关。它们涉及成像的基本概念的应用程序,如采集、数据传
输、处理和显示。它们的主要目的是通过显著减少对低级 Sapera LT 函数的调用
次数来简化应用程序代码。独立于硬件的类允许一个应用程序通过同一个 API
控制不同的 Teledyne DALSA 设备。它还保证无缝迁移到任何未来的 Teledyne
DALSA 硬件产品,由 Sapera LT 支持。模块化架构为用户提供了高编程灵活性和
可读性。
2)Sepera 架构
Sapera LT 模块化架构允许应用程序分布在不同的 Sapera LT 服务器上。每
台服务器既可以在主机上运行,也可以在 Teledyne-DALSA 设备上运行。Sapera LT
调用通过 Sapera LT 消息传递层以完全独立于底层的方式路由到不同的服务器
硬件。
3)使用 C#创建 Sepera 应用程序
1. 需要插入引用 using DALSA.SaperaLT.SapClassBasic 和;
2.
3. Sepera++
Sapera++是 Sapera LT 为用户提供的 API. Sapera++ 包含两大类:基础应用
类(Basic Classes)和 GUI 类(GUI Classes)。
Dalsa 的所有类及相互关系:
1. 基础应用类:提供了用户进行图像开发的基本函数,命名方式为 Sap+
类功能名:详见 https://blog.csdn.net/liubing8609/article/details/
SapAcquisition:功能:控制与板卡相连接的采集设备
常用函数:
1) SapAcquisition
Create 创建低级别的 Sapera 资源
Destroy 此方法释放低级别的 Sapera 资源,为 bool 类型,如果成功销毁,
就为 ture,否则为 false;
ApplyLut 重新编写一个采集查找表
GetParameter
SetParameter
GetSignalStatus
IsSignalStatusAvailable
2) SapTransfer.
该类主要用于实现数据的传输功能,从一个源节点传输到目标节点;传
输节点一般为 sapcacquisition、SapAcqDevice、SapBuffer;
Destroy():
Wait(int timeout):timeout 是指等待的最大时间;等待数据传输完全
终止。在继续之前,您可能需要调用 Wait after Snap,以确保传输了所需
数量的帧。在使用 Grab 启动连续传输并以 Freeze 结束后,您应该明确地调
用 Wait。如果指定的超时过期,而传输仍未完成,则 Wait 将返回一个错误。
此错误的常见原因是某种硬件故障。在这种情况下,调用 Abort 方法无条件
地终止传输。
bool Snap(int count);count 是指传输帧的数量,传输有限数量的帧(如
果使用没有参数的此方法版本,通常为 1 帧)从当前 SapTransfer 对象中所
有传输对的源节点到目标节点。默认情况下,传输是异步启动的。您可能需
要立即调用 Wait 方法快照后确保正确同步。
Grab():连续传输图像。连续传输总是异步启动的,也就是说,不执行
显式检查来验证以前的传输是否仍处于活动状态。如果要执行此检查,则首
先需要调用 Wait 方法。
bool Freeze();为当前连续传输发出停止请求(从 Grab 方法开始)。
实际的数据传输只有在当前帧被完全传输之后才会结束,所以应该在冻结之
后立即调用 Wait 方法以确保正确的同步。
3) SapManager:
Sap Manager 类包括描述系统上存在的 Sapera 资源的方法。 它还包括错
误管理功能。此类不能被显式的实例化;
GetResourceCount: 获取服务器上特定类型的 Sapera 资源的数量;
GetServerCount:获取可用服务器的数量;
4) SapBuffer: SapBuffer 类包括操作缓冲区资源数组的功能。数组包含具
有相同维度、格式和类型的缓冲区资源。缓冲区对象可以用作目标传输节点,以
允许将数据从源节点(如采集或其他缓冲区)传输到缓冲区资源。 它还可以用
作源传输节点,以允许将数据从缓冲区资源传输到另一个缓冲区。 缓冲区数组
允许在所有缓冲区中循环传输。缓冲区对象可以使用 SapView 类显示,并使用
SapProcessing 类进行处理。
SapBuffer(int count(缓冲资源数),int width( 所有缓冲区资源的宽度
(以像素为单位),int height(所有缓冲区资源的高度(按行)),SapFormat format
(所有缓冲区资源的数据格式),SapBuffer.MemoryType type(缓存的存储类
型));
MemoryType.Contiguous:缓冲区分配在 Sapera 连续内存中,这是 Sapera
在启动时保留的一大块不可分页和不可移动内存。 因此,缓冲区数据包含在单
个内存块中(而不是分段)。 这些缓冲区可以用作传输资源的源和目的地。
MemoryType.ScatterGather:适用于缓冲区在非连续内存中分配。 页面
被锁定在物理内存中,这样就可以构建一个分散聚合表。 这允许分配非常大的
缓冲区作为传输资源的源和目的地。 可以分配的最大内存量取决于可用内存、
操作系统和使用的应用程序。
IsBufferTypeSupported: 检查采集的资源是否支持数据传输到特定的
缓冲区类型
5) SapBufferWithTrash:SapBuffer 的派生类,称为 trash buffer 的附加
资源。常用于实时图像处理操作中,当数据传送速度比处理速度快时,图象将被
保存在 trash buffer 中,直到能够稳定输出;
扩展:DMA 传输:直接存储器存取(DMA Direct Memory Access)方式是用硬
件实现存储器与存储器之间或存储器与 I\O 设备之间直接进行高速数据传送,不
需要 CPU 的干预。这种方式通常用来传送数据块。
6) SapFeature 目的是从 SapAcqDevice 类中检索单个特征信息。 SapAcq
Device 支持的每个功能都提供了一组功能,如名称、类型、访问模式等,可以
通过 SapFeature 获得。SapAcq 设备的 GetFeatureInfo 方法允许访问这些信息。
GetValueMax 方法:获取特征的最大可接受值
7) SapXferNode
SapXferNode 类可实现操作传输节点对象的功能。SapXferPair 类使用其
中的两个对象来创建传输对。然后 SapTransfer 类使用此对来实现传输配置。
但此类为抽象类,不能对其进行实例化,所以在应用程序中会使用它的一个
派生类。以下所有类都直接从 SapXferNode 派生:sapcacquisition,
SapAcqDevice、SapBuffer、SapBufferRoi 和 SapBufferWithTrash。
8) The SapProcessing 类
SapProcessing 类是实现自己的处理所需的基类,
9) SapXferNotifyEventArgsaa 类
该类包含
4. 相关英文词汇
1.
2.
3.
4.
5.
6.
7.
8.
9.
configuration 配置,结构
memory buffers 内存缓冲区
Subsequent 随后的
Trigger 触发;起因/n
library architecture 库架构
exhaustive 详尽的
Templates pane 模板窗格
derived classes 派生类
Encapsulate 封装、压缩
10.
Allocates 分配
11.
Timestamp 时间戳 (时间戳是使用数字签名技术产生的数据,签名的对
象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和
管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时
间之前已经存在。)
12.
Planar Monochrome 平面单色
13.
asynchronously 异步的
14.
Verify 验证
15.
explicit 显式的