- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网友问答之深理入解albview
网友问答之深入理解WHILE循环 2011-01-15 09:57一些初学LV的网友们近期发给我的邮件中多次谈到WHILE循环的一些问题,这些问题虽然很常见,但是是根本性的问题,原因在于这些问题之所以不容易理解,是因为刚刚接触LV,很难理解或者经常忽视了“数据流”的问题。首先简要回顾一下WHILE循环的基本概念和特点,然后重点回复网友们有关WHILE循环的问题。几乎所有有关LV的书籍中都把WHILE结构与C语言的DO WHILE循环相提并论,其实二者之间是存在很大差别的,其根本区别在于LV是基于数据流驱动的,而C语言则不是。DO WHILE循环可以保证循环至少运行一次,LV中的WHILE结构也是如此,这是二者之间的共同点。C语言中的WHILE结构如下所示:do{// do sth}while(condition)我们需要特别注意的是,C语言中DO WHILE循环判断循环条件是在循环中所有语句执行之后,简单地说就是“先运行,后判断”,LABVIEW中的循环结构则不然,这导致了很多LV初学者很难理解LV中WHILE循环的一些特殊现象。1、可以同时运行多个WHILE循环结构。同时运行多个WHILE循环结构在C语言中是比较麻烦的,必须开辟多个线程,而LABVIEW是自动多线程的。LABVIEW不仅可以同时并行运行多个WHILE结构,甚至在每个while循环中可以同时运行多个数据流程。多了同时运行的WHILE循环可以分成两类:一类是一个VI中多个同时运行的WHILE循环。多个WHILE循环在同一程序框图中。另一类是每个子VI拥有各自的WHILE循环,此时多个WHILE循环同时工作相当于WINDOWS的多窗口运行。2、每个循环中必须增加延时函数,释放系统控制权。如果在循环中没有延时类函数,将导致WHILE循环独占CPU,CPU占用率很快达到100%。3、仅运行一次的WHILE循环+未初始化的移位寄存器。这就是著名的LV2(功能)全局变量。--------------------------------------------------------------------------------------------------------------------------------下面解释一下网友的问题:问题一、WHIEL循环中,假如等待函数设置为10秒(10000),在2秒时按下停止按钮,过了8秒循环仍然不能停止,这是为什么。我们先看看C语言中,DO WHILE循环+延时函数的情形。do{//do sthSleep(10000);//有些编译器使用Delay()函数,效果相同,目的延时while(!Stop)上面的程序中,程序必须保证从开始延时至结束延时为10秒中,其中任意时刻停止为TRUE,WHILE循环实际工作时间为10秒。LV中类似的程序框图如下图所示:?无论我们在循环启动10秒内任意时刻按下STOP按钮,WHILE循环经历的时间都是20秒。很显然这不是一个简单的DO WHILE循环,C语言中,同样的情况WHILE循环仅执行了一次,而LV中的WHILE循环却执行了2次,导致两次调用WAIT函数,延时20秒。二者之间的区别在于检查循环条件的时刻。C语言中的DO WHILE循环之在循环结束时检查循环条件的,LV中的WHILE循环则不然。在循环开始时,等待函数与检查STOP按钮的值是同时发生的。LV是数据流驱动的,一段框图的运行与否在于它的输入端子是有数据流动进来。循环开始时,由于WHILE循环条件端子上,STOP按钮的值直接流入,所以开始时就判断结束条件。由于开始时STOP为FALSE,此时决定了本次循环结束后,还要进行下一次循环。在读取结束条件的同时,WAIT函数开始延时10秒。在延时10秒过程中,我们按下了停止按钮。STOP按钮需要LV回读时,才会自动恢复,我们可以看到,在10秒结束前,STOP一直处于按下状态。WAIT函数等待10秒完成后,此时进入第二个循环,同样检查结束条件,此时停止按钮按下,下一个循环不再执行,但是此时等待函数第二次运行,等待10秒。两次运行等待函数,导致最后延时20秒钟。回过头来,我们能否使LV中的WHILE循环真正像C语言中的DO WHILE一样运行那,我们只要改变LV中WHILE循环读取结束条件的时刻就可以实现了,如下图所示。我们只要在10秒内按下停止按钮,则循环经历的时间为10秒,同上面C语言的DO WHILE循环功能完全相同了。原因在于我通过顺序结构,强行改变了读取STOP的时刻,即等待结束后读取结束条件。由于此时STOP为TRUE,所以下一次循环不再执行,退出。上面我解释了延时为什么执行了两次的问题,实际上我们根本就不需要一个长时间延时的WHILE循环。对于一个几秒、几分钟、甚至几个小时才
您可能关注的文档
- 综合实践二年上级《山金的瓜果》张英.doc
- 综合实践报告格式要求.doc
- 综合实践活动究研性例案.doc
- 顾客购买心理分析.doc
- 综合实践活动课程结题报告.docx
- 综合实践活动例案和我好书角朋友.doc
- 综合布线工程建设的监理.doc
- 综合办公楼工冬程季工施方案.doc
- 综合布线招标文件.doc
- 综合布线施工规范.doc
- 音乐教育对初中生团队合作解决问题能力的影响教学研究课题报告.docx
- 英语教学中的学习成绩评价研究教学研究课题报告.docx
- 《明天再练吧》课件.ppt
- 农业学习中的农业生产与农业科技创新教学研究课题报告.docx
- 区块链技术在高中信息技术课堂教学中的创新应用与效果评价教学研究课题报告[001].docx
- 初中生劳动教育课程实施与学生劳动习惯培养研究教学研究课题报告.docx
- 高中物理课堂中电磁感应现象的应用与实验探究教学研究课题报告[001].docx
- 室内设计方案答辩攻略-室内设计攻略.pptx
- 历史地图作业在初中生空间观念培养中的应用教学研究课题报告.docx
- 小学音乐合唱教学对提升学生团队协作能力的探讨教学研究课题报告.docx
文档评论(0)