cvi培训讲义资料课件.ppt
《cvi培训讲义资料课件.ppt》由会员分享,可在线阅读,更多相关《cvi培训讲义资料课件.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LabWindows/CVI培训讲义培训讲义王丹丹王丹丹 2009.92/78目录目录u一、入门篇u二、基础篇u三、提高篇u四、技巧篇3/78一、入门篇一、入门篇1、CVI的特点2、学习CVI的几点建议3、CVI的开发环境简介4、构建一个简单程序4/781、CVI 的特点的特点什么是LabWindows/CVI?lLabWindows/CVI是针对测试测量领域的ANSI C开发环境l是把C语言与虚拟仪器的软件工具库结合起来的一种开发环境lC compiler for Virtual Instruments(CVI)5/781、CVI 的特点的特点CVI 的特点:l丰富的库函数,每个函数都提供函
2、数面板l专业化的图形界面设计控件l交互式编程环境l丰富的调试手段l提供部分仪器的驱动6/782、学习、学习CVI的几点建议的几点建议1.要有良好的C语言基础2.多上机实验3.充分利用LabWindows/CVI的函数库4.通过例子学习(CVISamples)5.有明确的应用背景6.程序要进行严格的调试,边写边调7.养成良好的编程习惯,严格遵守编程规范7/783、CVI的开发环境的开发环境工作空间窗口:l工程目录区:左上角,显示工程架构l函数目录区:左下角,显示函数库和仪器库目录。双击 函数名,即可打开对应的函数面板。l窗口区:右半部分,编辑用户界面、源代码及函数面板。l输出区:右半部下方,显示
3、编译、运行及源代码等的错误信息。l运行区:右半部下方,显示变量、监视、内存等信息。(演示:打开一个工程文件,打开ATS项目编辑模块)8/783、CVI的开发环境的开发环境CVI的文件类型l.cws 工作空间文件l.prj 工程文件l.uir 用户界面文件l.c C源代码文件l.h 头文件l.lib DLL导入库文件,外部静态库文件l.fp 函数库(函数数和函数面板)文件l.dll 动态链接库文件9/784、构建一个简单程序、构建一个简单程序1、建立工程文件2、创建用户界面文件,设置面板3、向面板添加控件,设置控件属性4、生成源代码文件,生成Main函数及各控件回 调函数,编写代码5、运行和调试
4、程序6、生成可执行文件和发布文件(演示:创建一个工程文件,演示各项操作)10/78二、基础篇二、基础篇1、基本控件的使用及编程2、弹出式面板3、创建菜单4、文件的读写操作5、常用函数11/781、基本控件的使用及编程基本控件的使用及编程l数值型数值型(Numeric):数值控件、颜色选择控件、数值滑动条等。12/781、基本控件的使用及编程、基本控件的使用及编程l文本型文本型(Text):字符串控件,文本信息,文本框。13/781、基本控件的使用及编程、基本控件的使用及编程l命令按钮命令按钮(Command Button):命令按钮、图片按钮。l双态按钮双态按钮(Toggle Button):
5、双态按钮,文本/图形按钮,单选/复选控件14/781、基本控件的使用及编程、基本控件的使用及编程l指示灯指示灯(LED)l二值开关二值开关(Binary Switch)15/781、基本控件的使用及编程、基本控件的使用及编程l列表控件列表控件(Ring):下拉列表,滑动列表,图形列表16/781、基本控件的使用及编程、基本控件的使用及编程 l列表框和表格控件列表框和表格控件(Lists&Tables):列表框、树形控件、表格控件 (演示:.LabWindows3textlisttree)p列表框列表框(ListBox)17/781、基本控件的使用及编程、基本控件的使用及编程p树形控件树形控件(
6、Tree)18/781、基本控件的使用及编程、基本控件的使用及编程p表格控件表格控件(Table)19/781、基本控件的使用及编程、基本控件的使用及编程l图形控件图形控件(Graph):曲线图控件、带状图控件、数字图控件(演示:.LabWindows3graph)p曲线图控件曲线图控件(Graph)20/781、基本控件的使用及编程、基本控件的使用及编程p带状图控件带状图控件(Strip Chart)21/781、基本控件的使用及编程、基本控件的使用及编程Graph和Strip Chart的区别Graph是曲线图控件,用来显示图形数据,可以显示一条或多条图线。一条图线包含曲线、数据点、几何图
7、形、图片或字符串。支持缩放、移动。Strip Chart是带状图控件,用来实时显示图形数据,可以包含一个或多个同时刷新的曲线,每一条曲线可以代表一个连续测量的数据通道。但Strip Chart不支持绘制几何图形、光标、缩放和移动等功能。22/781、基本控件的使用及编程、基本控件的使用及编程p数字图控件数字图控件(Digital Chart)23/781、基本控件的使用及编程、基本控件的使用及编程l定时器控件定时器控件(Timer)l画布控件画布控件(Canvas)24/781、基本控件的使用及编程、基本控件的使用及编程l分隔栏控件分隔栏控件(Splitter)25/781、基本控件的使用及编
8、程、基本控件的使用及编程l分页控件分页控件(Tab)26/781、基本控件的使用及编程、基本控件的使用及编程 l装饰控件装饰控件(Decoration)l图片控件图片控件(Picture)27/782、弹出式面板、弹出式面板lMessage Popup:输出信息对话框 (演示:.LabWindows3弹出对话框)lGeneric Message Popup:在弹出式面板中显示一个设定的信息,同时可输入信息字符串,并且最多可设置3个按钮28/782、弹出式面板、弹出式面板lPrompt Popup:提示式信息弹出面板要求用户进行输入操作lConfirm Popup:确认信息弹出面板,要求用户选择
9、操作29/782、弹出式面板、弹出式面板lFile Select Popup:文件路径选择弹出面板30/782、弹出式面板、弹出式面板lGraph Popup:绘图控件弹出面板,包含4种:X Graph Popup、Y Graph Popup、XY Graph Popup、Waveform Graph Popup31/783、创建菜单、创建菜单l选择菜单Edit-Menu Bars,可弹出菜单栏列表对话框,在这个界面可创建和编辑菜单栏,右图为菜单栏编辑对话框(演示:ats模块)32/784、文件的读写操作、文件的读写操作主要介绍ini文件的读写操作l首先在工程中添加inifile.fp函数库,
10、路径为.Program FilesNational InstrumentsCVI85toolslibtoolboxinifile.fpl然后,在函数目录区,Instruments文件夹下即新增了Reading/Writing.ini-Style Files类函数,使用此类函数进行ini文件的操作。l此类文件按节划分,每节中包含多个项目,各节各项目均相互独立,便于处理。编程时需注意修改某节某项目时不能破坏其他内容。(演示:.LabWindows11ini,或ATS测试模块)33/785、常用函数、常用函数1、面板操作函数、面板操作函数(Libraries-User Interface Libra
11、ry-Panels)lNewPanel创建面板lLoadPanel载入面板lDisplayPanel显示面板lDiscardPanel释放面板lHidePanel隐藏面板lGetPanelAttribute获取面板属性lSetPanelAttribute设置面板属性l 34/785、常用函数、常用函数2、通用控件操作函数、通用控件操作函数(Libraries-User Interface Library-Controls/Graphs/Strip Charts-General Functions)lGetCtrlVal获取控件值 lSetCtrlVal设置控件值lGetCtrlAttribut
12、e获取控件属性值lSetCtrlAttribute设置控件属性值这4个函数对大部分控件均有效,是最常用的函数。35/785、常用函数、常用函数3、特定控件操作函数、特定控件操作函数(Libraries-User Interface Library-Controls/Graphs/Strip Charts-.)l列表控件函数l文本框控件函数l图形控件函数l定时器控件函数l表格控件函数l分页控件函数l 36/785、常用函数、常用函数4、菜单操作函数、菜单操作函数(Libraries-User Interface Library-Menu Structures)lLoadMenuBar加载菜单栏
13、lDiscardMenuBar释放菜单栏l 5、用户界面管理函数、用户界面管理函数(Libraries-User Interface Library-User Interface Management)lRunUserInterface运行用户界面lQuitUserInterface退出用户界面l 37/785、常用函数、常用函数6、字符串操作字符串操作(Libraries-ANSI C-String Handling-.)lstrlen获取字符串的长度lstrcpy,strncpy字符串拷贝(全部,前n个字符)lstrcmp,strncmp,stricmp字符串比较(全部,前n个字符,不区分
14、大小写比较)lstrcat,strncat字符串连接(全部,前n个字符)lstrchr在字符串中查询某个字符lstrstr在字符串中查询字符串l 38/785、常用函数、常用函数7、数据格式化数据格式化(Libraries-ANSI C-String Handling-.)(Libraries-ANSI C-General Utilities.)(Libraries-Formatting and I/O Library-Data Formatting-.)lFmt(strValue,%s%x,byteValue);lstrtol,strtoll,strtod,pParaValuei.ucval
15、ue=strtol(inValueArrayi,&endStr,16);latoi,atol,atof,pParaValuei.fvalue=atof(inValueArrayi);lsprintf(tempString,%s=%d,tempName,tempValue);lsscanf(constraint,(VarID=%d)%s),&varID,valueStr);l39/78三、提高篇三、提高篇1、串口通讯2、动态链接库技术3、Windows SDK和API技术4、ActiveX技术5、数据库技术6、多线程编程40/781、串口通讯、串口通讯1、打开配置和关闭、打开配置和关闭lint
16、OpenComConfig(int COM_Port,char Device_Name,long Baud_Rate,int Parity,int Data_Bits,int Stop_Bits,int Input_Queue_Size,int Output_Queue_Size);i=OpenComConfig(1,“”,14400,0,7,1,512,512);lint CloseCom(int COM_Port);i=CloseCom(1);2、读写、读写lint ComRd(int COM_Port,char Buffer,int Count);i=ComRd(1,buf,128);l
17、int ComWrt(int COM_Port,char Buffer,int Count);i=ComWrt(1,buf,128);lint ComRdByte(int COM_Port);lint ComWrtByte(int COM_Port,int Byte);3、控制、控制lint FlushInQ(int COM_Port);lint FlushOutQ(int COM_Port);41/781、串口通讯、串口通讯4、状态查询lint GetInQLen(int COM_Port);i=GetInQLen(1);lint GetOutQLen(int COM_Port);i=Get
18、OutQLen(1);5、事件处理lint InstallComCallback(int COM_Port,int Event_Mask,int Notify_Count,int Event_Character,ComCallbackPtr Callback_Function,void*Callback_Data);notifyCount=50;/Wait for at least 50 bytes in queue eventChar =13;/Wait for LF eventMask =LWRS_RXFLAG|LWRS_RECEIVE;InstallComCallback(comport
19、,eventMask,notifyCount,eventChar,ComCallbackFunction,NULL);42/782、动态链接库技术、动态链接库技术1.静态链接和动态链接静态链接是在链接时(生成EXE文件)把程序编译后的代码插入到可执行文件中动态链接时,链接器只插入数据表格,在可执行文件运行前装入内存2.DLL的优点节省内存易于版本升级易于复杂程序管理多语言(字符)支持独立于编程语言43/782、动态链接库技术、动态链接库技术3.DLL和EXE的区别内部结构相同DLL即使装载到内存中时,也不是运行程序。它只是其它程序可以调用的过程与函数的集合。这些过程与函数使用了调用程序的堆栈。
20、库不能建立自己的堆栈,而使用调用它的主程序的堆栈。DLL的任何内存分配或建立的任何全局数据都驻留在主程序的地址空间中 44/782、动态链接库技术、动态链接库技术4.创建DLL按正常程序编写DLL源文件函数每个DLL都要有一个入口函数DllMain(Borland 编译器使用DllEntryPoint实现相同的功能),用它代替WinMain函数或Main函数把需要外部调用的函数和变量导出l头文件法(在头文件中定义)int DLLSTDCALL MyIntFunc(void);char*DLLSTDCALL MyStringFunc(void);l导出关键字法(在源文件中定义)int DLLEX
21、PORT DLLSTDCALL MyFunc(int parm)int DLLEXPORT myVar=0;45/782、动态链接库技术、动态链接库技术在工程文件窗口选择BuildTarget TypeDynamic Link Library 如果使用头文件法,在工程文件窗口选择BuildTarget Settings 并在exports中选择Change按钮,出现DLL Export Option界面中选择导出的头文件创建可调试DLL或发布DLL。46/782、动态链接库技术、动态链接库技术创建DLL的建议:l在需要导出的所有函数的声明和定义中使用DLLSTDCALL宏,不要导出带有可变数量
22、参数的函数。l不要在DLL中导出变量。为每一个需要导出的变量创建一个读取它的值的函数,或者返回这个变量指针的函数。l在头文件中不要使用导入关键字。47/782、动态链接库技术、动态链接库技术创建无界面的动态链接库:int _stdcall DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)switch(fdwReason)case DLL_PROCESS_ATTACH:/装在DLLif(InitCVIRTE(hinstDLL,0,0)=0)return 0;/out of memory break;case DLL_PR
23、OCESS_DETACH:/卸载DLLCloseCVIRTE();break;return 1;48/782、动态链接库技术、动态链接库技术创建有界面的动态链接库:int _stdcall DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)switch(fdwReason)case DLL_PROCESS_ATTACH:/装在DLLif(InitCVIRTE(hinstDLL,0,0)=0)return 0;/out of memory break;case DLL_PROCESS_DETACH:/卸载DLL/如果cvi
24、rte.dll(CVI运行时库)已经被释放,则不能调用CVI函数if(!CVIRTEHasBeenDetached()/释放用户界面资源DiscardUIObjectsForDLL();CloseCVIRTE();break;return 1;49/782、动态链接库技术、动态链接库技术5.调试DLL在调用DLL的工程文件中调试l打开调用DLL的工程文件l把编译好的DLL导引库文件(.lib)加入到调用DLL的工程文件l打开DLL源文件,不要加入到工程文件l在DLL源文件中设置断点进行调试在DLL工程文件中调试l打开DLL工程文件l在工程文件窗口选择RunSelect External Pro
25、cess,输入外部调用DLL的可执行文件名l在DLL源文件中设置断点进行调试50/782、动态链接库技术、动态链接库技术6.使用DLLLabWindows/CVI通过标准的32位导入库连接到DLL 链接导入库的方式:l把它列入到在工程中l用一个仪器驱动程序或用户库的.fp文件把它联系起来l通过调用LoadExternalModule或Windows SDK LoadLibary函数动态载入如果把导入库列到工程文件中,或者用一个仪器驱动程序或用户库的.fp文件把它联系起来,LabWindows/CVI将把导入库静态载入到可执行文件或DLL中,这种方式又叫隐式加载。通过调用LoadExternal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cvi 培训 讲义 资料 课件
限制150内