LABView2010版讲义-2.doc_第1页
LABView2010版讲义-2.doc_第2页
LABView2010版讲义-2.doc_第3页
LABView2010版讲义-2.doc_第4页
LABView2010版讲义-2.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

26e9e932a0099f17dbad2f504980aa2f.pdfLabVIEW2010版讲义(续) 四、外部代码调用、菜单、全息实验(九)外部代码调用-CLF节点 CLF 节点:调用库函数节点(Call Library Function Node)。用于调用外部动态链接库DLL 文件中的函数。1使用CLF节点调用自建DLL要点:使用CLF节点调用自建的dll 库函数。例9-1使用CLF节点调用MovingDLL.vi对于自建的Moving_Test.dll,本例演示了如何调用其中的函数:void Mm_CRead(char * resp)char *MoveStage(char *stageN,char *cmd,char *posi,int Chnl)l 调用库函数节点:函数/互连接口/库与可执行程序/ 右击该控件,选择“配置”,在对话框里设置: “函数”页面:选取“讲义实例/MovingDLL/Moving_Test.dll”,在该库里选取MoveStage函数; “参数”页面:根据MoveStage函数内的参数的类型进行配置; return_P:空stageN:字符串C字符串指针cmd_P:字符串C字符串指针posi:字符串C字符串指针Chnl:数值有符号16位整型值 “回调”页面:默认配置。对于Mm_CRead,其参数配置:return_V:空resp_V:字符串C字符串指针2使用CLF节点调用Windows API函数要点:Windows API函数的调用;各种对话框的用法。例9-2使用CLF节点调用Windows API函数.vi(1)MessageBoxA函数的配置 “函数”页面:选择“C:WINDOWSsystem32user32.dll”,在该dll里选择 “MessageBoxA”;选定“在UI线程中运行”、“stdcall(WINAP)”。 “参数”页面:配置函数参数;(MessageBoxA的参数需在Microsoft Developer Network中查找)return_type:数值无符号32位整型hWnd:数值无符号32位整型值lpText:字符串常量C字符串指针lpCaption:字符串常量C字符串指针uType:数值无符号32位整型值 “回调”页面:默认配置。uType端口取值范围:06,分别对应单按钮(0)、双按钮(1,4,5)、三按钮(2,3,6)以及不同名称的按钮。各种按钮的返回值在输出端“return_type”输出至“返回值”控件中显示。(2)相关的对话框函数l (单/双/)三按钮对话框(VI):函数/编程/对话框与用户界面/其输出分别为:单按钮-TRUE;双按钮-TRUE、FALSE;三按钮0、1、2。l 显示对话框信息:函数/编程/对话框与用户界面/ (或函数/Express/输出/)创建含有警告或用户信息的标准对话框。可包含两个按钮,分别对应TRUE、FALSE。本函数提醒用户应该注意的信息,并决定取舍。l 提示用户输入:函数/编程/对话框与用户界面/,(或函数/Express/输出/)显示标准对话框。提示用户输入相关信息。双击该函数,可在对话框里设置欲输入的项目名称,如本例中的“姓名”和“年龄”。可包含两个按钮,分别对应TRUE、FALSE。用户可在此输入或决定取舍。这些对话框函数在本例中的出现只是演示了的各函数的用法。用错误输入、输出连接各函数只是表示控制数据流顺序的一种方法。(十)自定义菜单控制多面板 1自定义菜单的生成要点:运用菜单编辑器编辑菜单;事件结构响应菜单。例10-1简单菜单示例.vi(1)编辑菜单在“编辑/运行时菜单”进入“菜单编辑器”。 自定义 菜单项类型:用户项 菜单项名称:按需要编辑 菜单项标识符:按需要编辑保存菜单:菜单示例.rtm。(2)将菜单与事件结构相联系事件结构中当前数据的将随着各分支的对应的事件而不同,本例中事件结构应该响应自定义的菜单:右击并选“添加事件分支”,在“事件源”中选择“;在“事件”中选择“菜单选择(用户)”,此时,在事件结构的当前数据中选择“项标识符”、“项路径”等选项。(3)条件结构在本例中条件结构相当于CASE结构,将其条件端与“项标识符”相连。通过右击选择添加分支,使每一个分支与菜单项的标识符一致。本例中用两种方法表示菜单功能的存在,注意“项路径”在功率计选项中的应用。(4)注意保留默认分支。2多面板菜单的生成要点:用菜单的各选项调用相应的面板例10-2菜单示例-多面板.vi(1)控件与函数l 创建路径:编程/文件I/O:将路径和文件名(字符串)合并成新的包括路径和文件在内的完整的文件全称l 当前VI路径:编程/文件I/O/文件常量/返回当前VI的当前位置。l 打开VI引用:函数/编程/应用程序控制/返回由VI在磁盘上的名称字符串或路径所指定的某个VI、自定义控件或全局变量的引用。l 关闭引用:函数/编程/应用程序控制/关闭打开的VI等。l 属性节点:函数/编程/应用程序控制/获取(读取)和/或设置(写入)引用的属性。l 调用节点:函数/编程/应用程序控制/在引用上调用方法或动作。大多方法有其相关参数。(2)过程控制描述a) 编辑菜单:事件结构响应自定义的菜单(见例10-1);b) 结合事件结构的项标识符形成菜单选项中调用的vi名称;分别创建“快门”、“功率计”、“运动平台”、“参数设定”面板。各面板的名称应与菜单编辑器中的菜单项标识符一致。c) “创建路径”函数将“当前VI路径”函数(产生主面板的全路径)中的基路径与调用的面板vi名称合并成包括路径的vi的全称;d) “打开VI引用”:获得调用的面板vi的引用,根据该vi属性获得其运行状态,控制条件结构;属性节点的使用:右击(App)“选择类/VI服务器/VI/VI”;右击(属性),选择“选择属性/执行/状态”。e) 调用节点:选用该节点后,右击(App)“选择类/VI服务器/VI/VI”;右击(方法),选择“选择方法/运行VI”;f) 属性节点:该处属性为“选择属性/前面板窗口/打开”;g) 关闭子面板:关闭引用的面板。(3)注意“参数设定”程序框图与“快门”等的区别。(十一)全息实验示例.vi本例以“Power_Scanning.prj”为蓝本,力图以LABView实现之。本例在主VI中用菜单方式(全息实验-菜单.rtm)调用各功能模块,即:l 设备调整.vi:用于调试快门、功率计和运动平台l 开始实验.vi:实验参数设定并开始实验。某些控件(量程、单位、运动系统等)代表的量值需要在各vi之间共享,因而被设置为全局变量,他们都保存在“全局 1.vi”中。此外,本例设计了“开始时间-子vi”、“结束时间-子vi”和 “输入命令.vi”。分别提取实验开始的日期、时间和结束时间以及输入命令,以供功能模块直接调用。1. 主VI-全息实验示例.vi(1) 在主VI中首先建立菜单:点击“编辑/运行时菜单”进入“菜单编辑器”,即可直接根据需要编制菜单。本例中设置“设备调整”和“开始实验”两项。(2) 将菜单与事件结构联系在程序框图中增设事件结构,右击并选“添加事件分支”,在“事件源”中选择“;在“事件”中选择“菜单选择(用户)”,此时,事件结构中当前数据将出现“项标识符”、“项路径”等选项。再选“添加事件分支”,在“事件源”中选择“Exit”,在“事件”中选择“值改变”。该事件分支响应前面板的 “Stop”按钮,停止主程序。(3) 菜单选择(用户)分支的程序框图:参见例10-2菜单示例-多面板.vi。2. 设备调整.vi(1) 使用下列控件:l 各类按钮:控件/新式/布尔/快门1、单位、测量、显示、位置、速度、执行、退出等。l 文本下拉列表:控件/新式/下拉列表与枚举/量程、运动系统等。l 字符串(输入)显示控件:控件/新式/字符串与路径/l 数值显示控件:控件/新式/数值/本框图的基本框架是采用事件结构分别处理测量和退出功能,其中,测量和退出按钮均采用“保持转换直到释放”的机械动作。(2) 各类函数:l 调用库函数节点:函数/互连接口/库与可执行程序/l 调用节点:函数/编程/应用程序控制/l 连接字符串:函数/编程/字符串/(3) 过程描述本VI包括3台仪器的调整,即快门1、北大功率计和运动平台。整个程序框图的设计是使用系列按钮分别控制事件结构的各个分支,即“快门1”控制快门的开启;“测量”控制北大功率计的调整;“显示”、“位置”、“速度”和“执行”控制运动平台的各项功能;“退出”控件则控制整个调整程序的退出。本调整程序主要调整外设的功能,因此,各外设相应的动态连接库(.dll)文件应该包括在同一子目录下。本VI采用了l 局部变量:解决在本VI中共享变量,如“当前位置”、“当前速度”等。l 全局变量:将本VI的信息传递到其他VI,如“量程”、“单位”、“运动系统”等。l 子面板:用于简化程序框图,如输入命令.vi.等。(4) 局部变量的应用局部变量常用于初始化变量或在同个VI内共享变量。以“当前位置”为例。在执行“显示”时,它用于接收并显示运动平台当前的位置,而在执行“位置”命令时,它又要再次接收并显示运动平台在执行“设定位置”后的位置,而一个显示控件在框图中只出现一个图标,它的接收端只能连接一个输入源,在这种情况下,就必须采用局部变量的方式,这样一个显示控件就可以在不同的时段接收并显示不同输入源的信息。局部变量的建立:在程序框图中右击“当前位置”,选择“创建/局部变量”即可。如果需要数个该控件的局部变量,也可以点击已生成的局部变量,同时按住Ctrl键,拖动该局部变量即可复制该控件的局部变量。每一个局部变量只能处于“读取”或“显示”状态,可点击右键中切换。(5) 全局变量常用于多个VI之间传递信息和数据。当不同VI之间需要共享某个控件的信息时,就需要使该控件具有全局变量的特性。在“设备调整.vi”中有3个控件:“运动系统”、“单位”和“量程”,他们的信息将被“开始实验.vi”共享,因此,需要具有全局变量的特性,以保证在“设备调整.vi”中产生的信息传递到“开始实验.vi”中去。全局变量的建立:以控件“单位”为例。l 在“函数/编程/结构/”中选取一个空的全局变量;l 双击该全局变量,打开相对应的前面板,将“运动系统”、“单位”和“量程”3个控件复制入该面板,并保存为“全局 1.vi”。此时,该VI中的这3个控件即具备了全局变量的特性;l 右击空的全局变量在“选择项”里选取相应的全局变量。 如在框图中添加“全局 1.vi”中已有的全局变量,可点击“函数/选择VI/”即可产生新的全局变量,右击该全局变量,可以在“选择项”里选择已有的全局变量。 如需建立新控件的全局变量,可将相应的控件复制入“全局 1.vi”。l 新建的全局变量需要与原来的控件在框图上相连,以便使控件的信息传输到全局变量中。每一个全局变量只能处于“读取”或“显示”状态,可点击右键中切换。(6) 子VI本VI在“执行”分支采用创建子VI的方式简化输入命令后的执行代码。基本步骤:l 在“执行”分支框出需要归入子VI的各代码(函数),l 精确调整:利用Shift+鼠标单击对象添加或移出对象,包括数据线,但是注意不要将输入数出参数包括在内。l 创建子VI:点击主菜单的“编辑/创建子VI”,即产生子VI。此时该子VI以默认图标在“执行”分支上代替了原框出的部分。l 保存:双击该图标,可以打开并可以继续编辑,然后保存(输入命令.vi)。(7) 相关的dll库函数1) Moving_test.dllint16_t Mm_CSend return_sent:数值,有符号16位整型输出 cmd:字符串,C字符串指针void Mm_CRead return_read:空token resp_read:字符串,C字符串指针输出void MoveStage return_movestage:空 stageN:字符串,C字符串指针 cmd:字符串,C字符串指针 posi:字符串,C字符串指针输出 Chnl:数值,有符号16位整型,值2) PM-ADA7489.dlldouble ADA_Read return_ADA_Read:数值,8字节双精度 nChannelNo:数值,有符号16位整型,值 nSampleNum:数值,有符号16位整型,值 Range:数值,4字节单精度,值3) Shutter_test.dll void OpenShutter1 return_shutter:空void CloseShutter1 return_shutter:空3. 开始试验.vi(1) 使用下列控件:l 各类按钮:控件/新式/布尔/确定(释放时转换)、开始(释放时触发)、退出(单击时触发)等。l 文本下拉列表:控件/新式/下拉列表与枚举/运动方向等。l 字符串输入、显示控件:控件/新式/字符串与路径/起始位置、步长、输出文件名、当前位置显示、实时位置、开始日期、开始时间、结束时间等。l 数值输入、显示控件:控件/新式/数值/最大采样点数、采样时间-秒、实时功率。l 波形图表:控件/新式/图形/(2) 使用下列函数:l 调用库函数节点:函数/互连接口/库与可执行程序/l 属性节点:l 调用节点:函数/编程/应用程序控制/l 连接字符串:函数/编程/字符串/l 分数/指数字符串至数值转换:函数/编程/字符串/字符串数值转换/l 数值至小数字符串转换:函数/编程/字符串/字符串数值转换/l 字符串常量:函数/编程/字符串/l 数值常量:函数/编程/数值/(3) 过程描述本VI分成三大功能:即参数设置、开始试验和停止。由事件结构的三个分支:“确定”、“开始”和“停止”控制。a) “确定”分支:内建平铺式顺序结构,响应参数的输入,包括:“运动方向”、“起始位置”、“步长”、“最大采样点数”、采样时间以及保存文件的“路径”和“文件名”。点击“确定”按钮即进入本分支。程序所作的第一件事就是确定当前位置,包括:根据运动系统的值形成相应的“TP”命令送入运动装置,并将结果读出并在“当前位置显示”控件中显示。其次,取“起始位置”与“当前位置”之差的绝对值,进入由运动方向控制的条件结构。当运动方向为“正”时,比较“起始位置”与“当前位置”,其输出值将控制另一个条件结构:当“起始位置”小于“当前位置”时,程序将出现对话框提示应该重新设置起始位置;当“起始位置”大于“当前位置”时,程序将进入该条件结构内的平铺式顺序结构,在该顺序结构内,程序将合成StartComm命令(由运动平台代号、PA、+、“起始位置”与“当前位置”之差的绝对值构成),由运动平台执行,其结果在“实时位置”显示;同时合成StepComm命令(由运动平台代号、PR、+、步长构成)供实验用,并打开快门;最后出现对话框要求确认。运动方向为负时,其过程基本类似。b) “开始”分支:内建平铺式顺序结构。其中第1、3、5顺序基本上与例8-1文本-表格文件.vi相类似。本分支采用 “开始时间-子vi”和“结束时间-子vi”简化程序框图中的内容,有关这两个子VI的形成过程可参考“2.(6)子VI”。点击“开始”按钮即进入本分支。第一序:开始时间(子VI)第二序:采样并画曲线第三序:结束时间(子VI)第四序:询问数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论