小豆越来越累人了

豆豆又活泼又好奇,尤其喜欢新鲜玩法。因为我总是能变出一些花样来陪他玩,所以豆豆现在喜欢缠着我,只要我在家,他就赖在我身上不下来。

上星期给豆豆买了一套玩具,包括一组7辆工程车。豆豆最喜欢其中的水泥搅拌车,每次一拿到它都会开心的笑起来。豆豆喜欢它的原因大概是因为它的搅拌桶可以旋转吧。

豆豆最初是看我和豆豆妈在地上来回开这辆小车,然就就跃跃欲试的要自己去开。去外面草坪上玩的时候,豆豆就会用手抓着他的小车,撑在地上,推着往前爬,嘴里还要发出呜呜呜的声音。可惜家里的环境不太适合他爬在地上,于是我想出了一个办法:我弯着腰,双手托起他,让他身体与地面水平,一伸手又正好可以碰到地面,于是他就可以拿着他的小车放在地上,然后我往前走,小车就开起来了。豆豆别提多喜欢这个新玩法了,玩起来就不停。不过我可吃不消,几分钟下来腰就酸了。

昨天,豆豆在床上玩他的小车时,又想起了这个玩法。他爬到床边,伸手就要把小车在地上去开。奶奶一不留神,没有看住他,结果他咕咚一声从床上掉了下去。我听到哭声赶忙从里屋出来,发现可怜的豆豆头上被撞了一个大包。幸运的是,经过我的一番检查,发现豆豆没有受伤。也不知道是不是有第六感,我昨天上午陪豆豆玩的时候,就突然非常担心他会从床上掉下来。还一个劲追问我妈,我小时候有没有掉下床过,有没有摔伤。结果下午豆豆就出事故了。

豆豆原本惊魂未定,一看到我又兴奋了。扑到我怀里,然后指着地上的小车还要跟我玩。豆豆妈严厉指责了我:发明的玩法又累人,又危险。所以我再也不敢这么玩了。我现在改进了玩法:抱着豆豆,让他把小车搥在墙上开,虽然娱乐性差了点,但安全很多,我们也轻松不少。

豆豆的小车除了用来开之外,还用来摔和敲,所以寿命都不长。每辆小车的寿命都不超过五天。前两天,他把水泥车的搅拌桶给摔掉了,非常伤心,然后就把断开的桶和车体摊在我面前,用恳求的眼神望着我。看来我无论如何都要修好他最心爱的小车了。我找来一根圆珠笔芯替代原有断裂的滚筒轴承,重新把滚筒装了回去。豆豆看见滚筒又可以转了,高兴的直蹦。

昨天水泥车的轮子掉了一个,这个好办:拔下来一个其它小车的轮子就好了。今早他更是把小车控制轮子转动的机械设备给摔掉了,车轮不能转了。我只好把水泥车和两一辆他不太喜欢的小车的整个底盘都对调了。

豆豆现在认得很多电器了。我问他:空调在哪呢?他就指给我空调;问他:电视在哪呢?他就指给我电视;问他一个他没见过的东西,比如:洗衣机在哪呢?他就会琢磨一会,然后指给我一个发音最接近的东西比如电视机。

傍晚,我拿了个桔子给他。他拿在手里翻来覆去看了一会,然后递给我说:“嗯嗯嗯”,让我给他扒开。我于是扒开皮,他一把抢过里面的瓤,然后掰了一瓣,又递给我说:“嗯嗯嗯”,继续让我扒皮。我于是又扒掉桔子瓣上的革质表皮,豆豆啊呜一口吃掉了里面的肉。

异步调用

LabVIEW 2011 中增加了一个新的函数“异步调用”。这个函数可以简化运行异步VI或控制子线程的代码的复杂度。这个新函数在函数选板“编程->应用程序控制”里。

这里用一个例子来说明一下。

假设我们要编写这样一个程序,它的界面有一个仪表盘外加两个控制按钮:
image

当Play按钮按下时,让仪表盘指针旋转。当Stop按下时程序退出。我们假设维持表盘转动是一个持续的任务,并且它不能够阻塞程序的其它任务,比如对Stop按钮的响应。这样我就需要安排一个独立的线程来做维持表盘转动这一任务。

我为这个任务创建了一个VI,这个VI有两个输入参数,分别是表盘和Stop按钮的引用。
image

维持表盘转动的VI的程序代码如下:
image

它每隔10毫秒挪动一下表盘指针的位置,没两秒钟让表盘转一周。10秒后程序停止:
image

维持表盘转动的VI同时检测主程序中Stop按钮是否被按下,如果按下就立刻停止运行。

在LabVIEW2011之前,实现主程序功能的唯一方法是使用VI的“运行”方法,把“维持表盘转动VI”动态调用运行起来。主程序程序框图如下:

image

在这段代码最不尽人意的地方在于,运行子VI之前先要传递参数。这里只能通过VI的“设置控件值”方法为子VI传递参数。这种方法不但编写复杂,安全性也低。首先,它是通过控件名来找到需要传递参数的控件的,LabVIEW无法在编译时检查参数名字是否正确,子VI中的控件若是改了名字,程序编译时不会有问题,但运行时就会出错;其次,它无法检查需要传递的参数的数据类型,传递一个错误类型的数据进去,LabVIEW也不会在编译时出错。

使用“异步调用”函数,这段程序可以被大大改善:
image

需要注意的是,在使用“异步调用”函数前,打开VI引用的时候,一定要传递一个值为0x80的“选项”给“打开VI引用”函数。“异步调用”函数的使用方法与“通过引用调用”十分类似,这里就不赘述了。它们的去要区别在于“通过引用调用”是同步的,程序会停在这个函数上直到被它调用的子VI运行结束;而“异步调用”函数是异步的,程序在这里把子VI启动起来后,并不等待,会继续运行后续程序。

坐火车

好久没有写我的梦了。其实最近做了很多非常好玩的梦的,不过最近比较忙,没有心情写。今天比无聊,再写一篇吧。

昨天睡觉前跟老婆讨论春节回家的事,我提起说现在火车票可以网上订购了,结构就梦到了坐火车。今天早上6点多钟的时候,我一直迷迷糊糊的,并没有睡死。后来爸爸在门口喊我起床,哪知道他一喊我,我立刻就睡熟了,还做了个清晰的梦。

梦中我和几个同事坐火车旅行,我们在网上订购了卧铺票。火车启动后,我们躺在各自的铺位上聊天。火车停靠第一站的时候,我听到路过的乘务员聊天说现在火车厕所改进了,停车时候也可以用。我立刻蹦下来,去上厕所。

进了厕所,我发现这是一大间屋子,类似剧场车站等公共场所的厕所,有两长排的池子。我于是就很开心:以前火车上的厕所就只有一个坑位,现在变得这么气派了!

哪知乐极生悲,从厕所出来回到铺位发现自己铺位上躺着一个陌生人,旁边几个铺位的同事也不见了,都是陌生人,难道我走错车厢了?我于是走到车厢头,掏出车票来比对。我这时候才发现网上打印出来的订购凭据只有一个交易号码,没有写具体的铺位。我好不容易根据这个交易号码查询出了我订购的铺位,没有弄错。再回到位置上,我和同事的铺位还是都被别人占着。

好不容易从距离较远的隔间里找到了另外两个同事,我想他们询问情况。他们说:铁道部的网上订购系统出了问题,我们买的铺位在销售网点又被卖出去一遍。乘务员不认可网上订票,在刚才火车到站的时候把其他几个同事都撵下去了。

我气急败坏的去找乘务员理论,他根本就不理我。于是我掏出手机来威胁说我要投诉,等拨号码的时候我才意识到不知道投诉电话是什么。火车又快到站了,我想先别忙着投诉了,还是趁着火车没开太远,先回家吧,于是收拾行李准备下车。

然后我就醒了。

用鼠标在波形图控件上选取一条曲线

前几天上课的时候,有同学问起,LabVIEW是否提供了这样的功能,用鼠标在波形图控件上选中一条曲线。LabVIEW还真有这样的功能,它是波形图控件的一个方法“Get Plot At Position”。这个方法能可以查看波形图上一点附近是否有曲线经过,如果有,就返回这条曲线的索引。我写了一段示例程序:

这段程序的功能是,当鼠标点击在波形图控件的某一条曲线上时,把这条曲线变粗显示。程序框图如下:
image

这个程序开始先造了两条随机数据的曲线。当用户在波形图上点击时,就调用“Get Plot At Position”方法查看是否有点击在了某条曲线上。如果是,则使用“Plot.LineWidth”这一曲线的属性把曲线宽度设置为2,其他曲线宽度都只有1。

程序运行效果如下:(蓝色曲线被加粗)
image

不可解问题

这两天看到一篇算法方面的文章,提到了不可解问题。于是我自己也想了一下。我能想到的不可解问题只有一类(不知道是否还有其它类型的不可解问题?):是由无限引起的不可解。

比如这个问题“打印出所有的整数”就是一个不可解问题,因为整数是无限的,无论哪种算法都无法将其全部列出。图灵提出的The Halting Problem也是这样一种情况,由于它是一段可能被无限次递归调用的代码,因此无法判断其运行结果。

有一类问题是暂时不可解的,不可解是因为它没有被现有公理所覆盖到。这类问题一旦被发现,人们就会补全公理体系,问题就解决了。比如说哥德巴赫猜想就有可能是这样一个问题。哥德巴赫猜想还没有被证明,所以现在不能确定它是否可解,不过也许有一天人们会发现从现有所有的数学公理都无法证明这个题目,它本身可能就会变成一条公理,被加入到数学体系里去了。

豆豆一岁了

12月6号是豆豆的生日, 不过我们为了赶在周末,提前了两天给他过。

我们给豆豆买了一个生日蛋糕,蛋糕店不肯写字,豆豆妈自己动手写上了豆豆两个字。

DSC02974

我们还特地教豆豆比划出1这个数字。蛋糕店送了个好玩的帽子,不过豆豆不是很喜欢。

DSC02994DSC03120

中午吃完蛋糕,就带豆豆去外面草坪玩。

DSC03131

豆豆爬得可开心呢。

DSC03238

豆豆是大力士,已经可以把他的大汽车搬起来了。

DSC03198

豆豆看见一个美女,赶紧凑过去亲密一下。

DSC03159

回家前,又跟爸爸疯了一阵。

DSC03177

DSC03306

虽然豆豆只能说一些简单的单词,比如爸爸、妈妈、袜袜等,但是大多数日常用语他都可以理解的。比如问他奶奶在哪呢,他就会去吧奶奶找出来。豆豆其实很爱说话的,只不过他说的话俺们都听不懂。

上午我和豆豆妈领着豆豆去取他的大蛋糕。本来是推着小车出去的,可是豆豆不喜欢坐车,非要让我抱不可,我只好抱着他。一路上,他就指着每一家路过的小店,跟我呜呜哇哇的说话。豆豆可真沉啊,出去取蛋糕,我来回抱了他差不多40分钟的时间,等回到家里胳膊就酸的抬不起来了。

豆豆现在跟爸爸可好了。我每天回家,一进门看见豆豆,他总要先大叫一声,然后就过来让我抱。然后就赖在我身上让我陪他玩。有时候我上个厕所他也要跟进来看看。