收藏 分享(赏)

LabWindowsCVI入门之第三章:计算机外设开发.doc

上传人:精品资料 文档编号:9907715 上传时间:2019-09-18 格式:DOC 页数:30 大小:1.27MB
下载 相关 举报
LabWindowsCVI入门之第三章:计算机外设开发.doc_第1页
第1页 / 共30页
LabWindowsCVI入门之第三章:计算机外设开发.doc_第2页
第2页 / 共30页
LabWindowsCVI入门之第三章:计算机外设开发.doc_第3页
第3页 / 共30页
LabWindowsCVI入门之第三章:计算机外设开发.doc_第4页
第4页 / 共30页
LabWindowsCVI入门之第三章:计算机外设开发.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、LabWindows/CVI 入门之第三章:计算机外设开发通过上一章节的学习,大家已经掌握了在 CVI 下开发 GUI 应用程序的基本步骤和基本方法。CVI 的重要应用是工业接口通信、复杂的数据采集和仪器控制系统的开发,所以对于学习CVI 来说仅仅掌握 GUI 程序的开发还远远不够。实际生产生活中,有些设备要求能够满足军用或工业领域恶劣环境或极端天气下对于可靠性的要求,有些设备要求能够满足快速大容量数据的持续传输的要求,有些设备要求能够满足防尘防水防暴防震防撬的要求,有些设备要求满足低成本的要求,纷繁的要求导致了不同的接口标准以及接口协议的诞生。仅仅掌握了 CVI 下 GUI 的编程只能说是对

2、 CVI 入门,却没有充分的体会到 CVI 的精华。在纷繁的接口与个性化的需求下,开发简捷高效、稳定易用、用户体验良好的程序才是我们学习 CVI 的终极目标。3.1 计算机组件编程在本节中,我们将会接触到在 CVI 下进行文件操作、音频播放、OpenGL 操作、SQL 数据库查询、剪贴板操作、动态数据交换、ActiveX 控件操作、调用.Net 操作等相关内容。在介绍相关内容时,我们只介绍原理与 CVI 对应的函数功能,具体使用方法需要大家查询CVI 的帮助文档。3.1.1 在 CVI 中进行文件操作在程序运行时,常常需要将一些数据(运行的最终结果或中间数据)输出到磁盘上存放起来,以后需要时再

3、从磁盘中输入到计算机内存。这样就需要对文件进行读写操作,LabWindows/CVI 中对文件读写操作的常用函数如下:(1) OpenFile 打开一个文件用以读或者写,函数返回文件句柄;(2) CloseFile 关闭指定的文件;(3) ReadFile 从文件中读取指定字节数的内容到字符串缓冲区;(4) WriteFile 将字符串缓冲区中指定字节数的内容写到文件中;(5) ArrayToFile 将数组内容保存到文件中;(6) FileToArray 从文件中读取数据存储到数组中。(7) ReadLine 从文件读取字节直到换行。(8) WriteLine 将缓冲区中指定的字节数写入文件

4、中,同时换行。(9) DeleteFile 删除文件(10) RenameFile 重命名文件(11) CopyFile 复制文件下面给出了一个简单的新建 test.txt 文件,并且向文本文件中写入字符并读出来的例子。该函数运行之后,将在工程文件夹下新建一 test.txt 的文本文件,文件内容如图 3-1 所示。程序运行结果如图 3-2 所示。图 3-1 文本文件内容图 3-2 程序运行结果与文件读写有关的函数可以在 Formatting and I/O Library 的 File I/O 中找到,与文件操作有关的函数可以在 Utility Library 的 File Utilitie

5、s 中找到,与文件夹有关的函数可以在 Utility Library 的 Directory Utilities 中找到。另外,ANSI C 中对文件的操作的函数如 fopen、fread、fputs 等函数在 CVI 中仍然可以使用。3.1.2 网络通信:在 CVI 中调用 TCP 库在测控领域,随着网络计算、远程监控与远程诊断等在仪器仪表领域的应用与发展,网络通信已经成为仪器的基本功能。CVI 也提供了 Internet 库、TCP 库、DataSocket 库以供用户使用。Internet 库主要提供了 FTP 协议、Telnet 协议以及 POP3 协议的客户端的函数支持。TCP 库主

6、要提供了基于 TCP 协议的网络数据收发函数。DataSocket 库提供了比 TCP 更加方便有效的 NI 推出的 DataSocket 的操作函数。在本小节的介绍之前,我们假设大家已经知道了 TCP/IP 协议、FTP 协议、POP3 协议、HTTP 协议、Telnet 协议以及他们之间的相互关系,知道了 IP 地址、子网掩码、DNS、网关是什么。若对以上问题有含糊之处,建议立即通过 Google 等手段理解这些概念。本节主要介绍 TCP 通信的相关内容。利用 TCP 函数库进行网络传输都要涉及服务器端和客户端。TCP 服务器可以通过网络向用户应用程序发送数据和从客户应用程序接收数据。TC

7、P 客户可以向 TCP 服务应用程序发送连接请求,并从服务器接收数据和向服务器发送数据。服务器需要注册,注册以后等待客户向它发送连接请求,而客户只能向已经存在的服务器发送连接请求。运行 TCP 服务器应用程序的计算机一般叫做主机。服务器端的传输控制函数如下:(1) RegisterTCPServer 注册 TCP 服务器(2) ServerTCPRead 从客户端读取数据(3) ServerTCPWrite 向客户端发送数据(4) UnregisterTCPServer 注销 TCP 服务器(5) DisconnectTCPClient 断开与客户端的连接要是程序成为 TCP 服务器,必须要运

8、行 RegisterTCPServer 函数。客户端的传输控制函数如下:(1) ConnectToTCPServer 连接到 TCP 服务器(2) ClientTCPServer 从服务器读取数据(3) ClientTCPWrite 向服务器写数据(4) DisconnectFromTCPServer 断开与 TCP 服务器的连接另外 CVI 的 TCP 库还提供了 TCP 的回调函数,并提供了连接开始(TCO_CONNECT)、断开连接(TCP_DISCONNECT)以及数据有效(TCP_DATAREADY)3 种消息。下面给出了一个简单的建立 TCP 服务器,并通过客户端连接 TCP 服务

9、器的例子。在该示例程序中,TCP 服务器运行后客户端向服务器发送“Hello,Im client.”的文本信息,服务器向客户端返回“OK”信息。TCP 服务器代码如下:TCP 客户端的代码如下:TCP 服务器与 TCP 客户端的程序分别保存在两个不同的工程中。运行时,先运行 TCP服务器程序,再运行 TCP 客户端程序,运行效果如所示。图 3-3 TCP 示例程序运行结果3.1.3 网络通信:在 CVI 中调用 Internet 库Internet 库主要提供了 FTP 协议、Telnet 协议以及 POP3 协议的客户端的函数支持。FTP 是应用层的协议,它基于 TCP 协议,负责进行文件的

10、传输。CVI 通过封装隐藏了一些底层的 FTP 操作 ,提供了两个方便的 FTP 操作函数:(1) InetFTPAutoSend 将本地的文件传输到指定的远程服务器主机上(2) InetFTPAutoRetrieve 将指定远程服务器上的文件传输到本机上。Telnet 协议也是应用层的协议,同样基于 TCP 协议,是 Internet 远程登陆服务的标准协议和主要方式。CVI 提供了对 Telnet 操作的以下函数:(1) InetTelnetOpen 建立 Telnet 连接(2) InetTelnetRead 从 Telnet 服务器中读取数据(3) InetTelnetWrite 向

11、Telnet 服务器写数据(4) InetTelnetClose 关闭 Telnet 连接(5) InetTelnetReadUntil 从 Telnet 服务器中读取数据,直到遇到指定字符或达到指定字节数或者超时(6)InetTelnetRunScript 在 Telnet 服务器上执行指定的脚本POP3 也是应用层的协议,基于 TCP 协议,规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件。POP3 协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件。CVI 提供了对 POP3操作的以下函数:(1) InetPop3O

12、pen 连接 POP3 服务器(2) InetPop3Close 关闭与 POP3 服务器的连接(3) InetPop3GetNumMessages 获取 POP3 服务器上的消息数量(4) InetPop3GetMessageSize 获取 POP3 服务器上消息的大小(5) InetPop3GetMessageInfo 获取 POP3 服务器上邮件的具体信息(6) InetPop3DeleteMessage 删除 POP3 服务器上的消息(7) InetPop3GetMessage 获取 POP3 电子邮件消息头与内容(8) InetPop3ParseMessageHeader 解析 PO

13、P3 邮件的消息头3.1.4 网络通信:在 CVI 中调用 DataSocket 库DataSocket 技术是 NI 公司推出的面向测控领域的网络通信技术。DataSocket 技术基于 Microsoft 的 COM 和 ActiveX 技术,对 TCP/IP 协议进行高度封装,面向测量和自动化应用,用于共享和发布实时数据 DamSockd 能有效地支持本地计算机上不同应用程序对特定数据的同时应用,以及网络和不同计算机的多个应用程序之间的数据交互,实现跨机器、跨语言、跨进程实时数据共享。在测试测量过程中,用户只需要知道数据源和数据库及需要交换的数据就可以直接进行高层应用程序的开发,实现高速

14、数据传输,而不必关心 底层的实现细节,从而简化通信程序的编写过程、提高编程效率。DataSocket 包括 DataSocket Server Manager(以下简称 Manager),DataSocket Server 和 DataSocket API 一部分。Manager 是一个独立运行的程序,主要功能有:设置 DataSocket Server 连接的客户端程序的最大数目和创建数据项的最大数目:创建用户组和用户;设置用户创建和读写数据项的权限;限制身份不明的客户对服务器进行访问和攻击。例如,将 Manager 中的Default Reader 设置为 everyhost,则网中的每台

15、客户计算机都可以读取服务器上的数据。Manager 对 DataSocket Server 的配置必须在本地计算机上进行,而不能远程配置或通过运行程序来配置。DataSocket Server 是一个必须运行在服务器端的程序,负责监管 Manager 中所设定的具有各种权限的用户组和客户端程序之间的数据交换。DataSocket Server 通过内部数据自描述格式对 TCP/IP 进行优化和管理,简化 Internet 通信方式,提供自由的数据传输,可以直接传送虚拟仪器程序所采集到的布尔型、数字型、字符串型、数组型和波形等常用类型的数据。它可以和测控应用程序安装在同一台计算机上,也可以分装在

16、不同的计算机上,以便用防火墙进行隔离来增加整个系统的安全性。DataSocket Server 不会占用测控计算机 CPU 的工作时间,测控应用程序可以运行得更快。使用 DataSocket 技术进行通信时服务器和客户端得计算机上笔形都进行 DataSocket Server。DataSocket API 提供独立的接口,用于不同的语言平台内部多种数据类型的通读。在LabVIEW 中,DataSocket API 被制作成 ActiveX 控件和一系列功能 VI(Virtual Instrument),用户可以方便地使用。一般由服务器进行数据采集,根据需要将测量地数据写入 DataSocket

17、 数据公共区,然后客户端通过网络从数据公共区读取所需地测量数据。DataSocket 库函数介绍如下。(1) DS_Open 创建 DataSocket 对象并连接到数据源(2) DS_DiscardObjHandle 释放 DataSocket 句柄和它占用的相关资源(3) DS_GetDataType 获取 DataSocket 对象的数据类型(4) DS_GetDataValue 获取 DataSocket 对象相关的数据值(5) DS_SetDataValue 设置 DataSocket 对象相关的数据值(6)DS_Update 在写连接,把 DataSocket 对象的属性和数据写到

18、 DataSocket 服务器;在读连接,从 DataSocket 服务器读取 DataSocket 对象的属性和数据(7) DS_SelectURL 允许终端用户选择连接的 DataSocket URL(8) DS_FreeMemory 释放 DataSocket 库函数占用的内存(9) DS_GetLibraryErrorString 返回描述库错误的字符串DataSocket 是一个独立于平台的解决方案,限于篇幅,此处不再给出 DataSocket 的示例程序,感兴趣的同学可以通过 CVI 安装目录下的 samples 中 datasocket 相关部分自行学习。3.1.5 在 CVI

19、中使用音频动画在许多测控系统中,常常需要加入音频、图像、动画或具有互动功能的 3D 模型。在本节中,我们将会详细介绍如何向应用程序中添加这些控件。图像在程序中添加图像相对比较简单,CVI 中直接提供了图像控件,通过控件的帮助文档很容易掌握在 GUI 中添加图像以及通过程序更改图像的方法。动画动画控件是由 Picture Ring(图像列表)控件转化而来,在编辑界面添加PictureRing 之后,通过菜单-File-Open-Function Tree(*.fp),打开 CVI 安装目录下toolslibcustctrlanimate.fp 文件,在 CVI 窗口的左下角即出现 Animati

20、on Control 的库。库中提供了如下四个函数:(1) AnimateCtrl_Create 直接创建动画控件(此函数会自动在编辑界面添加Picture Ring 控件,但不会自动给 Picture Ring 添加图片)(2) AnimateCtrl_ConvertFromPictRing 将 Picture Ring 控件转换为动画控件(3) AnimateCtrl_SetAttribute 设置动画控件的属性(4) AnimateCtrl_GetAttribute 获取动画控件的属性另外在最新版的 CVI 中,Picture 控件提供了 gif 的支持,用户可以直接添加 gif 动画。

21、音频同样 CVI 也提供了对音频播放功能的支持。CVI 只提供了对 wav 文件播放的支持,若需要支持其他格式的文件需要调用其他的 dll 文件完成。函数为:sndPlaySound 播放指定文件路径的 wav 文件OpenGLCVI 默认提供对 OpenGL 的支持,函数库文件为 cviogl.fp,位于 CVI 安装目录的toolslibcustctrlcviogl.fp。该函数库文件包含了控件与作图两个子类的函数,可以完成创建、更新、删除 OpenGL 控件以及获取 OpenGL 控件属性等功能。尤其需要注意的是,我们不仅可以使用 cviogl.fp 中提供的函数,OpenGL 中通用的

22、glau.lib、glu32.lib、opengl32.lib 库中的所有函数都可以使用。也就是说,OpenGL 强大的功能也可以在 CVI 环境下发挥的淋漓尽致。OpenGL 本身就是一个功能强大的库,目前很多 3D 游戏都是基于 OpenGL 设计,此处篇幅所限不再展开,感兴趣的读者可以将以前写的 OpenGL 代码移植到 CVI 环境下。3.1.6 在 CVI 中使用 SQL ToolKitLabWindows/CVI SQLToolkit 是一个用来访问数据库的软件工具包。工具包里包含了一个用来完成一般数据库任务的高级函数集。在其基础上,可实现定制任务等高级功能的开发。LabWindo

23、ws/CVI SQL 工具包提供若干 ODBC 数据库驱动器,工具包符合 ODBC 标准,因此对任何符合 ODBC 数据库驱动器均可使用。常见的 Microsoft Office Access 支持的.accdb、.mdb 文件都可以通过 ODBC 数据库驱动器使用。SQL Toolkit 并不随 CVI 的安装发行包一起安装,用户若想使用 CVI 开发数据库需要额外从 NI 的官方网站下载:ftp:/ CVI SQL Toolkit 进行数据库操作通常由以下五步完成:连接数据库-激活 SQL 连接-处理 SQL 语句-断开 SQL 连接-断开数据库。图 3-5 提供了使用 SQL Toolk

24、it 实现数据库操作的流程图,一般对 ODBC 数据库进行操作都是根据图 3-5 的说明依次调用内部的函数实现的。连接数据库CVI 提供的连接数据库的函数只有一个:DBConnect。DBConnect 的参数为 ODBC 连接字符串。ODBC 连接字符串可以在 ODBC 数据源管理器(在“开始菜单”-“程序”-“管理工具”-“数据源 (ODBC)”中打开)的系统 DSN 中添加。如图 3-4 所示的第一个数据库的连接字符串应该为:“DSN=CVI SQL Samples“激活 SQL 连接CVI 提供了两种激活 SQL 连接的方式:自动 SQL 和显式 SQL。自动 SQL 对应图 3-5

25、的DBBeginMap 及下面的系列函数,只能构造简单的 SELECT 语句和 CREATE TABLE 语句。显式SQL 对应图 3-5 的 DBActivateSQL 及下方的系列函数,可以执行更复杂的 SELECT 语句以及其他语句。处理 SQL 语句使用 SELECT 语句必须将选择的字段绑定到程序中的变量上。接着用取值函数获取所选记录。每次调用取值函数,工具包将列变量拷贝到在程序中绑定的变量。更新行或创建行时还可用绑定的变量,即更新行或创建行时将新值拷贝到绑定的变量并随后调用适当的函数,将程序中的数据添加到数据库对应的字段。CVI SQL Toolkit 提供了 DBMapColum

26、nTo函数以及 DBBindCol 函数(如图 3-5),帮助用户绑定数据库的对应数据到变量中。断开 SQL 连接SQL 操作后,应该断开 SQL 连接来释放系统资源。对于自动 SQL 连接,使用DBDeactivateMap 函数,对于显式 SQL 连接,使用 DBDeactivateSQL 函数。断开数据库连接数据库操作结束后,应该断开数据库连接来释放系统资源。CVI 提供了 DEDisconnect断开连接。具体的函数使用说明参见 CVI 安装目录中 bincvisqlref.chm 的帮助文件。图 3-4 ODBC 数据源管理器图 3-5 CVI SQL Toolkit 函数库使用流程

27、图从上面的图 3-5 可以看出,若不需要绑定变量,则可使用 DBImmediateSQL 执行一个SQL 语句,更加方便快捷。下面的例子给出了从数据库的 USERS 表中查找用户 ID 为 2 的用户名与用户年龄的完整代码。USER 表数据库参见图 3-6。其中 ID 为自动编号类型,UserName 为文本类型,Age为数字类型。运行代码前,需要实现在数据源 ODBC 管理器中添加数据源名为“CVI SQL Samples”的 mdf 文件。图 3-6 数据库 USERS 表3.1.7 在 CVI 中使用剪贴板与动态数据交换(DDE)剪贴板(ClipBoard)与动态数据交换(DDE,Dyn

28、amic Data Exchange)都是用于用于应用程序交换数据共享信息的工具和途径,广泛应用于 Windows 操作系统中。CVI 对于剪贴板提供了四个函数,分别提供了向剪贴板中写入文本、图像以及从剪贴板中读出文本、图像的功能。(1) ClipboardPutText 向剪贴板拷贝文本格式的数据(2) ClipboardPutBitmap 向剪贴板拷贝位图格式的数据(3) ClipboardGetText 从剪贴板中读取文本格式的数据(4) ClipboardGetBitmap 从剪贴板中读取位图格式的数据使用 DDE 通讯需要两个 Windows 应用程序,其中一个作为服务器处理信息,另

29、外一个作为客户机从服务器获得信息。客户机应用程序向当前所激活的服务器应用程序发送一条消息请求信息,服务器应用程序根据该信息作出应答,从而实现两个程序之间的数据交换。DDE 最早是随着 Windows3.1 由微软公司提出的,虽然目前很多软件支持 DDE,但是目前诸多公司已经停止了对 DDE 的支持。DDE 通常用来在程序中实现导出数据保存为 Excel 或者 Word 中,但是 CVI 提供了效率更高更易用的 ActiveX 控件的功能,可以达到同样的目的。3.1.8 在 CVI 中进行 ActiveX 控件操作ActiveX 是 Microsoft 对于一系列策略性面向对象程序技术和工具的称

30、呼,其中主要的技术是组件对象模型(COM),可被其他应用程序编程驱动,实现特殊的程序间调用功能。COM 组件(ActiveX 控件)可由不同语言的开发工具开发,VC、PowerBuilder 等编程开发工具均可开发 ActiveX 控件。ActiveX 在广义上是指微软公司的整个 COM 架构,但是现在通常用来称呼基于标准 COM接口来实现对象连接与嵌入的 ActiveX 控件,常常用于在 IE 中增加丰富的扩展功能。而在本教程中,我们提到的 ActiveX 控件均指的广义上的 ActiveX 控件,即基于 COM 模型的开发组件。点击 CVI 菜单 Tools-Create ActiveX

31、Controller,打开创建 ActiveX Controller Wizard,点击 Next 即可发现有大量可供我们使用的 ActiveX 控件。通过添加适当的ActiveX 控件,我们不仅可以从常用的 Office 软件中写入、读取数据,操作数据库,获取与 Matlab 的接口以使用 Matlab 进行数据处理,还可以利用AutoCAD、QQ、IE、PowerDesigner、SolidWorks 等诸多领域主流的软件的组件进行相关程序的编写。限于篇幅,本节只以一个实例向大家介绍使用 ActiveX 控件开发应用程序的基本过程与方法。在这个实例中,我们将通过 Microsoft Exc

32、el 9.0 Object Lib 这个 ActiveX 控件打开 Excel 文件并向其中写入 099 这 100 个数据并将 Excel 文件保存在指定位置。假设我们计算机上安装了 Office2000。单击 CVI 菜单 Tools-Create ActiveX Controller,点击下一步,在 ActiveX Server 选项中找到 Microsoft Excel 9.0,点击下一步,选择函数库.fp 文件保存的位置之后,CVI 即在当前工程中添加了Microsoft Excel 9.0 Object Lib 的相关库文件。若在计算机上安装的 Office 版本不是 2000,那

33、也没关系,从 CVI 安装目录中的“samplesactivexexcel”中找到 excel2000.fp、excel2000.h、excel2000.obj 和excel2000.sub 文件,将此四个文件复制到工程目录下,将 fp 文件添加到当前工程中之后同样可以达到添加 Microsoft Excel 9.0 Object Lib 库的功能。在工程的 C 语言文件中输入以下代码:上面的例子运行后,将会在系统的 D 盘根目录下多出一份叫做 123.xls 的 Excel 文件。打开 Excel 文件之后,发现 Excel 中数据如所示。图 3-7 ActiveX 控件示例程序运行结果在上

34、面的例子中,我们依次通过获取 Excel 的程序句柄、获取 Excel 的工作簿组句柄、获取 Excel 的工作簿句柄、获取 Excel 的工作表组句柄、获取 Excel 的工作表句柄、获取Excel 第一个工作表句柄,最终获取 Excel 工作表的范围句柄。获取了 Excel 工作表句柄之后便可对工作表指定区域内的内容进行操作了。操作结束之后,务必将获取的句柄逐个销毁,否则会导致系统资源被占用,生成的文件被占用,无法进行后续操作。利用 ActiveX 控件在 CVI 下可以实现诸多有用的功能,但是仍然不可避免的存在有的ActiveX 控件无法找到的问题。在 Windows 下可以“开始菜单”

35、-“运行”中输入 regsvr32命令以注册 Active 控件。详细信息可自行通过帮助文档或者 Google 查找。3.2 自动化测试接口编程3.2.1 综述自动化测试系统(ATS,Automatic Test System)是指测试仪器在计算机的控制下,向被测对象按照一定的时序和顺序提供激励,同时对被测对象在该激励下的响应进行测量的系统。自从 20 世纪 70 年代惠普正式推出了第一种测试总线 GPIB 以来,先后出现了GPIB、VXI、PXI 以及 LXI 等大量测试总线。此外,在 PC 接口方面,PCI、ISA、RS232、USB、1394、CAN 等总线也得到了广泛的发展和利用,也有

36、不少总线如 ISA 总线因为带宽难以满足当今大部分的需求而逐渐退出历史舞台。GPIB 总线是在美国 HP 公司一种 1965 年推出的的仪器接口系统 (HP-IB)发展起来的。GPIB 接口具有以下基本特性:测试系统所使用的全部仪器和计算机均通过一组标准母线相互连接,仪器“并联”在系统内部,同时仪器之间可以直接 “通话”。 GPIB 总线的母线由 16 条信号线构成,其器件容量为 15 台,在 GPIB 系统中,GPIB 接口共定义了 10 种接口功能:控者功能、讲者功能、听者功能,源方挂钩功能、受方挂钩功能,服务请求功能、并行查询功能、远程控制本功能、器件触发功能、器件清除功能。在 2007

37、 年的第三季度,由测试与测量领导厂商发布的新型仪器中,超过 80%含有 GPIB 接口。VXI 总线(VMEbus Extensions For Instrumentation)是于 1987 年推出的总线规范 ,根据器件支持的通信协议,VXI 器件分成 4 类:消息基器件、寄存器基器件、存储器器件、扩展器件。一个 VXI 机箱具有 13 个扩展槽 (1 个系统槽和 12 个仪器模块槽)。PXI 总线(PCI Extensions for Instrumentation)是 1997 年发布的总线规范。 PXI是 PCI 总线在仪器领域的扩展,与 CompactPCI 兼容,可提供同步、触发和

38、时钟等方面的信号,一个 PXI 机箱具有 8 个扩展槽 (1 个系统槽和 7 个仪器模块槽)。LXI 总线((LAN Extension for Instrument)是由国际 LXI 联盟(LXI Consortium)针对 GPIB 传输速率低、VXI 机箱昂贵并且需要零槽控制器、PXI 尺寸电源以及 EMI 方面等问题而提出的一种低成本小体积的灵活的自动化测试总线技术。LXI 在以太网的物理标准下,基于以太网的基础,提供了网络界面,并且具有可选择的触发方式(LAN,IEEE1588,Trigger Bus)。VXI、PXI、PXIe、LXI 都是 VME、PCI、PCIe、LAN 等 P

39、C 接口在自动化测试系统总线领域的延伸。不管是 VME-VXI、PCI-PXI、PCIe-PXIe 还是 LAN-LXI,基本的物理传输层都没有改变或仅加入了测试系统需要的时钟同步、触发等信号线,在上层的协议中也很少发生改变,仅某些接口的机械构造发生了相应的改变。所以,PC 上的接口驱动技术同样可以运用到自动化测试系统中。世界上没有任何一种总线是万能的,每一种总线都具有不同的带宽、时延、性能、软件支持、鲁棒性、体积、传输距离乃至成本等特性,通过了解系统需求选用最合适的总线技术才最重要。图 3-8 列出了常用的测试总线技术的带宽与延时的性能的比较。图 3-8 常用测试总线技术带宽与时延比较3.2

40、.2 GPIB 接口GPIB 是一种在业界已经得到证明的专为仪器控制应用设计的总线。GPIB 在过去 30 年来一直是鲁棒的、可靠的通信总线,由于其低时延和可接受的带宽的特点,GPIB 目前仍然是仪器控制中最常见的选择。GPIB 的优势在于为业界广泛采纳,并有超过 10,000 种仪器模型带有 GPIB 接口。由于其最大带宽为 1.8 MB/s,GPIB 最为适合与分立仪器通信,并对分立仪器进行控制。最新的高速版 HS488 将带宽提高到 8 MB/s。GPIB 中的数据传递采用基于信息的通信模式,并最常使用 ASCII 字符。多个 GPIB 仪器可以通过电缆连接,其总距为 20 米,带宽为总

41、线上的所有仪器共享。虽然 GPIB 的带宽相对较低,但其时延要比 USB 尤其比以太网低得多(即性能好)。尽管 GPIB 有目前最好的软件,而且稳定的线缆和连接器也能适合最恶劣的物理环境,但 GPIB 仪器在连接到系统时,并不能自动检测或自动配置。对于现有仪器的自动化或要求高度专业化仪器的系统,GPIB 是理想的选择。图 3-9 GPIB 接口外观图 3-10 GPIB 接口引脚图除了地线外,GPIB 接口一共具有 16 条信号线,分别为 8 条信号线(D1D8)、3 条挂钩线(DAV、NRED、NDAC)以及 5 条管理线(ATN、IFC、REN、EOI、SRQ)。各条线缆的作用如下:(1)

42、 D1D8:8 条数据线,既可做输入又可做输出(2) DAV(Data Valid):数据有效线,用于源方向受方发出通知可以从数据线上拉取数据(3) NRED(Not Ready For Data):数据没有准备好,用于受方向源方发出通知以告知源方不能在数据线上传递消息(4) NDAC(No Data Accepted):数据未接受:用于受方向源方通知至少还有一个器件尚未从数据线上拉取数据(5) ATN(Attention):注意线,表示数据线上的数据是由现在总线上的主控器件发出的(6) IFC(Interface Clear):接口清除线,用于现在总线上的主控器件要求其他器件的接口回到指定的

43、初始状态(7) REN(Remote Enable):远控可能线,用于现在总线上的主控器件发送 REN 消息,以使得接收者进入远地程控状态(8) EOI(End Or Identify):结束或识别线,用于现在总线上的主控器件或者源方发送 END(结束)消息或者 IDY(识别)消息。(9) SRQ(Service Request):服务请求线,由由服务请求的各器件共同使用,是各器件的逻辑或。CVI 对 GPIB 提供了函数库并提供了诸多强大的函数:(1) OpenDev 寻找一个未使用的 GPIB 设备并打开设备(2) ibdev 打开设备同时设置 GPIB 参数(3) ibfind 通过设备

44、名称获取设备的唯一描述符(4) Ibpad 设置 GPIB 板主地址(5) Ibsad 设置 GPIB 板辅助地址(6) Ibbna 设置访问的 GPIB 板(7) Ibtmo 设置超时限制(8) Ibeos 设置字符串结束标志(9) Ibeot 设置传输结束后是否发送消息(10) Ibdma 设置是否启动直接内存访问模式(11) Ibrsc 设置 GPIB 请求或者放弃系统控制(12) Ibconfig 设置配置参数(13) Ibask 获得配置参数(14) ibrd 从设备中读出指定长度的数据(15) ibrda 从设备中一部读出指定长度的数据(16) ibrdf 从设备中读出数据并储存在

45、指定的文件中(17) ibwrt 向设备写入指定长度的数据(18) ibwrta 向设备异步写入指定长度的数据(19) ibwrtf 从指定文件中向设备写入数据(20) ibstop 终止指定设备的异步 I/O 操作(21) ibInstallCallback 安装 GPIB 回调函数以上函数的详细使用说明参见 CVI 帮助文档,限于篇幅,此处不再做具体的示例与说明。3.2.3 RS232 接口RS-232 标准是美国电子工业协会(EIA)等于 1969 年开发并公布的通信协议,适用于传输速率在 020kb/s 的异步数据传输。串行接口是计算机通信必不可少的标准配置,几乎每一台计算机、外设、智

46、能仪器都配有标准串行接口。采用标准串行接口后,各种计算机、外部设备、智能仪器就能有机的连接起来进行串行通信。为方便用户进行 RS-232 编程,LabWindows/CVI 提供了 RS-232函数库。RS-232C 的机械指标规定: RS-232C 接口通向外部的连接器 (插针插座) 是一种 “D”型 25 针插头。由于 25 芯中有许多是不常用的,IBM-PC 对其进行了简化,取了其中的常用的 9 芯,构成了 9 芯 RS-232C 串行接口,使其成为一种事实上的串行接口标准配置。RS-232C 的“D”型 9 针插头引脚定义如图 3-11 所示。图 3-11 “D”型 9 针插头引脚定义

47、图RS-232C 标准接口中的主要信号是“发送数据”和“接收数据” ,它们用来在两个系统或设备之间传送串行信息。对于异步通信,传输的串行位数据信息的单位是字符。图 3-12 示出了 RS-232C 以位串行方式传输数据的格式,这是微机系统中最通用的格式。7 位 ASCII 码数据的连续传送由最低有效数字位开始,而以奇偶校验位结束。应当指出,RS-232C 标准接口并不限于 ASCII 数据,事实上还可有 5 到 8 个数据位,后加一奇偶校验位,并有 1 或 2 位停止位。图 3-12 串行数据传输格式在电性能方面,这一标准使用负逻辑。逻辑 1 电平是在-15V 到-5V 范围内,逻辑 0电平则

48、在+5V 到+15V 范围内。 它要求 RS-232C 接收器必须能识别低至+3V 的信号作为逻辑 0,而识别高至-3V 的信号作为逻辑 1,这意味着有 2V 的噪声容限。RS-232C 进行数据传输的最高速率为 20KB/S,通信距离最长为 15m。作为 PC 上最常用的工业接口之一,CVI 提供的 RS-232 库同样具有强大的功能。常用的 RS-232 库函数如下:(1) OpenComConfig 打开一个串行并进行相关的参数设置(2) CloseCom 关闭一个串行口(3) ComRd 从指定串行口的输入队列读取若干字节的信息(4) ComRdByte 从指定串行口的输入队列读取一个

49、字节的信息(5) ComWrt 向指定串行口的输出队列写若干字节的信息(6) ComWrtByte 向指定串行口的输出队列写一个字节的信息(7) FlushInQ 清空指定串行口的输入队列(8) FlushOutQ 清空指定串行口的输出队列(9) GetInQLen 获取指定串行口输入队列内的字符数(10) GetOutQLen 获取指定串行口输出队列内的字符数(11) InstallComCallback 为指定串行口设置一个回调函数下面即是一个向环境参数测量的单片机发送“gettemp”命令获取当前的温度值并且读取返回的值的例子。编译以上代码,假设编译生成的 exe 程序名称为 ComTest_dbg.exe,在命令行中输入“ComTest_dbg.exe gettemp”,则程序运行结果如图 3-13 所示。图 3-13 获取温度值运行结果3.2.4 VXI、PXI 通信(VISA)VXI、PXI 作为应用最为广泛的自动化测试总线之一,在工业及自动化测试领域得到了广泛的应用。为此类设备开发驱动程序可以使用微软公司的 WDM(Win32 Driver Model)模型进行开发,但由于自动化测试总线的高速发展,这样的驱动开发方法工作量相对

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报