logo资料库

LabWindowsCVI教程.pdf

第1页 / 共358页
第2页 / 共358页
第3页 / 共358页
第4页 / 共358页
第5页 / 共358页
第6页 / 共358页
第7页 / 共358页
第8页 / 共358页
资料共358页,剩余部分请下载后查看
前 言
第1 章 绪论
1.1 LabWindows/CVI 简介
1.2 LabWindows/CVI 程序开发概述
1.2.1 在LabWindows/CVI 中使用C 语言
1.2.2 LabWindows/CVI 的程序结构
1.3 LabWindows/CVI 6.0 的新特性
1.4 安装LabWindows/CVI 6.0
第2 章 LabWindows/CVI 的开发环境
2.1 载入、运行和编辑源程序
2.1.1 LabWindows/CVI 的主要窗口
2.1.2 源代码编辑工具
2.1.3 操作用户界面
2.1.4 LabWindows/CVI 的GUI 控件
2.2 生成交互式代码
2.2.1 访问用户界面库
2.2.2 函数面板
一、 函数面板控件
二、 函数面板帮助
三、 绘制曲线
四、 从函数面板插入代码
五、 分析数据
六、 在函数面板上输出数值
七、 再调出函数面板
八、 完成程序
2.3 执行和调试程序
2.3.1 单步执行
2.3.2 断点
2.3.3 显示和编辑数据
一、变量显示窗口
二、 编辑变量
三、数组显示窗口
四、编辑数组
五、字符串显示窗口
六、监视窗口
七、图形数组显示窗口
第3 章 LabWindows/CVI 应用程序设计
3.1 图形用户界面
3.1.1 用户界面编辑器
3.1.2 源代码连接
3.1.3 代码生成器
3.1.4 建立用户界面文件
3.2 使用函数面板和函数库
3.2.1 源代码分析
3.2.2 生成随机数组
3.2.3 构建工程
3.2.4 运行完整的工程
3.3 添加分析功能
3.3.1 修改用户界面
3.3.2 编写回调函数
3.3.3 运行程序
3.4 用户事件处理
3.4.1 用户事件
一、什么是用户事件
二、用户界面控件模式
三、用户事件及其意义
3.4.2 回调函数
一、回调函数的模式
二、回调函数的顺序
三、使用回调函数响应用户界面事件
四、事件处理
第4 章 基本函数库
4.1 用户界面库(User Interface Library)
4.1.1 面板(Panel)操作
LoadPanel:将面板装载到内存中
DisplayPanel:显示面板
DiscardPanel:删除面板
HidePanel:隐藏面板
GetPanelAttribute:获得面板属性
SetPanelAttribute:设置面板属性
4.1.2 用户界面管理(User Interface Management)
RunUserInterface:运行用户界面
QuitUserInterface:退出用户界面
4.1.3 菜单结构
一、菜单的设计
LoadMenuBar:装载菜单条到内存中
SetPanelMenuBar:放置菜单到指定的面板中
4.1.4 控件/曲线图/带状图(Controls/Graphs/Strip Charts)操作
一、通用函数
GetCtrlAttribute:获取控件属性值
SetCtrlAttribute:设置控件属性值
GetCtrlVal:获得控件当前值
SetCtrlVal:设置控件的值
二、 列表控件函数
InsertListItem:向列表控件中增加内容
DeleteListItem:删除列表控件中的内容
ReplaceListItem:替换列表控件中的内容
三、文本框函数
InsertTextBoxLine:向文本框中插入字符串
DeleteTextBoxLines:删除文本框中多行文本
GetNumTextBoxLines:获取文本框中文本行的个数
GetTextBoxLine :从文本框获得文本内容
ReplaceTextBoxLine:替换文本框中的某一行文本
DeleteTextBoxLine:删除文本框中某一行文本
四、曲线图控件函数
PlotXY:将一组数据x 值相对于一组数据y 值绘成图线
DeleteGraphPlot:删除图表(Graph)控件中一条或多条曲线
PlotX:沿y 方向将一组数据x 值相对于其索引值绘成曲线
PlotY:沿x 方向将一组数据y 值相对于其索引值绘成曲线
4.1.5 弹出面板函数
一、 信息弹出面板
ConfirmPopup:显示一个弹出对话框,等待用户选择“YES”或“NO”按钮
MessagePopup:显示一个消息对话框,等待用户选择“OK”按钮
二、 文件/路径弹出面板
FileSelectPopup:显示一个文件选择对话框,等待用户选择一个文件或退出。
DirSelectPopup:显示一个路径选择对话框,等待用户选择一个路径或退出
4.2 格式化和输入/输出库(Formatting and I/O Library)
4.2.1 文件输入/输出(File I/O)
ArrayToFile:将数组内容保存到文件中
FileToArray:从文件中读取数据存储到数组中
GetFileInfo:获取文件的大小(字节数)
OpenFile:打开一个文件用以读或者写,函数返回文件句柄
CloseFile:关闭指定的文件
ReadFile:从文件中读取指定字节数的内容到字符串缓冲区
WriteFile:将字符串缓冲区中指定字节数的内容写到文件中
4.2.2 字符串处理(String Manipulation)
StringLength:返回字符串NUL 前面字符占用的字节数
StringLowerCase:返回字符串NUL 前面字符占用的字节数
StringUpperCase:将字符串中所有小写字母转换成大写字母
CompareStrings:比较两个字符串中指定位置的字符
CompareBytes:比较两个字符串中指定位置的字符所占用的字节数
CopyString:将字符串中指定位置的字符拷贝到另一字符串中
CopyBytes:将字符串中指定字节的内容拷贝到另一字符串中
4.2.3 数据格式化(Data Formating)
Fmt:将一个或多个源数据(item)格式化到一个目标数据变量中
Scan:将一个源数据(item)格式化到一个或多个目标数据数据中
4.3 实用函数库(Utility Library)
4.3.1 定时/等待(Timer/Wait)
Delay:等待规定的时间(以秒为单位)。
Timer:返回从第一次调用Timer、Delay 函数或第一次操作定时控件后所经历的时间
4.3.2 日期/时间(Date/Time)
DateStr:返回以MM-DD-YYYY 形式由十个字符组成的字符串(其中MM 代表月,
TimeStr:返回以HH:MM:SS 形式由8 个字符组成的字符串(其中HH 代表时、MM 代
GetSysemDate:以数字形式获得系统日期
SetSysemDate:设定系统日期。
GetSysemTime:以数字形式获得系统时间。
SetSysemTime:设定系统时间。
4.3.3 文件应用(File Utilities)
DeleteFile:删除已经存在一个或一组文件。
RenameFile:更改已经存在一个或多个文件的文件名
CopyFile:将存在的一个(或一组)文件的内容拷贝到其它的一个(或一组)文件中。
GetFileSize:获得文件占用的字节数。
GetFileDate:获取文件的日期
SetFileDate:设置文件的日期
GetFileTime:获取文件的时间。
SetFileTime:设置文件的时间。
GetFileAttrs:获得文件的属性。
SetFileAttrs:设置文件的属性
4.3.4 路径应用(Directory Utilities)
GetDir:在默认驱动器上获得当前工作目录。
GetProjectDir:获得当工程文件所在目录的目录名。
4.3.5 IO 端口(Port IO)
inp:从端口读一个字节数据
inpw:从端口读一个字数据。
inpd:从端口读双字数据
outp:向端口写一个字节数据。
outpw:向端口写一个字数据。
outpd:向端口写双字数据。
4.4 RS-232 函数库(RS-232 Library)
4.4.1 RS-232C 接口介绍
4.4.2 RS-232 函数库概述
4.4.3 RS-232 编程举例
第5 章 高级函数库
5.1 高级分析库
5.1.1 概述
5.1.2 应用举例
步骤1:分析信号的生成
函数Clear1D
函数Add1D
函数SinePattern
函数WhiteNoise
函数GaussNoise
步骤2:加窗和滤波
函数Copy1D
函数Bw_LPF和高通滤波器函数Bw_HPF
三角窗函数原型
海明窗函数原型
海宁窗函数原型
布拉克曼窗函数原型
凯塞窗函数原型
函数Spectrum
5.2 TCP 库
5.2.1 网络化仪器
5.2.2 TCP 协议与TCP 库
5.2.3 TCP 服务器程序设计
步骤1:设计程序界面,生成程序框架
步骤2:设计主程序
函数RegisterTCPServer
函数UnregisterTCPServer
函数GetTCPHostAddr
函数GetTCPHostName
步骤3:设计TCP 服务器回调函数
函数GetTCPPeerAddr
函数GetTCPPeerName
函数SetTCPDisconnectMode
函数ServerTCPRead
函数DisconnectTCPClient
函数GetHostTCPSocketHandle
步骤4:设计向客户发送数据的程序。
函数ServerTCPWrite
步骤5:程序结束断开与客户程序连接。
5.2.4 TCP 客户程序设计
步骤1:设计程序界面,生成程序框架。
步骤2:设计主程序
函数ConnectToTCPServer
函数DisconnectFromTCPServer
步骤3:设计TCP 客户回调函数。
函数ClientTCPRead
步骤4:设计向服务器发送数据的程序。
函数ClientTCPWrite
步骤5:程序结束断开与服务器程序连接
函数GetTCPErrorString
5.3 DataSocket 库
5.3.1 DataSocket 介绍
5.3.2 DataSocket 发送数据程序设计
步骤1:设计程序界面,生成程序框架。
步骤2:设计主程序
函数DS_ControlLocalServer
步骤3:创建DataSocket 对象并连接到数据源。
函数DS_Open
函数DS_DiscardObjHandle
步骤4:设计写DataSocket 对象数据程序
函数DS_SetDataValue
函数DS_Update
步骤5:断开连接释放DataSocket 对象。
步骤6:程序结束停止DataSocket 服务器程序。
5.3.3 DataSocket 接收数据程序设计
步骤1:设计程序界面,生成程序框架。
步骤2:设计主程序,创建DataSocket 对象并连接到数据源。
步骤3:设计写DataSocket 回调函数读取DataSocket 对象数据。
函数DS_GetDataType
函数DS_GetDataValue
步骤4:断开连接释放DataSocket 对象。
5.4 工具库(Tools Library)
5.4.1 工具库简介
5.4.2 密码设计
步骤1:设计程序界面,生成程序框架
步骤2:设计主程序,加载密码输入面板
函数PasswordCtrl_ConvertFromString
函数PasswordCtrl_SetAttribute
步骤3:设计密码输入面板中控件的回调函数。
函数PasswordCtrl_GetAttribute
5.4.3 工具条设计
步骤1:设计程序界面,生成程序框架。
步骤2:在主程序加入设计工具条的函数
函数Toolbar_GetAttribute
函数Toolbar_Discard
函数Toolbar_New
函数Toolbar_InsertItem
函数Toolbar_GetIndexFromDescription
函数Toolbar_GetCtrlFromDescription
函数Toolbar_DimItem
函数Toolbar_GetItemAttribute
函数Toolbar_SetItemAttribute
函数Toolbar_Display
步骤3:设计控制工具条属性的回调函数
函数Toolbar_SetAttribute
步骤4:程序结束停止,删除工具条
5.4.4 分页界面设计
步骤1:在原来的基础上设计程序界面。
函数EasyTab_ConvertFromCanvas
函数EasyTab_LoadPanels
5.4.5 系统托盘设计
步骤1:在原来的基础上设计程序界面
步骤2:在主程序加入系统托盘代码。
函数InstallSysTrayIcon
函数RemoveSysTrayIcon
函数AttachTrayIconMenu
函数DetachTrayIconMenu
函数InsertTrayIconMenuItem
函数SetTrayIconMenuAttr
函数SetTrayIconMenuItemAttr
步骤3:设计系统托盘事件的回调函数。
步骤4:程序结束停止,清除系统托盘弹出式菜单和系统托盘。
第6 章 数据库应用程序开发—SQL Toolkit
6.1 概述
6.1.1 SQL Toolkit 功能概述
6.1.2 SQL Toolkit 2.0 的安装
6.2 入门
6.2.1 数据库基本概念
6.2.2 结构化查询语言(SQL)
6.2.3 ODBC
一、ODBC标准
二、ODBC管理器
三、第三方ODBC数据库驱动器
6.2.4 TABLE 控件
一、表格控件概述
二、表格控件操作
三、表格控件基本编程
1.创建和删除单元格
2.选定单元格
3.单元格的赋值
4.单元格、行和列的属性
5.搜索和分类
6.用户自定义弹出式菜单
四、表格控件编程实例
1. 源代码连接设置
2. 控制设置
3. 控件外观
4. 行(Row)和列设置(Column)
5. 标签属性
6.3 数据库基本操作
6.3.1 SQL Toolkit 数据库操作基本步骤
步骤1. 连接数据库
步骤2. 激活SQL连接
步骤3. 处理SQL语句
步骤4. 断开SQL连接
步骤5. 断开数据库
6.3.2 使用SQL Toolkit 的函数库
一、函数概述
二、连接数据库
三、使用自动SQL(映射)
四、使用显式SQL语句
五、取记录
六、插入记录
七、更新记录
八、删除记录
九、删除表
十、信息函数
1. 数据源信息
2. SELECT语句信息
十一、事务处理
十二、错误检查
6.4 数据库高级操作
6.4.1 设置连接属性
6.4.2 设置语句属性
6.4.3 操作复合语句
一、参数化语句
二、替代的数据访问方法
三、多线程支持
第7 章 高级程序设计
7.1 DLL 和Windows SDK
7.1.1 DLL 的基础知识
一、动态链接和静态链接
二、DLL 的优点
三、DLL 和EXE
7.1.2 创建和调试DLL
一、在LabWindows/CVI 中创建DLL
1.DllMain 函数
2.导出DLL 函数和变量
(1) 头文件法
(2) 导出关键字法
3.创建DLL 的一些建议
二、调试DLL 的方法
1.在LabWindows/CVI 中运行一个程序
2.运行一个外部进程
7.1.3 使用DLL
一、用LoadExternalModule 调用工程中的文件
二、用LoadExternalModule 调用非工程文件中的库或对象
7.1.4 Windows SDK 概述
1.LabWindows/CVI 自动载入SDK 导入库
2.Windows SDK 的头文件
3.用Windows SDK 函数实现用户界面
7.1.5 Windows SDK 编程实例
7.2 多线程
7.2.1 概述
一、 进程和线程
二、 多线程程序
三、 多线程的优点
1.避免阻塞
2.减少运行过程和用户界面的相互影响
3.最大程度利用多处理器的性能
7.2.2 两种多线程机制
一、线程池
二、异步定时器
7.2.3 多线程间的数据保护
一、为什么要保护数据
二、需要保护的数据种类
三、如何保护数据
1. 线程锁
2. 线程安全变量
(1)使用线程安全变量宏定义
(2)把数组作为线程安全变量使用
(3)把多个变量合并为一个线程安全变量
(4)监测GetPointerToVarName 的不匹配调用
3. 线程安全队列
7.2.4 防止死锁
7.2.5 监视和控制次线程
7.2.6 线程的优先级
7.2.7 线程局部变量
7.2.8 其它一些要注意的问题
一、消息处理
二、在独立的线程中执行回调函数
三、为一个线程设定首选的处理器
第8 章 ActiveX 技术
8.1 ActiveX 技术简介
8.2 使用ActiveX 控件
8.2.1 设计带有ActiveX 控件的应用程序
1.选择ActiveX 控件
2.设置ActiveX 控件
3.生成ActiveX 控件驱动程序
8.2.2 需要注意的问题
1.使用用户界面库
2.ActiveX 文档对象
3.线程
8.3 创建ActiveX 服务器
8.3.1 COM 应用程序、对象和接口
8.3.2 创建ActiveX 服务器工具
一、创建ActiveX 服务器向导
二、编辑ActiveX 服务器对话框工具
1.编辑接口
2.编辑方法和特性
3.编辑对象
8.3.3 生成的代码
1.头文件(MyServer_axs.h)
2.源文件(MyServer_axs.c)
3.IDL 文件(MyServer_axs.idl)
8.3.4 ActiveX 库——服务器函数
1.初始化函数
2.全局数据函数
3.对象函数
4.高级函数
8.3.5 联编并发布ActiveX 服务器
8.3.6 ActiveX 注册
8.3.7 COM 线程模式
8.3.8 调试ActiveX 服务器
8.3.9 一些建议、提示和技巧
第9 章 虚拟仪器软件设计
9.1 虚拟仪器概述
9.2 VPP 规范
9.2.1 VPP 规范概述
9.2.2 虚拟仪器软件结构(VISA)
一、VISA 概述
二、VISA 的结构
三、VISA 的资源
9.3 仪器驱动程序开发
9.3.1 VPP 仪器驱动程序模型
一、外部接口模型
二、内部设计模型
9.3.2 VISA 函数的应用
一、用VISA 函数操作仪器的步骤
二、 VISA 的数据类型
三、 VISA 函数
9.3.3 函数面板的设计
9.3.4 动态链接库的生成
9.4 仪器软面板的设计
9.4.1 VPP 仪器软面板
9.4.2 软面板的设计
一、软面板的规划
二、软面板图形界面的建立
三、软面板程序代码设计
9.4.3 可执行文件的生成
9.4.4 帮助文件的制作
一、生成帮助文件的步骤
二、生成帮助文件的方法
9.5 安装盘的制作
9.5.1 VPP 规范的安装要求
9.5.2 制作安装盘
9.6 IVI 驱动程序
9.6.1 仪器可互换性
9.6.2 IVI 驱动程序的结构
9.6.3 IVI 驱动程序的其他功能
9.6.4 IVI 驱动程序开发向导
9.6.5 IVI 驱动程序与VPP 驱动程序
前 言 LabWindows/CVI 是 National Instruments 公司(美国国家仪器公司,简称 NI 公司)推出 的交互式 C 语言开发环境。LabWindows/CVI 将功能强大、使用灵活的 C 语言与用于数据 采集分析和显示的测控专业工具有机地结合起来,它的集成化开发环境、交互式编程方法、 函数面板和丰富的库函数大大增强了 C 语言的功能,为熟悉 C 语言的开发人员建立检测系 统、自动测试环境、数据采集系统、过程监控系统、虚拟仪器等提供了一个理想的软件开 发环境。鉴于 LabWindows/CVI 的上述特点,它已经成为测控领域最受欢迎的软件开发平 台之一,在我国已经得到了较为广泛的使用。 本书详细地介绍了 NI 公司 2001 年的最新版本 LabWindows/CVI 6.0 软件开发环境,以 及使用 LabWindows/CVI 6.0 设计和开发测试控制软件的基本方法和步骤。主要内容包括: LabWindows/CVI 6.0 的集成开发环境,面板、控件和菜单的设计,交互式代码生成,程序 的调试工具,用户界面编程,基本函数库,高级函数库, LabWindows/CVI 下的 Windows SDK 编程,使用和开发动态链接库,多线程技术,ActiveX 技术,网络编程,数据库编程, 符合 VPP 规范的仪器驱动程序及软面板开发等。 LabWindows/CVI 6.0 对先前的版本作了一些改进,并增添了一些功能,增添的主要功 能及所作的改进如下:(1)用户界面编辑器中创建 ActiveX 控件;(2)创建或者编辑 ActiveX 服务器向导;(3)用户界面库中新增的 3D 控件;(4)支持多字节字符的应用; (5)新增的源代码浏览器;(6)新增的图形数组浏览窗口;(7)工作台;(8)可以定 制用户界面控件;(9)安装盘制作工具采用了微软的安装技术。 全 书 分 为 9 章 。 第 1 章 首 先 对 LabWindows/CVI 作 以 简 介 , 如 何 安 装 运 行 LabWindows/CVI、LabWindows/CVI 6.0 的新特性、LabWindows/CVI 的程序开发概述,以 及全书的结构。第 2 章介绍 LabWindows/CVI 的入门知识,介绍 LabWindows/CVI 的程序 开发环境,如何载入、运行和编辑源程序,常用的窗口、控件、菜单和对话框的使用等等。 如何生成交互式代码,如何执行和调试程序。第 3 章介绍 LabWindows/CVI 的应用程序设 计,并通过一个例程讲解 LabWindows/CVI 的编程方法。从使用 LabWindows/CVI 的界面 编辑器开始,介绍如何创建并编辑 GUI,如何使用函数面板和函数库,如何添加分析功能, 如何处理用户事件。第 4 章介绍 LabWindows/CVI 的基本函数库,着重通过程序的方式, 讲述如何利用用户界面函数来控制 GUI。同时,这一章还介绍了 LabWindows/CVI 的几个 特有的函数库,包括实用库、格式化库、I/O 库和 RS-232 库,并通过一些例程讲述如何使 用这些库函数。第 5 章是高级函数库的使用,本章介绍了 LabWindow/CVI 提供的高级分析 库、TCP 库,以及编程工具库。在程序设计中使用这些库函数可以大大简化编程的工作量。, 第 6 章介绍了数据库程序的应用,讲述了经常和数据库结合使用的表格控件,介绍了 NI 公司的 SQLToolkit 工具包,ODBC 的基本概念,并通过一个例程讲解数据库测控程序的开 发过程。第 7 章和第 8 章是 LabWindows/CVI 的高级编程部分,介绍了动态链接库的基本 概念,在 LabWindows/CVI 中如何使用和开发动态链接库。另外,还介绍了如何在 LabWindows/CVI 中使用 Win32 SDK 函数,如何开发多线程测控程序,ActiveX 控件使用 方法,以及利用向导创建 ActiveX 服务器的一般步骤。第 9 章结合一个实例介绍了使用 LabWindows/CVI 开发符合 VPP(VXI plug&play)规范的仪器驱动程序、软面板的方法,并 I
对 IVI 仪器驱动程序作以简单介绍。 本书内容丰富详实,实用性强。书中包含了各位编者多年来使用 LabWindows/CVI 进 行自动测试系统软件开发工作的经验。书中提供了大量典型的例程,建议读者对这些例程 上机练习,加深体会,以便通过这些例程尽快掌握 LabWindows/CVI 的编程技术。 本书由哈尔滨工业大学自动化测试与控制研究所的张毅刚担任主编,乔立岩担任副主 编。参加本书的编写工作的还有彭宇、孙宁、刘旺、黄灿杰、俞龙江、赵光权。硕士研究 生俞洋同学,也为本书的出版作了许多技术工作。哈尔滨工业大学自动化测试与控制研究 所孙圣和教授对本书的编写工作十分关心和支持,给予了热情的指导。此外,哈尔滨工业 大学自动化测试与控制研究所的许多同志也为本书的出版,提供了有利的支持,并提出了 许多宝贵的修改建议。在此,对他们一并表示衷心地感谢。 本书可作为工科院校仪器仪表、自动化测试与控制专业的本科生、研究生学习掌握 LabWindows/CVI 编程技术的教材,也可供广大从事仪器仪表、检测技术、自动化测试与 控制技术等领域的工程技术人员参考。 由于作者工作繁忙,编写任务紧迫,书中的疏漏之处在所难免,敬请读者批评指正(联 系地址:哈尔滨工业大学 339 信箱,邮编:150001,联系电话: 0451-6413531-14) 2002 年 3 月 于哈尔滨工业大学自动化测试与控制研究所 作 者 II
目 录 第 1 章 绪论 ............................................................. 1 1.1 LabWindows/CVI 简介........................................................................................... 1 1.2 LabWindows/CVI 程序开发概述 ........................................................................... 2 1.2.1 在 LabWindows/CVI 中使用 C 语言 .......................................................... 2 1.2.2 LabWindows/CVI 的程序结构 .................................................................... 2 1.3 LabWindows/CVI 6.0 的新特性............................................................................. 4 1.4 安装 LabWindows/CVI........................................................................................... 5 第 2 章 LabWindows/CVI 的开发环境 ........................................ 7 2.1 载入、运行和编辑源程序 ....................................................................................... 7 2.1.1 LabWindows/CVI 的主要窗口 .................................................................... 7 2.1.2 源代码编辑工具 ........................................................................................ 10 2.1.3 操作用户界面 ............................................................................................ 13 2.1.4 LabWindows/CVI 的 GUI 控件................................................................. 13 2.2 生成交互式代码 ..................................................................................................... 23 2.2.1 访问用户界面库 ........................................................................................ 24 2.2.2 函数面板 .................................................................................................... 25 2.3 执行和调试程序 ..................................................................................................... 30 2.3.1 单步执行 .................................................................................................... 30 2.3.2 断点 ............................................................................................................ 31 2.3.3 显示和编辑数据 ........................................................................................ 32 第 3 章 LabWindows/CVI 应用程序设计 ..................................... 38 3.1 图形用户界面 ......................................................................................................... 38 3.1.1 用户界面编辑器 ........................................................................................ 38 3.1.2 源代码连接 ................................................................................................ 39 3.1.3 代码生成器 ................................................................................................ 39 3.1.4 建立用户界面文件 .................................................................................... 40 3.2 使用函数面板和函数库 ......................................................................................... 45 3.2.1 源代码分析 ................................................................................................ 45 3.2.2 生成随机数组 ............................................................................................ 46 3.2.3 构建工程 .................................................................................................... 49 3.2.4 运行完整的工程 ........................................................................................ 50 3.3 添加分析功能 ......................................................................................................... 50 3.3.1 修改用户界面 ............................................................................................ 50 3.3.2 编写回调函数 ............................................................................................ 52 3.3.3 运行程序 .................................................................................................... 53
3.4 用户事件处理 ......................................................................................................... 54 3.4.1 用户事件 .................................................................................................... 54 3.4.2 回调函数 .................................................................................................... 58 第 4 章 基本函数库 ...................................................... 62 4.1 用户界面库(User Interface Library)................................................................. 62 4.1.1 面板(Panel)操作 ................................................................................... 63 4.1.2 用户界面管理(User Interface Management)........................................ 67 4.1.3 菜单结构(Menu Structure).................................................................... 67 4.1.4 控件/曲线图/带状图(Controls/Graphs/Strip Charts)操作.................... 71 4.1.5 弹出面板函数 ............................................................................................ 82 4.2 格式化输入/输出库(Format I/O Library)......................................................... 85 4.2.1 文件输入/输出(File I/O)....................................................................... 85 4.2.2 字符串处理(String Manipulation) ........................................................ 91 4.2.3 数据格式化(Data Formating) ............................................................... 93 4.3 实用函数库(Utility Library)............................................................................. 95 4.3.1 定时/等待(Timer/Wait) ......................................................................... 96 4.3.2 日期/时间(Date/Time) .......................................................................... 97 4.3.3 文件应用(File Utilities) ...................................................................... 101 4.3.4 路径应用(Directory Utilities) ............................................................. 104 4.3.5 IO 端口(Port IO) ................................................................................. 105 4.4 RS-232 函数库(RS-232 Library) ......................................................................... 106 4.4.1 RS-232C 接口介绍 .................................................................................. 107 4.4.2 RS-232 函数库概述 ................................................................................. 108 4.4.3 RS-232 编程举例 ..................................................................................... 108 第 5 章 高级函数库 ..................................................... 116 5.1 高级分析库 .......................................................................................................... 116 5.1.1 概述 .......................................................................................................... 116 5.1.2 应用实例 .................................................................................................. 117 5.2 TCP 库................................................................................................................. 129 5.2.1 网络化仪器 .............................................................................................. 129 5.2.2 TCP 协议与 TCP 库................................................................................. 130 5.2.3 TCP 服务器程序设计 .............................................................................. 132 5.2.4 TCP 客户程序设计 .................................................................................. 140 5.3 DataSocket 库...................................................................................................... 146 5.3.1 DataSocket 介绍....................................................................................... 146 5.3.2 DataSocket 发送数据程序设计............................................................... 147 5.3.3 DataSocket 接收数据程序设计 ............................................................... 155 5.4 工具库(Tools Library).................................................................................... 160 5.4.1 工具库简介 .............................................................................................. 160 5.4.2 密码设计 .................................................................................................. 161
5.4.3 工具条设计 .............................................................................................. 164 5.4.4 分页界面设计 .......................................................................................... 176 5.4.5 系统托盘设计 .......................................................................................... 177 第 6 章 数据库应用程序开发—SQL Toolkit ................................. 183 6.1 概述 ...................................................................................................................... 183 6.1.1 SQL Toolkit 功能概述.............................................................................. 183 6.1.2 SQL Toolkit 2.0 的安装............................................................................ 183 6.2 入门 ..................................................................................................................... 185 6.2.1 数据库基本概念 ...................................................................................... 185 6.2.2 结构化查询语言(SQL) ............................................................................ 186 6.2.3 ODBC ....................................................................................................... 186 6.2.4 TABLE 控件............................................................................................. 189 6.3 数据库基本操作 ................................................................................................... 206 6.3.1 SQL Toolkit 数据库操作基本步骤.......................................................... 206 6.3.2 使用 SQL Toolkit 的函数库..................................................................... 207 6.4 数据库高级操作 ................................................................................................... 225 6.4.1 设置连接属性 .......................................................................................... 225 6.4.2 设置语句属性 .......................................................................................... 225 6.4.3 操作复合语句 .......................................................................................... 226 第 7 章 高级程序设计 .................................................... 230 7.1 DLL 和 Windows SDK ....................................................................................... 230 7.1.1 DLL 的基础知识...................................................................................... 230 7.1.2 创建和调试 DLL...................................................................................... 232 7.1.3 使用 DLL.................................................................................................. 236 7.1.4 Windows SDK 概述 ................................................................................. 238 7.1.5 Windows SDK 编程实例 ........................................................................ 240 7.2 多线程 ................................................................................................................. 242 7.2.1 概述 .......................................................................................................... 242 7.2.2 两种多线程机制 ...................................................................................... 244 7.2.3 多线程间的数据保护 .............................................................................. 246 7.2.4 防止死锁 .................................................................................................. 253 7.2.5 监视和控制次线程 .................................................................................. 254 7.2.6 线程的优先级 .......................................................................................... 256 7.2.7 线程局部变量 .......................................................................................... 256 7.2.8 其它一些要注意的问题 .......................................................................... 259 第 8 章 ActiveX 技术 .................................................... 261 8.1 ActiveX 技术简介............................................................................................... 261 8.2 使用 ActiveX 控件.............................................................................................. 262 8.2.1 设计带有 ActiveX 控件的应用程序....................................................... 262 8.2.2 需要注意的问题 ...................................................................................... 264
8.3 创建 ActiveX 服务器.......................................................................................... 265 8.3.1 COM 应用程序、对象和接口 ................................................................ 265 8.3.2 创建 ActiveX 服务器工具....................................................................... 266 8.3.3 生成的代码 .............................................................................................. 282 8.3.4 ActiveX 库——服务器函数.................................................................... 286 8.3.5 联编并发布 ActiveX 服务器................................................................... 295 8.3.6 ActiveX 注册............................................................................................ 296 8.3.7 COM 线程模式 ........................................................................................ 296 8.3.8 调试 ActiveX 服务器............................................................................... 298 8.3.9 一些建议、提示和技巧 .......................................................................... 299 第 9 章 虚拟仪器软件设计 ............................................... 301 9.1 虚拟仪器概述 ..................................................................................................... 301 9.2 VPP 规范............................................................................................................. 301 9.2.1 VPP 规范概述.......................................................................................... 301 9.2.2 虚拟仪器软件结构(VISA) ...................................................................... 302 9.3 仪器驱动程序开发 .............................................................................................. 304 9.3.1 VPP 仪器驱动程序模型 .......................................................................... 304 9.3.2 VISA 函数的应用.................................................................................... 307 9.3.3 函数面板的设计 ...................................................................................... 317 9.3.4 动态链接库的生成 .................................................................................. 324 9.4 仪器软面板的设计 ............................................................................................. 325 9.4.1 VPP 仪器软面板...................................................................................... 325 9.4.2 软面板的设计 .......................................................................................... 326 9.4.3 可执行文件的生成 .................................................................................. 330 9.4.4 帮助文件的制作 ...................................................................................... 331 9.5 安装盘的制作 ...................................................................................................... 333 9.5.1 VPP 规范的安装要求 .............................................................................. 333 9.5.2 制作安装盘 .............................................................................................. 334 9.6 IVI 驱动程序........................................................................................................ 336 9.6.1 仪器可互换性 .......................................................................................... 336 9.6.2 IVI 驱动程序的结构................................................................................ 336 IVI 驱动程序的其他功能........................................................................ 337 9.6.3 IVI 驱动程序开发向导............................................................................ 338 9.6.4 9.6.5 IVI 驱动程序与 VPP 驱动程序............................................................... 339 附录 A 函数 Fmt、Scan 的标识符和修饰符 ................................................................... 340 附录 B SQL 命令 ....................................................... 348
虚拟仪器软件开发环境——LabWindows/CVI 6.0 编程指南 第 1 章 绪论 LabWindows/CVI 是 National Instruments 公司(美国国家仪器公司,简称 NI 公司)推出 的交互式 C 语言开发平台。LabWindows/CVI 将功能强大、使用灵活的 C 语言平台与用于 数据采集分析和显示的测控专业工具有机地结合起来,利用它的集成化开发环境、交互式 编程方法、函数面板和丰富的库函数大大增强了 C 语言的功能,为熟悉 C 语言的开发设计 人员编写检测系统、自动测试环境、数据采集系统、过程监控系统等应用软件提供了一个 理想的软件开发环境。 考虑到大多数测控软件设计人员已经掌握了 C 语言,因此本书的重点放在如何使用 LabWindows/CVI 的编程环境和应用 LabWindows/CVI 开发测控应用程序上。本书使用的 LabWindows/CVI 版本是 6.0。 1.1 LabWindows/CVI 简介 LabWindows/CVI 是为 C 语言程序员提供的软件开发系统,在其交互式开发环境中编 写的程序必须符合标准 C 规范。 使用 LabWindows/CVI 可以完成如下工作: 交互式的程序开发; 具有功能强大的函数库,用来创建数据采集和仪器控制的应用程序; 充分利用完备的软件工具进行数据采集、分析和显示; 利用向导开发 IVI 仪器驱动程序和创建 ActiveX 服务器; 为其它程序开发 C 目标模块、动态连接库(DLL)、C 语言库。 在 LabWindows/CVI 开发环境中可以利用其提供的库函数来实现程序设计、编辑、编 译、链接和标准 C 语言程序调试。在该开发环境中可以用 LabWindows/CVI 丰富的函数库 来编写程序,此外每个函数都有一个叫做函数面板(Function Panel)的交互式操作界面, 在函数面板中可以执行该函数并可以生成调用该函数的代码,也可通过右击面板或控件获 得有关函数、参数、函数类和函数库的帮助。 在 LabWindnows/CVI 的交互式环境中编写程序必须符合标准 C 语言的规范。另外, 在开发应用程序时可以使用编译好的 C 语言目标模块,动态链接库(DLL),C 静态库和仪 器驱动程序(如何在 LabWindows/CVI 中载入目标模块和动态链接库将在第 7 章介绍)。 LabWindows/CVI 的功能强大在于它提供了丰富的函数库。利用这些库函数除可实现 常规的程序设计外,还可实现更加复杂的数据采集和仪器控制系统的开发。其中比较重要 的函数库如图 1-1 所示。 仪器库是 LabWindows/CVI 的特殊资源。它包括 GPIB、VXI 和 RS-232 仪器的驱动程 序,如示波器、多用表和函数发生器,每个驱动程序都提供可编辑的源代码。使用 LabWindows/CVI 开发工具提供的库函数可以创建自己的仪器驱动程序,可以创建单个仪 器、多个仪器或实际上并不存在的虚拟仪器的驱动程序,在创建仪器驱动程序过程中可以 1
虚拟仪器软件开发环境——LabWindows/CVI 6.0 编程指南 数据采集 数据分析 仪器库 GPIB/GPIB488.2 库 RS-232 库 VISA 库 VXI 库 数据采集库 Easy I/O for DAQ 库 格式化和 I/O 库 分析库/高级分析库 函数库 数据表示 用户界面库 网络和进程通讯 动态数据交换(DDE)库 传输控制协议(TCP)库 ActiveX 库 DataSocket 库 标准 C 函数库 图 1-1 LabWindows/CVI 的函数库 使用 LabWindows/CVI 的其它库函数(本书在第 9 章将介绍仪器驱动程序的开发)。 使用 LabWindows/CVI 的用户界面编辑器可以创建并编辑图形用户界面(GUI),而使用 LabWindows/CVI 的用户界面库函数可以在程序中创建并控制 GUI。此外,LabWindows/CVI 为 GUI 面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和 指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界 面。 1.2 LabWindows/CVI 程序开发概述 在 LabWindows/CVI 下开发应用程序和使用其它语言和开发环境一样,要保持良好的 编程习惯。例如,在编写代码之前要设计程序的功能结构,同时在代码中要有良好的文档 和注释,这些可以帮助你更好的进行管理程序的开发。 1.2.1 在 LabWindows/CVI 中使用 C 语言 LabWindows/CVI 使用的是 C 语言,并且为仪器方面的应用程序开发增加了许多 C 语 言 所 不 具 备 的 功 能 。 在 使 用 LabWindows/CVI 之 前 , 需 要 有 C 语 言 的 基 础 , 在 LabWindows/CVI 中可以使用它提供的 ANSI C 标准库函数。 1.2.2 LabWindows/CVI 的程序结构 大多数工程测控软件都包含如下内容: 2
分享到:
收藏