你不能错过的LabVIEW使用技巧,看完bug少一半

图1中的VI只做了一个简单乘法300*300,答案肯定是90000,但程序中乘法节点给出的结果却是24464。乘法节点是不会错的,错误是由于程序中使用的数据类型是I16。I16能表示的最大数目只有32767,所以在乘法计算中出现了溢出。

避免此类错误的方法是,在程序中使用短数据类型时,一定要确认程序中的数据绝不会超出该类型可以表示的范围。

2、For循环的隧道

数据传入传出循环结构可以通过移位寄存器(ShiftRegister)和隧道(Tunnel)两种方式。隧道又有两种类型:带索引的和不带索引的。

移位寄存器一般用在需要局部变量的情况下,循环运行一次的输出数据要作为下次运行的输入数据使用;循环外的数组数据通过带索引的隧道在循环体内就可以直接得到数组元素;除此之外,简单地在循环内外传递数据,使用一般的隧道就可以了。

值得一提的是,如果一个数据传入循环体,又传出来,那么就应该使用移位寄存器或带索引的隧道来传递这个数据,尽量不要使用不带索引的隧道。因为For循环在运行时,循环次数有可能为0。在循环次数为0时,大多数情况,用户还是希望传出循环的数据就是传入值,但使用不带索引隧道时,输入值有时会被丢失的。如果使用移位寄存器,即使循环次数为0,也不会丢失传入的数据。因为移位寄存器在循环上的两个接线柱指向的实际是同一块内存(参考:LabVIEW程序的内存优化),而输入输出两个隧道指向的是不同的内存,数据不一定相同。

图2:For循环上的隧道

图2中的程序,vireference传入,再传出循环均使用了隧道。如果循环次数为0(Controls数组为空),vireference再传出循环时,信息就丢失了。这不但有可能造成后续程序的错误,而且由于vireference的信息丢失,再无法关闭打开的vi,造成了程序泄漏。

Error数据线(黄绿色的粗线)在传入传出数组时,一定要使用移位寄存器。原因还不仅是为了防止在循环次数为0时,错误信息丢失。通常一个节点的ErrorOut有错误输出,意味着后续的程序都不应该执行。在错误的情况下继续执行程序代码,风险非常大,可能会引起程序,甚至系统崩溃。只有使用移位寄存器,某次循环产生的错误才会被传递到后续的循环中,从而及时阻止后续循环中的代码被运行。

3、循环次数

与其它语言相比,LabVIEW的For循环有一大特点,在某些情况下它并不要求一定要输入循环次数,而可以根据输入数组的大小自动决定循环次数。通过带索引的隧道,可以把数组分解成元素传递到循环体内,此时不需另行设置循环次数N,循环的次数就是数组的长度。每次循环,带索引的隧道便给出一个元素。

循环体上可以有两个或更多的输入数组使用带索引的隧道,此种情况下容易引起错误。这时,循环的次数等于几个数组中长度最短的那个数组的长度。如果另外又设置了循环次数N,那么循环次数就是N与输入数组长度这两者的最小值。调试时,如果发现一个本该运行多次的循环没有运行,那么很可能就是因为它的一个输入数组是空的。

While循环同样也可以使用带索引的隧道,但是不建议大家这么用——如果需要用到带索引的隧道,还是使用For循环更为适宜。因为while循环的循环次数不由数组个数决定,而是由停止条件决定的。如使用了带索引的隧道,你还需要考虑当数组大于、小于循环次数时,程序应该如何处理,所以还是在循环体内作索引比较方便。如果希望循环次数与数组大小保持一致,那自然是用For循环的程序更加清晰易懂了。

4、移位寄存器的初始化

图3:没有初始化的移位寄存器

看图3中这个程序,因为它在while循环上使用了带索引的隧道,所以可读性不那么好。arrayout的运行结果是什么,还要考虑一阵子才能给出答案。实际上这个程序,即使输入不变,每运行一次,arrayout的结果都是不一样的,它的长度一直在增加。这个问题就出在没有给程序中的移位寄存器一个初始值。

没有初始化的移位寄存器,总是保存上次运行结束时的数据。这个特点在某些情况下可以被程序员利用,比如用它当作全局变量,随时把数据存入或取出(一个例子是《如何使用VI的重入属性》中的图4)。但多数情况下移位寄存器还是被用作为循环内部的局部变量的,这时就一定要对它初始化,以防止潜在的错误。

5、Cluster

图4:Cluster传递数据出错

图4的程序中有个奇怪的错误,明明应该是weight加1怎么运行完后的结果变成了high加1了呢?原因是Cluster中的元素有个顺序,这个顺序可以和界面上看到的顺序不一致。分别鼠标右击程序中的两个Cluster,选择“ReorderControlsinCluster”,就可以看到每个元素在cluster中的编号。infoout中的high实际上编号是2,第三个元素。

为了避免cluster中用可能出现的错误,以及让cluster应用起来更方便,使用cluster最好遵循以下原则:

1.凡是用到cluster的地方,就为它造一个类型定义(《在程序中使用类型定义》),在程序所有要用到这个cluster的地方,都使用类型定义的实例。这样一是可以保证所有的cluster都完全一致,避免图4这种错误;二是一旦需要变动cluster中的元素,只需在类型定义中更新就可以了,不必挨个VI修改。

2.凡是在需要解开(unbundle)或打包(bundle)的地方统统使用unbundlebyname和bundlebyname来实现。使用带名字的bundle,unbundle可以直观的显示出bundle种元素的名字,这样不会因为顺序的不同而导致错误的连线。

6、并行运行

LabVIEW是自动多线程的编程语言,这一点在方便用户的同时,也会带来一些麻烦。比如最常见的情况,多线程会引起数据或资源的竞争错误(racecondition)。

图5:两个并行运行的子VI

图5是一个简单的两个子VI并行运行的例子,在这个例子中就隐藏着一个潜在的问题。并行执行的两部分程序,先后次序是不定的。有可能关闭程序中的引用数据(绿色的线上的数据)的节点在子VIB结束前运行。而子VIB是要用到这个参考数据的,这是子VIB就会因为它所需要的数据失效而产生错误

除此之外,我们还给大家整理了一些LabVIEW编程过程中常用的技巧,希望可以帮助大家提高编程效率。

1、样式(NXG、新式、系统、经典)不同的控件不仅仅是外观上有所差别,其中有些属性并不支持所有样式的控件

2、数值控件可以通过显示格式加入单位。

3、每当不知道应该输入什么类型时,右键创建常量进行参考。

4、为了即时抛出异常,最常用的模式(模版)就是带错误处理的子VI框架。这个模板能够保证在有错误时可以快速通过本VI,进入下一个节点。没有错误发生时,执行本VI的程序代码。

5、浮点数的比较是很严肃的事情,要注意数据精度间的关系。因为一个微小的差别也会导致不相等。比如同为Pi常数,一个是双精度数据(上),另一个是单精度数据(下),比较结果是不相等。

6、布尔转数字是非常有用的,尤其和创建数组函数结合,可以实现类似于3-8译码器的判断部分非常简便。

7、在许多场合下,错误簇就是实现定序数据流的最佳方法。

8、整数只能在选择器标签中显示数字,并且它无法为每个值添加分支,只能一个一个的填写。下拉列表因为使用的也是整数,所以特点与整数相同。组合框控件也无法为每个值添加分支,只能一个一个的填写。列表和选项卡可以通过右键直接为每个值添加分支。

9、可以利用一次while循环来规范图形化代码的分布,避免代码的随意放置(乱丢乱放)。

10、在一个主线程内,while结构必须放在事件结构外,就会一直在等。如果不想因此造成死机等待,有以下方案:

a、设置超时事件,比如设置50,那么在50ms内如果没有触发事件结构,那么将执行超时事件中的程序;

b、(推荐)一个while就是一个线程,如果需要事件结构介入,那么可以把其他服务程序放到另外一个while循环中,事件结构单独一个循环,实现多线程效果(并行)。

12、for循环中通过错误簇连接到条件端子,可以及时停止循环,下图错误的传递也可换为移位寄存器。

13、用对话框作为事件的响应并不是一个好的选择,因为对话框需要操作者及时处理,如果没有及时处理,事件一直处于等待状态,这样其它事件源发出的响应就会产生堆积。所以在事件处理程序中应该避免使用对话框。事件处理程序应该尽可能的简洁迅速,避免其它事件被堆积。

14、当需要弹出简单对话框时,可以直接调用应用程序封装的函数。

15、涉及网络编程问题,先保证把windows自带的防火墙关了,然后能ping到。本地可先用localhost测试。

16、附上一些快捷键技巧:

(1)Ctrl+E切换前后面板

(2)Ctrl+B在程序框图面板,把错误的断线删除掉

(3)Ctrl+R运行程序

(4)Ctrl+S保存程序

(5)Shift+鼠标放在框边上,可以实现拖动

(6)Ctrl+鼠标放在框边上,可以实现复制

(7)Ctrtl+Q退出程序

(8)Ctrl+T分屏

(9)选中图标,Ctrl+"+"号键:实现图标放大,或者选中,在控制面板选择“17pt应用程序字体”,再选择大小

以上提到的这些技巧,不知道有没有对你的LabVIEW编程起到一定的帮助作用?为了更方便大家讨论、学习LabVIEW机器视觉,我们还整理了一份【LabVIEW机器视觉重要基础知识】大礼包,进群即可领取!扫码进群和行业大咖交流,免费领取更多学习资料!

1、机器视觉重要基础

2、机器视觉问与答(光源篇)

3、机器视觉问与答(光源篇)

4、NIVisionAssistant中文入门教程

5、vision_基础

6、机器视觉系列——影像处理:NIVisionVIs

7、机器视觉系列——Vision基础知识(上)

8、机器视觉系列——Vision基础知识(下)

9、机器视觉系列——影像处理:NIVision小帮手(1)

10、机器视觉系列——影像处理:NIVision小帮手

(扫描二维码了解课程详情)

【课程介绍】

【特训营VS自学班】

【重点疑惑】

2、由于个人原因,交了这么多钱没学习完怎么办?

答:我们实战特训营的宗旨就是“学不会继续学,直到学会为止”,没学完或者学不会的同学,我们会主动将你免费转到下期的班级学习,但是不要有这种奔着学不完的心态去学哦~既然购买了最好是跟着我们的步伐学习,所以现在越早购买越早的学习一下打好自己的基础。

3、这个训练营课程有没有优惠价?

答:没有哦!由于龙哥labview课程训练营课程首发上线,第一批的学员价格是最优惠的,后期训练营价格会进行上调。训练营是耗费团队很多精力的课程,我们将着重课程服务,真正的帮助大家让每位学员都能学完学会,成长加薪。你要相信课程对你的帮助远远不止¥1899

4、之前有购买过龙哥的《手把手机器视觉》,要如何才能加入实战特训营?

答:老学员要加入实战特训营,我们将会扣除之前购买的课程价格,详细可以私信班主任:木木。

THE END
1.训练营价格训练营注意事项篮球训练营一直是许多篮球爱好者追逐的梦想。在这里,他们可以得到专业的指导和优质的训练,提高他们的技术水平和篮球能力。然而,作为一个篮球训练营的创办者,是否需要注册公司呢?这是一个值得考虑的问题。在本文中,我们将探讨篮球训练营注册公司的必要性,并深入了解相关的法律要求和潜在的好处。 https://www.yinghuodd.com/keywords/word_55633.html
2.nba篮球训练营怎么样nba篮球训练营排名及收费标准价格简介现今,篮球教学较受欢迎,学员学习篮球技能的同时,也能起到锻炼身体的作用。nba篮球训练营作为其中一个教学品牌,用优质的教学吸引了市场的关注。于是,就有人来询问nba篮球训练营价格收费标准? NBA篮球训练营为了给学员提供优质的教学,不仅严格筛选教师,还会根据学员的年龄段和篮球水平,来制定对应的教学课程。一般情况下,http://wap.jiameng.com/wiki/pp3299747538/
3.减肥训练营减肥达人训练营注册商标 《超级减肥王》AFAA课程授权机构 美国减肥达人课程认证机构 减肥达人训练营 The Biggest Loser 全国30+营地同期开营 戳我预订 杜绝 节食及药物减肥 特配营养师制定饮食配餐,营养金字塔式餐饮搭配杜绝饥饿,吃饱吃好营养满足,零节食零药物,健康活力每一天。 杜绝 高负荷运动 每天黄金四小时https://www.jianfeidaren.com/jfxly/
4.北京西点训练营价格2024收费标准北京西点训练营价格来啦,根据报名的项目营期天数收取费用,收费制度合理,下面小编就带大家看看各个项目的收费情况。 北京特种兵军旅体验夏令营5天,¥3680 元 / 5天 5天军事体验夏令营,西点训练营采用军事化的管理来培养孩子良好的习惯,用体验式(拓展式)训练提高孩子成功的能力。 https://m.tantuw.com/bj/Schoolnews/415_734906
5.减肥班训练营多少钱一个月如何选择放心的减肥训练营→MAIGOO知识摘要:当你打定决心要开始减肥塑型,想找一个减肥训练营开始改变自己前,肯定有很多疑问,减肥班训练营多少钱一个月?如何选择放心的减肥训练营?这些会让你投入大量的时间,金钱和精力。因此,有必要对多家减肥训练营进行比较,选择一个能让你身心愉悦且最有效果的训练营。 https://www.maigoo.com/goomai/216402.html
6.暑期雅思封闭训练营价格高吗雅思常识总之,暑期雅思封闭训练营价格多少钱,取决于学校、地区和训练营内容,一般价格在1000-3000元之间。通过报名暑期雅思封闭训练营,可以帮助学生更好地备考雅思考试,提高考试成绩。 2024-11-25 07:34:07 心灵驿站 雅思封闭训练营价格多少? 雅思封闭训练营多少钱? https://www.yswxk.com/qa-detail/a2b949debb4b11eda80a00163e0b4118
7.武汉减肥训练营一个月费用大概多少关于“武汉减肥训练营价目表”内容。 皓千双十一“折扣享不停”!更低的价格会帮助你减肥。 胖的朋友! 一年一度的双十一又来了。 而且一年比一年早! 自10月底以来,人们一直在议论纷纷。 昨晚的付款人,你们还好吗? 年终奖是否需要直接支付到李佳琪的账户上?! http://www.jujushou.com/post/28356.html
8.减肥训练营减肥达人全封闭式正规减脂减肥中心机构官网深圳阳光兴亚文化传播有限责任公司诞生于2006年,主营运动减肥服务,产品业务涵括度假式运动减肥营、线上减脂服务、减肥公益赛事等。目前有减肥达人训练营、轻瘦减脂、减肥夏令营、减肥冬令营、减肥部落、公益赛事、减肥游等多个品牌。http://www.sunstarasia.com/
9.「吸星大法」第四期,来了!训练营价格 仅需199元。 一共九节课,分三周完成。 好东西,拒绝讲价。 这个价格其实已经非常便宜了,平时有很多平台想跟我们合作,问完价格后都做惊讶状,他们觉得这个价格太便宜,市场上学习方法类的课程大多都在1000元以上。 某学院的学习课定价为1289元,我报过他们的课程,课程内容,emmmmm~不做评价。 https://www.360doc.cn/article/31024613_984076643.html
10.登高而歌网络科技有限公司“讲真学堂”短视频和直播训练营价格一、33期短视频和直播训练营,收费2580元(微信180元+支付宝2400元)学费之后,服务态度恶劣,提出其服务存在问题,就把学员踢出微信群,让学员退费。二、买到的36天课程,是提前录制的app视频课程内容和学习计划,都是在缴费前讲真学堂副院长绰号叫“刀哥”的五天免费直播课的内容重复。在缴费前的各种承诺:“刀哥”亲自和https://tousu.sina.com.cn/complaint/view/17365515115/
11.女网红减肥去世!记者调查减肥营内幕,学员:几乎是饿瘦的“我选的是豪华双人间,原价5999元,优惠后5599元。”她告诉奥一新闻记者,目前她身高160厘米,体重65公斤,希望通过训练达到的目标体重是52公斤。 李小姐参加的减肥训练营价格表 据透露,训练营每周的课表不同,具体会根据实际情况进行调整。从李小姐分享的当日训练课表看_ https://static.nfapp.southcn.com/content/202306/15/c7796348.html
12.坯子库曲面推拉教程只会推拉工具你还好意思说你会SU?4)答疑解惑:训练营主讲老师将定期在营内为大家“加餐”,还会有职业答疑解惑哟~ 5)内推资格:训练营的优秀学员,还有机会获得一线设计公司的设计岗位内推资格。 6、线上训练营价格及报名方式 PDP施工图体系魔鬼训练营,原价888元/人, 但是,在现在这个特殊的时间,为了鼓励大家在家学习,我们第一期SU魔鬼训练营将成立疫情https://blog.csdn.net/weixin_31554959/article/details/112188032
13.ISC安全训练营挑战价格极限第三天!!![北京]i春秋安全训练营官方专题页:http://isc.360.cn/2016/training.html 那么大家怎么得到优惠购买的名额呢? 本帖1-8楼分别对应的: (1)3折购买任意课程(3个名额); (2)3.6折购买指定课程(5个名额)。 周二指定课程名称为:《无线电攻防大揭秘——来自顶级黑客大会的干货分享》 https://www.cnblogs.com/ichunqiu/p/5758966.html