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

下载本文档

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

文档简介

1、精讲LabVIEW设计模式,天津大学精仪学院 陈世利,LabVIEW 设计模式,LabVIEW 定时结构,优化LabVIEW程序内存管理,调用动态链接库,LabVIEW与多线程,什么是设计模式?,一种LabVIEW程序模板与架构 软件实践中通用的程序架构,其本质是对很多十分类似的问题进行总结归纳的基础上提炼出的一些具有代表性的软件开发规范 具有灵活的配置功能 被广泛使用,使用设计模式的益处,简化整个开发过程 更容易理解程序代码 代码可重用 可靠性 被使用多年,被证明其“可用并可靠” 大量技术资源与例程,使用设计模式注意事项,1、不是一成不变的定律,既要知道有哪些设计模式,还要知道每种模式解决实

2、际应用中的哪些问题,是如何解决的,效果如何? 2、文本式编程语言中广泛使用的设计模式在图形化数据流编程中的应用问题。,注意!,有些时候你没有必要选用最 复杂的设计模式 不要忘记最常见的设计模式 数据流!,通用型:状态机模式、 消息队列模式、 用户界面事件模式 专用型:主从线程模式、 生产/消费模式、 后台服务模式、 应用程序启动模式、 代理模式,LabVIEW设计模式,基本工具,循环结构 移位寄存器 分支结构 枚举型常量 事件结构,状态机模式,“我需要执行一系列的事件步骤,但是步骤顺序可通过编程决定的。”,自动贩卖机模型,Initialize,Wait,Change,Quarter,Dime,

3、Nickel,Exit,Vend,No input,Quarter Deposited,Total 50,Total = 50,Change Requested,Dime Deposited,Nickel Deposited,Total 50,Total 50,Total = 50,Total = 50,Total 50,Total = 50,基本三要素:,状态、事件、动作,背景,动态结构:允许不同的状态,按通过编程决定的顺序进 行执行,静态顺序结构,状态机结构,对于一个最简单的状态机结构而言,它是可以用顺序结构代替的;而对于相对复杂的状态机结构而言,却可以作为测试流程的组织者和管理者。,在L

4、abVIEW下实现状态机结构,While循环+Case结构 每一Case即为一个状态 当前状态中需有决定下一状态的判定代码 使用枚举常量通过移位寄存器传递至下一状态,切换代码,工作流程,初始状态,FIRST STATE,下一状态,执行步骤,移位寄存器用于传递状态,Case结构对每一状态都配备一个分支,切换代码根据执行步骤中的结果来决定下一状态,枚举常量,一个自定义的枚举类型对应一个状态机中的状态集合,枚举常量,枚举类型是一种允许程序员自定义元素的数据类型,它可以显示数值对应的具体含义,帮助程序员理解程序中使用的变量值。,枚举常量举例,控件选板“Modern”1、枚举控件、指示、常量2、默认U1

5、63、修改 Edit Items4、隐式与显式类型转换,DEMO1,顺序型状态机模式,数据传递方式,DEMO2,改进的顺序型状态机模式,1、去掉i 2、添加一个移位寄存器,DEMO3,测试流程型状态机,1、解决顺序型状态机不便阅读和修改的问题,采用枚举型常量。2、采用自定义型控件,方便修改。,over,消息队列模式,“我需要执行一系列的事件步骤,但是步骤顺序可通过编程决定的。” 步骤是由用户界面事件决定的,如某个应用程序共要处理4个状态,分别是A,B,C和D,前面板有3个按钮分别控制3种运行时的状态序列ABCD、DCAB和BDCA。 引入消息队列模式,通过建立队列缓冲区来解决这个问题,这种模式

6、也称为“队列型状态机模式”。,消息处理过程,建立消息队列,加入消息,探测消息,EXIT?,删除消息,接收消息 执行代码,销毁消息队列,消息源,Yes,No,队列建立方式,队列函数和数组,队列函数,最常用的4个函数,数组,1、数组函数2、配合移位寄存器3、无需手动销毁队列空间,数组方式DEMO,队列函数方式DEMO,队列函数与数组的不同1、消息传递方式不同 移位寄存器 对于 Win32 dll 来说,可以是缺省 (stdcall) 或 C.,Call Library Function 和 Win32 DLLs,函数参数可以是以下类型:,Void 数字型 有符号/无符号 8-bit, 16-bit

7、 和 32-bit 整数 4-byte, 单精度数 8-byte, 双精度数,数组 数组数据指针 数组句柄 字符串 C Pascal G (LabVIEW) Adapt to Type,DLL 实例: MessageBoxA 函数,回传类型,函数名,参数: HWNDhWnd 32-bit 无符号整数. 确定 parent window. 此时为 NULL. LPCSTRlpText C-style string LPCSTRlpCaption C-style string UINTuType unsigned 32-bit integer value.,回传类型: int 32-bit sig

8、ned integer,调试 Call Library Function,如果 VI不执行或者导致死机, 检查下列可能: DLL的路径名是否正确 如果错误信息是 function not found in library, 检查函数名的拼写、语法和大小写 传递给 DLL函数的所有参数都有数据线连接到 Call Library Function 图标的输入端口上. 检查数据类型和参数顺序 使用了正确的调用规则: C 或者缺省(stdcall); The Win32 API 使用 缺省(stdcall) 规则 需要更多帮助, 请参阅 Using External Code in LabVIEW 手

9、册,导入共享库工具,头文件路径和预定义符号,包含路径:解析头文件时的搜索路径 预定义符号:#ifdef ,导入函数列表,函数列表:选择需要导入的函数 操作提示: ,设置导入参数,控件类型 输入/输出 传递方式 默认值 数据类型 函数声明 基本类型 导入函数原型,1、自定义控件2、类型定义与严格类型定义3、自定义错误代码4、DataSocket 5、TCP与UDP,DataSocket,1、URL是DataSocket访问目标的唯一地址。2、DataSocket由DataSocket API和DataSocket Server两部分组成,Server负责提供DSTP协议和管理底层网络通信,自动管理与客户端的连接,极大简化了TCP编程,安装LabVIEW时DataSocket Server组件会被自动安装。3、3种角色发布者Publisher、DataSocket Server、订阅者Subscriber,DataSocket 使用步骤,1、在DataSocket Server Manager中建立数据项2、启

温馨提示

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

评论

0/150

提交评论