精讲LabVIEW设计模式_第1页
精讲LabVIEW设计模式_第2页
精讲LabVIEW设计模式_第3页
精讲LabVIEW设计模式_第4页
精讲LabVIEW设计模式_第5页
已阅读5页,还剩136页未读 继续免费阅读

下载本文档

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

文档简介

精讲LabVIEW设计模式,天津大学精仪学院陈世利,LabVIEW设计模式,LabVIEW定时结构,优化LabVIEW程序内存管理,调用动态链接库,LabVIEW与多线程,什么是设计模式?,一种LabVIEW程序模板与架构软件实践中通用的程序架构,其本质是对很多十分类似的问题进行总结归纳的基础上提炼出的一些具有代表性的软件开发规范具有灵活的配置功能被广泛使用,使用设计模式的益处,简化整个开发过程更容易理解程序代码代码可重用可靠性被使用多年,被证明其“可用并可靠”大量技术资源与例程,使用设计模式注意事项,1、不是一成不变的定律,既要知道有哪些设计模式,还要知道每种模式解决实际应用中的哪些问题,是如何解决的,效果如何?2、文本式编程语言中广泛使用的设计模式在图形化数据流编程中的应用问题。,注意!,有些时候你没有必要选用最复杂的设计模式不要忘记最常见的设计模式数据流!,通用型:状态机模式、消息队列模式、用户界面事件模式专用型:主从线程模式、生产/消费模式、后台服务模式、应用程序启动模式、代理模式,LabVIEW设计模式,基本工具,循环结构移位寄存器分支结构枚举型常量事件结构,状态机模式,“我需要执行一系列的事件步骤,但是步骤顺序可通过编程决定的。”,自动贩卖机模型,Initialize,Wait,Change,Quarter,Dime,Nickel,Exit,Vend,Noinput,QuarterDeposited,Total=50,ChangeRequested,DimeDeposited,NickelDeposited,Total=50,Total50,Total=50,基本三要素:,状态、事件、动作,背景,动态结构:允许不同的状态,按通过编程决定的顺序进行执行,静态顺序结构,状态机结构,对于一个最简单的状态机结构而言,它是可以用顺序结构代替的;而对于相对复杂的状态机结构而言,却可以作为测试流程的组织者和管理者。,在LabVIEW下实现状态机结构,While循环+Case结构每一Case即为一个状态当前状态中需有决定下一状态的判定代码使用枚举常量通过移位寄存器传递至下一状态,切换代码,工作流程,初始状态,FIRSTSTATE,下一状态,执行步骤,移位寄存器用于传递状态,Case结构对每一状态都配备一个分支,切换代码根据执行步骤中的结果来决定下一状态,枚举常量,一个自定义的枚举类型对应一个状态机中的状态集合,枚举常量,枚举类型是一种允许程序员自定义元素的数据类型,它可以显示数值对应的具体含义,帮助程序员理解程序中使用的变量值。,枚举常量举例,控件选板“Modern”1、枚举控件、指示、常量2、默认U163、修改EditItems4、隐式与显式类型转换,DEMO1,顺序型状态机模式,数据传递方式,DEMO2,改进的顺序型状态机模式,1、去掉i2、添加一个移位寄存器,DEMO3,测试流程型状态机,1、解决顺序型状态机不便阅读和修改的问题,采用枚举型常量。2、采用自定义型控件,方便修改。,over,消息队列模式,“我需要执行一系列的事件步骤,但是步骤顺序可通过编程决定的。”步骤是由用户界面事件决定的,如某个应用程序共要处理4个状态,分别是A,B,C和D,前面板有3个按钮分别控制3种运行时的状态序列ABCD、DCAB和BDCA。引入消息队列模式,通过建立队列缓冲区来解决这个问题,这种模式也称为“队列型状态机模式”。,消息处理过程,建立消息队列,加入消息,探测消息,EXIT?,删除消息,接收消息执行代码,销毁消息队列,消息源,Yes,No,队列建立方式,队列函数和数组,队列函数,最常用的4个函数,数组,1、数组函数2、配合移位寄存器3、无需手动销毁队列空间,数组方式DEMO,队列函数方式DEMO,队列函数与数组的不同1、消息传递方式不同移位寄存器对于Win32dll来说,可以是缺省(stdcall)或C.,CallLibraryFunction和Win32DLLs,函数参数可以是以下类型:,Void数字型有符号/无符号8-bit,16-bit和32-bit整数4-byte,单精度数8-byte,双精度数,数组数组数据指针数组句柄字符串CPascalG(LabVIEW)AdapttoType,DLL实例:MessageBoxA函数,回传类型,函数名,参数:HWNDhWnd32-bit无符号整数.确定parentwindow.此时为NULL.LPCSTRlpTextC-stylestringLPCSTRlpCaptionC-stylestringUINTuTypeunsigned32-bitintegervalue.,回传类型:int32-bitsignedinteger,调试CallLibraryFunction,如果VI不执行或者导致死机,检查下列可能:DLL的路径名是否正确如果错误信息是functionnotfoundinlibrary,检查函数名的拼写、语法和大小写传递给DLL函数的所有参数都有数据线连接到CallLibraryFunction图标的输入端口上.检查数据类型和参数顺序使用了正确的调用规则:C或者缺省(stdcall);TheWin32API使用缺省(stdcall)规则需要更多帮助,请参阅UsingExternalCodeinLabVIEW手册,导入共享库工具,头文件路径和预定义符号,包含路径:解析头文件时的搜索路径预定义符号:#ifdef,导入函数列表,函数列表:选择需要导入的函数操作提示:,设置导入参数,控件类型输入/输出传递方式默认值数据类型函数声明基本类型导入函数原型,1、自定义控件2、类型定义与严格类型定义3、自定义错误代码4、DataSocket5、TCP与UDP,DataSocket,1、URL是DataSocket访问目标的唯一地址。2、DataSocket由DataSocketAPI和DataSocketServer两部分组成,Server负责提供DSTP协议和管理底层网络通信,自动管理与客户端的连接,极大简化了TCP编程,安装LabVIEW时DataSocketServer组件会被自动安装。3、3种角色发布者Publisher、DataSocketServer、订阅者Subscriber,DataSocket使用步骤,1、在DataSocketServerManager中建立数据项2、启动Serve

温馨提示

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

评论

0/150

提交评论