xxxxxx 通信工程系毕业设计论文
持COM对象的应用程序中使用如Visual C++isual Basic LabWindows/CVI LabVIEW通过OM组件以同其他用户共享已经开发的算法,并且可以免费地随同COM应用程序发布MATLAB算法。
LabVIEW在其Function Communication Activex模块中提供了一组与组件操作相关的子VI其中Automation Open节点打开一个与COM对象相连的Refnum然后该Refnum能够被传递给模块中的其他函数节点从而实现具体的COM对象操作最后Close Automation节点关闭Refnum。
利用COM技术MATLAB Builder for COM能够将低速执行的M文件编译成二进制的COM组件嵌入到LabVIEW程序中这种方法对于规模较大性能速度内存管理要求较高的LabVIEW应用程序来说是非常有利的。
3.利用动态链接库技术。
动态链接库(DLL)是基于Windows程序设计的一个重要的组成部分在LabVIEW下利用DLL技术调用MATLAB首先是用m文件翻译器Matcom将MATLAB的源文件翻译cpp代码并编译为DLL文件然后用LabVIEW提供的调用库函数(Callibrary Function CLF)节点在LabVIEW中实现DLL函数的调用。
该方法必须安装Matcom但是Matcom对class类和图形窗口的支持不够使得图像处理的一些功能不能使用无法画出像MATLAB中那样精细的图像。
比较以上三种方法可知利用动态链接库的方法不适合调用MATLAB进行图像处理利用COM组件可以完成调用MATLAB图像处理的功能但比较繁琐适合于大型系统设计利用MATLAB Script节点可以方便地完成MATLAB图像处理功能满足一般需求开发出小型高效的虚拟仪器系统。LabVIEW的每个程序就是一个VI它包括前面板和框图程序窗口两部分在LabVIEW中利用MATLAB Script实现MATLAB图像处理方法为在框图程序窗口中通过Functions Palette Mathematics Formula MATLAB Script打开MATLAB Script节点可以直接在其框图中写入MATLAB图像处理程序也可以在框图中点击右键在弹出菜单中选择import在对话框中选择要导入的图像处理M程序文件即完成了节点程序的写入一般情况下推荐使用后者在MATLAB环境下编译通过的M文件导入节点可以节省调试时间提高开发效率在框图内书写或调用文件时要保证每一条语句的完整性或者完整写在一行或者分行要有连接符否则程序运行会产生错误。
4.1.3 LabVIEW与外设连接概述 实现LabVIEW对数据的采集和处理,传统的是采用数据采集卡,但是这些数据采集设备存在安装不便、价格昂贵、受计算机插槽数量、地址、中断资源的限制,可扩展性差,同时在一些电磁干扰性强的测试现场,可能无法专门对其做电磁屏蔽,从而导致采集的数据失真。在LabVIEW下使用USB总线,可以同样实现数据采集,并且弥补了采集卡的不足。
传统的用LabVIEW读写USB设备的方法是:先用VC“或Delphi编写动态链接库dll文件,在dll中通过调用WINAPI函数读写USB设备的数据,并存在缓冲区中,在LabVIEW中通过对DII文件的调用提取缓冲区中的数据。介绍了在LabVIEW下。通过调用NI—VISA子程序控件,实现与USB设备的直接通信,避免了二次编程的麻烦和数据的中转。
USB底层驱动开发工具有Windows DDK和第三方开发工具,如Driver studio和Wind river等,但是使用这些工具开发驱动难度大、效率底。在这里,介绍如何借用IabVIEW的NI—VISA子程序控件作为USB的底层驱动。
32
xxxxxx 通信工程系毕业设计论文
VISA(Virtual Instrument Software Architecture)是一个用来与各种仪器总线进行通讯的高级应用编程接口(API)。他不受平台、总线和环境的限制。通用串行总线(USB)是一个基于信息的通讯总线。这表示PC机与USB设备通过发送指令和数据进行通讯,而这些指令和数据是通过总线以文本或二进制数据的形式发送的。每个USB设备都有各自的指令集。可以使用NI—VISA的读写功能向仪器发送这些指令,并读取仪器的反馈。
I—VISA从3.0版开始支持USB通讯,他有2种VISA类函数(Resource Class),可以控制2类USB设备:USBINSTR设备与USBRAW设备。符合USB测试和测量类(USB TMC)协议的USB设备可以通过使用USBINSTR类函数控制,他们使用448.2标准通讯。对于这些设备,只需以与GPIB仪器通讯同样的方式,使用“VISA Open”,“VISA Close”“VISA Read”和“VISA Write”功能。USBTMC设备符合VISAUSBINSTR类函数能够理解的协议。USBTMC设备相对来说控制较为复杂,因为每个设备可以使用各自的通信协议,而这些通信协议一般都是由设备的生产厂家自定的。为了使用NI—VISA,必须先让Windows将NI—VI-SA作为设备的缺省驱动程序使用。在Windows环境中,可以通过INF文档做到这一点。INF文件是系统硬件设备配置文件,USB驱动程序通过INF文件中的PID(产品识别号)和VID(厂商识别号)识别USB设备。NI—VISA3.0中包含的VISA Driver Development Wizard(DDW)可以为USB设备创一个INF文档。下面简单介绍创建INF文档的过程:
(1)在安装了NI—VISA后,启动VISA Driver Development Wizard程序,出现了为PXI/PCI或USB设备创建个INF文档的向导,选择US设备,点NEXT,出现VI-SADDW基本设备信息窗口。
(2)进行这一步时,需要清楚USB的PID和VID。这些数字可以在安装USB设备的时候对其进行确认,并在想要与设备通讯的时候,寻找他的地址。依据USB的规格,两个数字都是16位16进制数字,并应该由设备制造商提供。例如在后面介绍基于USB的虚拟示波器用到USB接口芯片PDIUSBD12的PID和VID分别是0x0471和0x0666;这一步设置完成后,点击NEXT,进行最后一步的设置。
(3)USB Instrument Prefix(USB仪器前缀)只是一个描述符,可以用他来识别本设备所用的相关文档。在USB Instrument Prefix中输入相应信息,并在“output file directory”中选择存放这些文档的目录,然后点击Finish。INF文档就被建好并保存至指定的位置。
这时候,只要复制生成的INF文件夹拷到系统盘windows文件夹下INF文件夹,点击右键,安装即可。这时,插上US设备,Windows系统就能探测到,并根据INF硬件配置文件选择NI—VISA作为底层驱动程。在LabVIEW中,只需调用NI—VISA的相关控件,即可实现对USB设备的读写操作。
4.2 模块设计及图像合成
4.2.1 采集模块
在本实例设计中,由于是一步一步的采集图片,所以只需采集图片,然后把它放置在一个文件夹上。程序框图如图4-2所示。
33
xxxxxx 通信工程系毕业设计论文
图4-2 图像采集
图像采集的框图如图4-3所示。 开始 (初始化设备,申请资源) 参数设置 (分辨率,图像窗口,曝光时间) 采集图像到硬盘 (采取,读取,存储,停止) 结束 (释放资源)
图4-3 采集框图
利用labVIEW采集第一幅图像。图像如图4-4所示。
图4-4 第一幅图
34
xxxxxx 通信工程系毕业设计论文
停止程序的运行,移动摄像头5厘米左右。再点击开始运行程序采集第二幅图像。图像如图4-5所示。
图4-5 第二幅图
采集到的图像有两种途径传递,一是将采集的图像存放在某一段内存中,使用时LabVIEW从该内存中读取图像,应用于实时性要求高的系统;另一种途径是将图像存放在硬盘某一指定目录下,使用时LabVIEW从该目录下读取图像,应用于实时性要求不高的系统。本系统对实时性的要求不高,采用图像数据传输到计算机的内存中,利用位图函数将图像实时显示在计算机的屏幕上,同时保存到计算机硬盘,在 LabVIEW 使用图像的时候从硬盘加载图像。
4.2.2 3D图像的合成
本系统的图像处理功能是通过在LabVIEW 环境下调用MATLAB图像处理工具箱实现的,这里着重阐述图像处理功能的实现过程。
LabVIEW 与MATLAB之间图像参数的传递:
在LabVIEW下设置测量参数和界面设计,通过MATLAB Scrip节点调用 MATLAB图像处理程序完成3D图像的处理。LabVIEW 的每个程序就是一个VI,它包括前面板和框图程序窗口两部分,前面板负责界面设计,框图程序完成功能的实现。图像通过Read BMP File子VI进行加载,图像通过Draw Flattened Pixmap子VI和显示控件显示在计算机屏幕上,传递到 MATLAB Script 节点进行图像处理,最后合成3D图片。
在 LabVIEW 中利用 MATLAB Script实现MATLAB图像处理方法为:
在框图程序窗口中,通过Functions Palette-Mathematics-Formula-MATLAB Script,打开 MATLAB Scrip节点,可以直接在其框图中写入MATLAB图像处理程序,也可以在框图中点击右键 ,在弹出菜单中选择“import”,然后在对话框中选要导入的图像处M程序文件即完成了节点程序的写入。一般情况下推荐使用后者,在 MATLAB 环境下编译通过M 文件导入节点可以节省调试时间 , 提高开发效率。在框图内书写或调用文件时要保证每一条语句的完整性,或完整写在一行,或分行但要有连接符,否则,程序运行会产生错误。调用 MATLAB Script 的程序如图4-6所示。
35
xxxxxx 通信工程系毕业设计论文
图4-6 MATLAB程序的调用
MATLAB Script节点的参数传递可通过添加输入输出完成 。在节点边框上单击鼠标右键,在弹出菜单中选择“Add Input”或“Add Output”,注意数字图像是以矩阵格式存储的,所以输入输出图像的数据格式选择为 Real Matrix。在此程序框图中,前面加载的图像通过两个Input节点传至 MATLAB Scrip 节点中,图像经过MATLAB的程序合成3D图像,然后通过Draw Flattened Pixmap 绘图显示在LabVIEW的前面板上,从而完成 MATLAB与LabVIEW的混合编程。合成的结果如图4-7所示。
图4-7 合成的图像
需要注意的是目前 MATLAB Script 功能还只能在32位Windows操作系统平台上实现。
36

