新闻中心

EEPW首页 > 测试测量 > 设计应用 > LabVIEW应用于实时图像采集及处理系统

LabVIEW应用于实时图像采集及处理系统

作者: 时间:2010-09-26 来源:网络 收藏

  4.图像采集及图像处理

  4.1调用动态链接库驱动图像采集卡

  NI公司针对自己生产的图像采集卡附带有卡的驱动和管理程序,对于普通的I/O卡,还不能直接被所应用,必须采取其他方法。提供了4种调用外部程序代码的途径:端口直接操作、调用库函数节点(Call Library Function Node即CLFN)调用DLL(Dynamic Link Library动态连接库)、使用CIN(Code Interface Node,外部代码节点),调用Active X控件。其中端口直接操作,利用PortIn.Vi和PortOut.vi功能,此法应用简单,但无法实现较复杂的接口功能。而采用动态链接库,可以根据具体需要编写适当的程序,灵活利用的各项功能。较其余三种具有明显的优势。用户可以调用Windows标准的动态连接库(DLL),也可以调用用户自己编制的DLL,实现LabVIEW与硬件的连接。

  建立一个DLL需要的文件有:①h函数声明文件(可选,可包含在c源文件里);②c源文件(必需);③def模块定义文件(如果是使用标准调用或函数输出必需添加关键字__declspec (dllexport) 函数名)。H文件的作用是声明DLL要实现的函数原型,供DLL编译使用,同时还提供应用程序编译使用。C文件是实现具体文件的源文件,它有一个入口点函数,在DLL被初次调用的运行,做一些初始化工作。一般情况下,用户无须做什么初始化工作,只需保留入口点函数框架即可。def文件是DLL项目中比较特殊的文件,它用来定义该DLL项目将输出哪些函数,只有该文件列出的函数才能被应用函数调用。要输出的函数名列在该文件EXPORTS关键字下面。

  本系统在LabVIEW平台下调用动态链接库实现图像数据的采集主要分为五步:1.初始化并打开设备(DM642图像采集卡); 2.读取标志信号位,看是否初始化为默认值3.写入标志信号位,进行图像数据采集;4.对SDRAM中所存储的图像数据进行读取;5.关闭句柄并释放端口资源。主要调用动态链接库sd_pci64.dll的目标函数有PCI64_Open,PCI64_MemRead32和PCI64_Close,函数功能如下表所示:

  函数的具体参数如下:

  ①PCI64_API INT32 PCI64_Open( int BoardNum, PCI64_HANDLE * pHndl );

  BoardNum板口号(0-3),* pHndl 返回句柄的无符号指针,当返回值为0时,表示打开端口成功,非0时,表示失败。

  ②PCI64_API INT32 PCI64_MemRead32( PCI64_HANDLE Hndl, UINT32 Taddr, UINT32 Count , UINT32 * pData );

  获取由PCI64_Open传递的句柄指针,对目标地址存储的数据进行读取,需注意的是目标地址的寻址空间在4M之内,必须初始化一个所需目标数据大小的无符号32位数组空间。同样返回值为0时,表示成功,非0表示失败。

  ③PCI64_API INT32 PCI64_Close( PCI64_HANDLE Hndl );

  需要注意的是,在每次调用PCI64_MemRead32完成读取后,都要将端口关闭,释放地址空间。

  具体的调用过程如下:首先在新建的VI的Block Diagram中,Function> Advanced子菜单中添加Call Library Function Node控件,然后对其进行配置,添加该节点后进行配置的对话框如下图2所示:

图2调用CLFN配置框图



评论


相关推荐

技术专区

关闭