LabVIEW Web UI Builder

LabVIEW Web UI Builder是NI公司去年发布的一个软件,它是一个基于网页的软件,供用户编写简单的或者是需要通过网络发布的LabVIEW程序。

这个软件目前还是“预览版”,它的功能尚未完善,但基础功能已经有了,想见识一下网络版LabVIEW什么样的,现在就可以去玩一下了。这个软件的网页是:http://www.ni.com/uibuilder/。它的主页上有使用介绍以及一些示例程序的界面。

image

我们可以直接点击 Try It Now 按钮,启动 LabVIEW Web UI Builder。LabVIEW Web UI Builder是基于Silverlight编写的,如果网络速度较慢,第一次启动它可能需要等待一段时间。

软件起来以后,首先进入登陆界面。LabVIEW Web UI Builder必须登陆后才能使用,若没有账号,可以免费注册一个。

image

登陆后,就进入了程序的主界面了。大家看得出,这个软件的风格已经完全不像是之前的LabVIEW了,相比之下,他更接近Office的风格。

image

好在LabVIEW Web UI Builder非常简单,即便换了风格,也可以很快上手。先来点击“New VI”按钮创建一个新VI。

image

与桌面版LabVIEW不同,LabVIEW Web UI Builder不再采用窗口的方式,而是使用了单一一个集成开发环境,所有的VI都被放在了一个主环境内进行编辑。主窗口的中部是文档区,VI文件都在这里进行编辑;上方是Ribbon,常用的工具按钮;两侧以及下方摆放了其它一些编辑工具或者信息显示窗口。

尽管LabVIEW Web UI Builder的风格变了,但编程方法和原理并没有变化,它仍然还是LabVIEW。以编写一个简单加法运算的程序为例,先编写程序界面,从控件选板上脱下来三个数值型控件用于控制和显示数据:

image

现在VI的前后面板被和到同一个子窗口中去了,不像以前那样,分属两个窗口。点击VI编辑区,左上角纵向排列的两个按钮中下方那个,就切换到程序框图了。大家看到的程序框图上列出的三个接线端,就是刚才我们放置的三个控件的接线端。

image

由于程序原理与以前的LabVIEW完全相同,我就不赘述了。不过需要注意的是,LabVIEW Web UI Builder不支持鼠标右键菜单。以前在右键菜单中完成的工作,可以使用Adorner来完成。Adorner是指,当鼠标选中一个对象后,在对象周围浮现出来的一些操作选项。比如下图中,我周在为While循环的停止条件创建一个控件。

image

下图是编写好的程序:与以前的LabVIEW完全一致吧!

image

点击Run按钮可以让VI运行起来。

image

使用网页版LabVIEW的一个好处是,可以直接把编写好的程序存在NI的服务器上。保存时,程序会问你存放的Location的。

image

当然想把程序存到本地来也是可以的,点击Ribbon上的Export按钮,可以把程序导出到本地,存成后缀名为vix的文件。

如果大家打开这个vix文件看一下,就会发现,它是一个XML格式的文本文件。以后LabVIEW程序编写的时候可视化操作,保存的时候存成文本,图形化编程语言和文本语言的优势可以得兼,前景相当光明啊。

image

Packed Project Libraries 2 –与Library的比较

Packed Project Library 从名字上来看,就是被包装好了的Project Library。Project Library 是编程时候由程序员创建出来的。比如下图这个工程,我在里面创建了一个叫做“My Algorithm Library.lvlib”的工程库。它包含两个VI,其中一个是私有的。

image

Packed Project Library 并不是手工创建的,他是通过一个项目的生成规范,从 Project Library 编译而来的。比如上图的项目,我创建了一个Packed Library类型的生成规范。我在这个生成规范中指定把“My Algorithm Library.lvlib”编译成Packed Project Library 。

image

编译的结果是在我指定的路径下生成了一个名为“My Algorithm Library.lvlibp”的文件。它的后缀名仅比Packed Library多了一个字母p。

双击这个文件,可以打开它,看到他里面包含的VI:

image

如果需要在其它项目中使用到这个Packed Project Library,我们可以直接把它加到另一个项目中去,下图是一个演示项目:

image

Packed Project Library 看上去和 Project Library 非常相似,用法也完全相同。

Packed Project Library 与 Project Library

  • 都是将功能相关的一组VI封装起来的方法;
  • 库中的VI可以具有层次机构;
  • 库中的VI都带有名字空间,名字空间是带有后缀名的库名;
  • 都可以方便的放在项目管理器里使用

尽管它们十分相似,Packed Project Library 与 Project Library 相比,还是有一些明显区别的:

  • Packed Project Library 是通过编译生成的;
  • Packed Project Library 中的VI是编译后产生的,它们不能被修改;
  • Packed Project Library 包含有私有VI,但用户无法看到也不能使用它们;
  • Packed Project Library 把VI,.lvlib以及其它用到的文件都打成一个压缩包,用户在磁盘上就只能看到一个.lvlibp文件,看不到VI文件;
  • Packed Project Library 很适合作为最终产品发布给用户使用;
  • 在项目中使用Packed Project Library 可以缩短编译时间,因为Packed Project Library 中的VI是已编译好的,不会再随项目编译一遍。(这一条先这样写上,但我还需要再深入研究一下)

豆豆八个月

时间过得真快,一转眼,豆豆8个月了。

和同龄小宝比起来,豆豆人高马大,力气也大,但还没有学会控制自己的蛮力。他抓人的时候会死死的抓,咬人的时候拼命咬,搞得家里人人带伤。豆豆爸的胳膊上有好几道伤口,以至于豆豆的暴行都已经传播到爸爸的公司里了。不过,受伤最重的还是爷爷,爷爷的后背都被豆豆给抓烂了。

为了防止他长大以后赖账,我们还特地把豆豆的罪行给拍下来了:
DSC02279

豆豆几个星期前又长了一颗牙,到现在还是总共5颗牙。豆豆总是有一颗牙领先于同伴先出来。

周末,又给豆豆剃了一个光头,然后领着他去逛商场。
DSC02301

豆豆是个“野孩子”,就喜欢往外跑。他现在可以听懂一些简单对话,看明白一些动作了。一旦发现有出去玩的迹象,就兴奋的小腿直蹬。最近天热,我在家喜欢光膀子,出门才穿衣服,这个习惯被豆豆发现了。平时早上都是爷爷抱豆豆出去散步,所以一大早豆豆就抱着爷爷不放。我叫他,他不理。于是我就拿来T恤当着他的面穿上,他立刻就对我改变了态度,伸出小手往我身上扑。等我一抱上他,他就死死抓住我的衣服,说什么都不肯松手了。

豆豆现在太沉了,抱他出远门可吃不消,于是我翻出了豆豆的座驾。这是豆豆的豪华敞篷跑车:
DSC02315

第一次坐上小车的豆豆既紧张又兴奋,在车里东张西望,看得可带劲了。但是到了没风景的地方,他还是不喜欢自己呆在车里的,一定要让人抱。

我们一家人推着豆豆来到了港汇广场,豆豆都看傻眼了。
DSC02319

到了吃饭时间,我们打算在港汇5楼找一家饭店吃一顿。没想到这里生意极好,除了两家店,其它饭馆都需要排队。这里最清闲的饭馆是肯德基,门可罗雀。我还从来没见过肯德基在用餐时间可以不排队的。看来这种快餐店就适合开在商场底楼,我估计人们选快餐店的一个重要原因是顺路,开在楼顶肯定影响客源。我们不想浪费时间,于是选了另一家不需排队的餐馆,一个叫什么蕉叶的东南亚风味餐馆。吃上之后,发现这里不用排队是有他的道理的,真难吃,我是再也不会来了。

豆豆的表现真乖,一家人吃饭的时候,他不哭也不闹,自己在那啃勺子玩。
DSC02343

吃完了饭,下楼来到儿童专区。这里有一小块供儿童娱乐的区域。里面的小朋友不算很多,于是我把豆豆也抱了进去。这里地面宽阔,比家里适合练习爬行。豆豆已经可以比较自如的往前爬了,但他的腿脚还是不听使唤。他只能依靠胳膊的力量,慢慢匍匐前进。
DSC02345

旁边一个十个多月的小宝也在练爬行,他已经非常熟练了,腿脚十分协调,嗞溜嗞溜爬的飞快。尽管他比豆豆大了两个多月,但外形还比豆豆小了一大圈,所以爬起来比较轻便。

豆豆追着一个红色的皮球爬了十多米,这是豆豆爬的最开心的一回了。晚上回到家里,兴奋劲都还没过,吃饭都不好好吃,一个劲在床上爬。

大概豆豆这一天玩的太累了,第二天居然病倒了。早上妈妈给豆豆喂奶的时候,发现豆豆头很热,于是给豆豆量了一下体温,37.9℃,不算太高。豆豆吃完奶后,体温又稍有下降,我猜想可能是昨天太累了,或是水喝少了引起的,也许过一会就好了。哪想到过了才一个小时,豆豆的体温就升到39.1℃了。一家人这时候都急坏了。

从查到的资料来看,豆豆有可能是得了幼儿急疹,或者叫玫瑰疹:一种没有太大危险的传染病,不需要治疗,三天后自然就会退烧痊愈。但是,联想到豆豆前一天跟一大堆小朋友疯了半天,我就怕他染上某种儿童间传染的炎症一类的病,于是还是决定送豆豆到医院检查一下。验血的结果是白血球偏低,排除炎症的可能,基本上可以确定就是玫瑰疹一类的病了。大家总算放了心。

到晚上的时候,豆豆仍然还有点发烧,但温度已经降下来了。大家本来担心豆豆晚上会闹的,结果他睡的还挺香,一点都没哭闹。早上醒来,我一摸他脑袋,原来已经退烧了,病好啦Open-mouthed smile。没想到豆豆这么强壮,一下子就战胜了病毒。

豆豆第一次发烧,但是表现的非常勇敢。除了体温超过39℃那段时间,他有点发蔫,其它时候,吃喝玩乐都不影响。尽管非常难受,但是豆豆还是会被逗的呵呵乐。只不过乐的时候还带着点哼哼唧唧的腔调,看着非常招人怜惜。

Packed Project Libraries 1

我使用Visual Studio的时间远比使用LabVIEW多。Visual Studio可以每次打开一个Solution,一个Solution包含多个Project。一般来说,我会为一个软件产品创建一个Solution。这个软件产品可能由多个文件组成,比如说有一个EXE,两个DLL组成,那么就为他们创建三个Project。每个Project的源代码都是独立的,可以设置自己如何编译,每个Project就可以被分开来开发。Projects之间是可以有依赖关系的,比如说编译EXE的时候可以自动的把另两个DLL先编译一遍。

LabVIEW的“项目”这个概念都是最近几年才有的,因此在这方面没有Visual Studio强大。在LabVIEW中,只有Project这一级,而没有Solution。这在开发大型程序时是有一些不便的。我觉得最严重的问题是程序模块划分不好做:所有的VI都只能放在一个Project中。最终生成的可执行文件是一个比较大的EXE文件;每次编译都有编译项目中所有的文件,很耗时;所有代码都混在一起,不容易彻底分隔开。

有些公司发布的产品不是可执行文件而是一个功能库,供其它程序调用的。他们或者以VI的形式发布,这样他们的VI源程序会被放置到用户的工程中去,很不合理;或者以DLL文件的形式发布,LabVIEW中调用DLL又很麻烦。

这个问题一直到 LabVIEW 2010 发布后才有所改善。LabVIEW 2010 增加了一种新的文件格式 Packed Project Libraries (*.lvlibp)。这种文件格式兼有原来lvlibllb文件格式的一些优点,再模块化程序的时候,可以考虑使用Packed Project Libraries 。