1.2 软件设计方案
为了能够在LabVIEW中充分利用其他编程语言的优势,LabVIEW提供了强大的外部程序接口能力。这些接口包括DLL,C语言接口(CIN),ActiveX,.NET,DDE,Matlab等。通过DLL,可以方便地调用c,VC,VB等编程语言编写的程序以及Windows自带的大量API函数。动态链接库(Dynamic LinkLibrary,DLL)是一个可以多方共享的程序模块,内部对共享的例程和资源进行了封装。动态链接库文件的扩展名一般是.dll,DLL和可执行文件(exe)非常相似,最大的区别在于DLL虽然包含了可执行代码却不能单独执行,必须由Windows应用程序直接或间接调用。
因此,开发上层应用软件的首要工作是DLL动态链接库的开发,在这里DLL动态链接库采用VC++6.0进行开发。LabVIEW调用DLL示意图如图4所示,由于DLL能够调用API函数与USB设备进行通信,而采用NI公司的虚拟仪器软件开发平台LabVIEW可以充分发挥虚拟仪器的灵活性。因此,将两者优势结合起来,该设计的虚拟示波器用户控制面板具有界面友好,操作直观等优点,通过面板上的各种控件便可实现数据的采集、存储、再现及分析等功能。
2 软件设计
软件设计是虚拟仪器开发的必备环节。基于LabVIEW与USB的虚拟仪器的软件设计分为4部分:主机操作系统上的客户驱动程序、主机应用程序、Ez-USB FX2的固件程序以及FPGA软件。
2.1 驱动程序
主机软件部分包括USB客户驱动程序和主机应用程序。USB客户驱程序是支持即插即用功能的标准WDM驱动程序,它为实现控制传输、中断传输和批传输提供了标准接口函数。一般情况下Cypress公司所提供的客户驱动程序已经能够满足需求,如果有特别的需求,可以在其基础上开发自己的驱动程序。
2.2 应用程序LabVIEW调用DLL
主机应用程序是系统与用户的接口,需要一个图形用户界面来控制所调用的函数,这里采用LabVIEW来编写应用程序。它通过调用DLL与驱动程序进行通信,以完成对外设的数据传输。在编写用户程序时,首先要建立与外设的连接,然后才能实施数据的传输。在DLL程序中主要用到2个API函数:一是利用Create-File得到USB句柄;二是利用DeviceIoControl来向设备驱动程序发送请求,完成在EZ-USB FX2中数据批传输的读取与写入。
采用LabVIEw来设计这里的应用程序,关键是通过Call Library Function节点来调用前面所编写DLL文件中的各个函数。该节点位于Functions Palette的Connectivity |Libraries & Executables | Call LibraryFunction Node,如图5所示。
通过CLF节点来调用前面所编写的DLL步骤如下:
(1)单击该节点将其放置在程序框图中,此时该节点没有与任何DLL连接;
(2)右击该节点并选择Configure选项或者直接双击该节点可以打开库函数配置对话框;
(3)在该模块的属性设置中选择DLL文件中所包含的某个函数,然后再设置好函数的返回类型和参数类型。这样就可以使LabVIEW调用DLL文件中的一个函数(针对DLL中的每个函数都需要设置一个CallLibrary Function Node)。最后把该模块的另一端连接到显示模块,就可以显示从USB接口读进的数据。