《职场动物进化手册》读后感

    先把本书的开篇问题拿来考考大家:
    肥猫本是一家大企业的高管,羽翼丰满了,于是跳出来单干,做医疗器械代理。肥猫在三个月的时间内,先后聘用了四名刚毕业的大学生来他的公司试用。四个人的月薪相差无几,都在每月 1200~1500 之间,并按销售业绩 12% 的比例提成,做为奖金收入。
试用期眼看要束了,四个业务员的情形是这样的:
    业务员 A,猪猡:来了近三个月了,老实听话,但稍一放松管理就偷懒,工作不指派到头上决计不会主动动手,叫苦的时间远比干活的时间更多。他工作时间最长,但业绩为零,始终没有搞定一家客户。
    业务员 B,狐狸:聪明机灵,表面上对肥猫唯唯诺诺,其实自己心里另有鬼主意,特别会干面子活,是得到肥猫夸奖最多的业务员。目前狐狸已经搞定两个单,为公司创收八万元。
    业务员 C,绵羊:勤奋耐劳,善于死缠乱打,他除了跑业务还经常被肥猫指派一些其它方面的工作,目前他是唯一任劳任怨的员工。虽然他来的时间不长,却也搞定一个单,为公司创收六万元。
    业务员 D,猴子:心思灵活,眼观六路,耳听八方,有狐狸的聪明,但不象猪那样懒,只是工作时不象绵羊那样实在。目前猴子正在全力推动与一家大客户的商谈,这家客户希望将价值六十万的订单交给肥猫公司来做。
    因为肥猫的公司较小,他决定四个业务员中只留下一个,予以重用,解聘其余三个。你认为肥猫会留下谁呢?

    我经常会想,如果我现在独立开一家公司的话,我有没有能力维持并把它做大呢?基本上,我对此事没有信心的,要不然我就不用还在这给别人打工了。读过了《职场动物进化手册》,我又发现了自己的一大缺陷,就是政治水平不够。不要说我还没有学会用资本家的思想来考虑问题,甚至连做一个部门主管的政治水平都没有。
    肥猫选择留下了猪猡。不但如此,肥猫还对他委以重任。随着公司规模不断扩大,性质也有小作坊变成上市股份制公司。这期间,公司管理层换了一批又一批,只有猪猡长盛不衰,是公司永远的副总。资本家也不是那么好做得,这样的方案也能想得出,还要做得到。
    本书的故事虽然是虚构的,但情节却并非夸张。想我本科毕业的时候,有一家公司来学校招聘,他们面试的结果让我们大跌眼镜:成绩好的不要,能力强的不要,技术水平高的不要… 我当时真是搞不懂他们怎么想得,只是诅咒这样的公司赶紧倒闭。当时采用这种标准的不仅只有这一家,我对它记得牢是因为几年之后,这家公司越做越大,居然还上市了,搞得我一下子就对中国股市失去了信心。

    现在相当一部分公司就像是漫画里说的:把女人当男人用,把男人当畜牲用,把畜牲当干部用,把干部当奴才用。和同学聚会的时候,常听到的一种抱怨就是,某人说他现在的主管是只猪,业务不懂,能力没有,除了给大老板拍马屁,什么都不会。可就是这样一只猪却可以拿着比他高几倍的工资对他发号施令。于是他对这家公司的前途彻底失望了,跳槽换了家公司。过后发现新公司居然还是这样,而他原来的公司也没有向他料想的那样很快破产,相反,效益仍然蛮好。
    也许这并不是一个偶然现象了:从一家公司的内部看过去:作风官僚、奸臣当道、拉帮结派、党同伐异;好的建议不被接受,好的人才得不到重用;公司大部分的资源都在内斗和扯皮中被浪费了。而从公司外部看过去,看到的却是完全不同的光鲜情景:公司效益原来越高,规模越来越大。在这样的一种情形下,也许我们就不能对这种现象做太过偏激的评论了。尤其是只是一味抱怨对个人进步没有任何好处。个人只有适应社会,适应周围的环境和制度,才能比较顺利的发展。而要想适应这个社会,总要先全面真实地了解它吧。所以,与其怨天尤人,不如反思一下自己。或许自己对这个社会的理解还不够透彻,或许很多看上去不合理的结构,并非毫无道理。

    说回来吧,这本书讨论的其实就是办公室政治。我一直很讨厌政治,一提起它,首先联想到的就是各种阴谋诡计,和各种丑恶的嘴脸。相信很多人也和我一样的。所以我一直试图躲避所谓的政治:不参加任何与此贴边的组织和活动,不和别人严肃的讨论相关问题。我看这个世界的时候也是强加了很多主观意愿在其中的。就想傻根眼中的的天下没有贼一样,我也看不出我所在的办公室里有什么政治。不过有人的地方,就有江湖,这江湖就是政治了。一味的对喜欢的东西视而不见,绝对不利于自己的成长。最近有几个朋友总是劝说我要提高一下认识,或许我的确应该换个角度来看看日常发生的问题了。
    《职场动物进化手册》还是很适合做办公室政治入门书的。因为它不是一本教科书,而是一部轻松幽默的寓言。即便对政治一窍不通的人也不至于看起来觉得沉闷。读完全书,发现我需要对自己在公司的地位重新评价,当然对每项工作的优先级也要用新的方法衡量衡量了。对照书中的动物,还真的看到了不少周围熟悉的影子 :)
    外企之中,最常见的动物就数蠢驴了。因为,大多数的舆论都是鼓励人们作蠢驴的。我也一度非常喜欢蠢驴这个角色,但是人的思想是会变得,我现在开始不喜欢这个角色了。脱离这个角色,首要的任务就是培养政治头脑。蠢驴们并非智商或情商低,想不通政治这东西,而是很多蠢驴本身对政治这东西有抵触情绪。如果能消除这种抵触,意识到它也是帮助个人成功不可缺少的一门学问,蠢驴是可以一跃进化为猎犬的。

    当然,敏感的政治头脑不是看一两本书就能养成的,还需要长期的熏陶和培养。咱先从身边的政治开始学起吧。这本书看完,我总算是朝着狗狗的方向,进化了第一步。

相关文章
    《职场动物进化手册》全文
    《生活随笔》

编辑

Advertisements

Blog 写作利器 – Windows Live Writer

 Quote 部落格寫作新利器 – Windows Live Writer

 微軟也出部落格寫作工具啦~ 一開始根本沒聽說會出這個玩意,之前都無任何消息,就這樣蹦出來!用這個有什麼好處呢?  不用怕瀏覽器當掉!! 當掉!! 還有居然可以改發文時間(還真的可以改) ,這樣寫Spaces又增加一種方法囉,雖然還是英文測試版,不過有興趣的就看看有什麼功能吧~本篇就是使用Windows Live Writer 寫成發佈的。

 

  1. 所見即所得的部落格寫作介面(這是一個講究直觀又方便的軟體所必要的吧)
  2. 貼上圖片功能增強(Insert Picture) 
    a.可以直接把電腦的圖放上去,在發佈的時候會自動把圖上傳到你的分享空間相簿的Blog Images裡,省下上傳再重新貼圖的時間。
    b.圖片、照片可以直接增加邊框(目前僅3種),套用效果(像黑白相片、色相調整、模糊等)之後直接按Publish發布就行了。
  3. 貼上地圖功能(Insert Map) – 這個功能越來越流行了,例如在台灣,無名小站就可以直接貼上UrMap(地圖網站)功能(見範例),在Windows Live Writer的作法是變成圖片貼上部落格,然後圖片連結直接連上Windows Live Local(地圖網站) ,不過台灣的地圖解析度與語言要盡量改進就是了^^|||
  4. 對其他網站的部落格支援 – 如Blogger.com 等 並且支援 RSD (Really Simple Discoverability)、 Metaweblog API、和 Movable Type API 系統的部落格。
  5. 自行開發Windows Live Writer的新功能- 使用Windows Live Writer SDK工具

相關網站:
Windows Live Writer 開發網誌
http://windowslivewriter.spaces.live.com/
Windows Live Writer社群
http://groups.msn.com/windowslivewriter

下载:Windows Live Writer (4.7MB)
系統需求:WinXP且需安裝.NET Framework 2.0套件 (22.4MB)

貼上地圖功能範例:


太空針塔 – 西雅圖

如何更改發文時間?
Ans:
1.按下選項
2.勾選Date/Time選項,並選時間,再重新按Publish發佈文章即可。
 
3.更改發文時間之後,就可以隨意更改文章顯示的"順序"了。

整合 wiki, blog 和 forum

    现在,wiki、blog 和论坛都已经成为我工作中不可缺少的工具了。他们三个各有优缺点:
    wiki 上的文章,你即便不是作者也可以进行修改。并且 wiki 将把所有的修改历史都记录下来,用户可以方便地查看每个文档的历史版本。因此 wiki 比较适合一个组织发表规范、制度一类的文档。wiki 最大的缺点是无法针对某一篇文章发表评论。如果强行把自己的评论加载原文下方,则会破坏原文版本更新的记录,这不是个好方法。
    blog 解决了发表评论的问题,但同时丧失了 wiki 的优点。一个 blog 站点通常只是一个人发布文章,作者可以修改自己已发布的文章,但历史记录不能保存下来。所以 blog 适合个人使用,用于发表看法和收集反馈。当然也可用于为某个项目收集反馈。
    论坛和 blog 的区别完全在于分类方法不同,其他差别则不大。blog 是按作者分类的,论坛则是按照文章内容分类的。当你对某一个话题比较感兴趣,想查看其他人对它的看法,论坛的形式就比较合适。因此,很多论坛已经和 blog 结合在一起了。网站的数据只有一份,你想按照作者分类查看文章,那么它看上去像个 blog,如果按照文章内容分类,则看上去就像是论坛。
 
    我想肯定已经有人想过,但现在还没有见到这样的成熟产品:把这三样都整合到一起。这种服务网站应当是这样的:
    进入网站,读者可以自行选择是按照文章内容查看,还是按照组织、个人作者查看。其中组织是由若干个成员组成的:发表在组织入口下的文章,每个组织成员都可以对其进行修改。而读者不能对非自己组织发表的文章进行修改。
    读者可以对网站的所有文章加评论。但除评论发布者,其他人不能对评论进行修改。
    网站的所有文章的修改记录都应被保存下来。读者可以查看文章的旧版本内容。
 
相关文章
 
 

《PERSONAL POWER》读后感

    确切的说,应该是听后感。这套《激发个人潜能》是由安东尼 罗宾(Anthiny Robbins)主讲的一套有声教程。安东尼据说是现在美国出场费最高的培训教师,他讲的课程内容基本都是关于励志、心理辅导方面的。这套长达三十天课时的《激发个人潜能》实在是长了一些,某些章节明显有拖延时间和故弄玄虚的嫌疑。但是,我不得不说,这是我所有看过的书、听过的教程中对我影响最大的一部。我的性格在这几年发生了一些明显的变化,其中变化最快的阶段就发生在聆听这套教程的一个月里。
    如果你对自己的性格或心态有不满意的地方,又迫切地想取得一些改变,那么我向你推荐这套教程。

一、人们行为的动机

    人的需求,或者说各种行为的动机都是什么呢?我记得在学校的时候,有的课本上把人的需求按层次分了几层:越是底层的越是重要,当低层需求得到了满足,人们就会转向更高层次上的追求。比如从低到高的需求一般是:生存的需求、温饱的需求、养育后代的需求、交流的需求、被别人认可的需求等等。可是我对这种分层方法一直是有些异议的:因为它总是存在着特例。比如有些人宁可死也决不会去做某些事、有些人可以饿着肚皮去帮助别人等等。有特例存在,则说明此理论还不够完美,对问题的分析还不够本质,我认为应当有更本质的东西在指挥着人们的行为和取舍。

    相比之下,我就比较欣赏《PERSONAL POWER》对这个问题的本质的分析。

    人的行为只有两个目的:逃避痛苦和追求快乐。当然这两点其实是一回事,但是它们的优先级有所不同,并且可以被我们加以利用,因此还是把它们分开来讨论。对于同等程度的痛苦和快乐,人们逃避痛苦的动机要远远高于追求快乐的动机。如果你意识到,一件事情既可以给你带来痛苦,也可以带来快乐,通常你就不会去做这件事了。判断任何一件事情是和快乐联系在一起,还是和痛苦联系在一起的,则每个人的观点都是不同的,并且这种观点是可以通过外界影响被改变的。所谓的“洗脑”就是重建这种联系的一个过程,它的效果之明显往往出乎人们的预料。

    现在可以分析一下这种联系对人会产生什么样的影响。有的人想自杀,是因为他们已经把生存和极大的痛苦联系在一起了,为了逃避痛苦,他们可以做出任何事情,包括放弃生命。有一种人叫做受虐狂。为什么这种人可以忍受肉体的痛苦?因为他觉得肉体痛苦的程度是比较低的;但是,别人虐待他是因为别人重视他,“爱”他,折磨是爱的一种表现,而被爱是快乐的。这种快乐远远大于肉体的痛苦,所以他可以享受被虐待的过程。还有的人通过天堂的72个处女,把当人体炸弹和快乐紧密联系到了一起。
    由以上的分析可以看得出这两种动机的强大力量,它们可以造就出完全变态的人格。但是这两种动机并非只能驱动人们去做坏事,如果我们了解并能够合理利用这种驱动力量,它是可以帮我们克服自身的缺点,驱使我们走向自己设计的成功道路的。

二、自我“洗脑”

    在争取成功的道路上,我们或多或少都存在着一些明知道有害,自身却难以克服的障碍。下面我用几个案例说明一下如何利用上述的动机理论来帮助自己。
    对当众讲话感到恐惧是一种比较普遍的不良心理状态。这种恐惧使得许多人不敢在公众场合、尤其在会议上发表自己的观点。进而它使得你错失了展现自己才华的机会;你无法得到别人的认可;你很难取得成功。
    在中国,有这种恐惧感的人的比例远高于西方国家。我们周围相当多的人也许都有过这样的经历:小时候,也曾当众表达过自己想法。 由于年龄尚小,说出来的东西非常幼稚,结果是招致听众的一片嘲笑,让我们觉得极其难堪。或许那些听众根本没有意识到自己对他人造成了伤害,但是我们经历过数次这样的遭遇之后,就逐渐把当众讲话和痛苦联系在一起了。即便到我们成年后,环境变了,周围的人的处事方法也不同了,再也不可能对你的观点轻蔑嘲笑了,但恐惧感依然存在。
    现在问题来了,假设你现在进入了一家外企,在这家企业里闷不作声的员工肯定很难有出头之日。那你就要开始考虑如何改变自己腼腆沉默的性格了。
    要克服当众讲话的恐惧,首先要理性地考虑一下,当众讲话是否真的对我们有负面影响。我前面提到过,现在人们的理念已经比二十年前进步多了。尤其在外企,不大可能会有人故意贬低你的观点。即便有个别人以取笑别人为乐,他们也决不会成为什么重要人物,对你不会有什么影响。反之,老板在会上征询意见,你抢先站起来说上几点,不论你的意见如何,至少在老板那混了个脸熟。以后老板能不时想起你,就给自己留下了一个好机会。再者,即使你说的意见不合时宜,以后自己不提,别人也不可能想起来。要是说对了,它可以作为自我吹嘘的一个重要谈资。这是只赚不赔的好事啊,万万不可和恐惧联系在一起。这么一想,就知道了当众讲话能给我们带来的快乐。
    上文说过,人追求快乐的动机没有逃避痛苦的动机强烈。所以更有效的方法是要把不敢当众讲话与更强烈、更深层次的痛苦联系在一起。不敢当众讲话有什么痛苦呢?当然有。你不敢当众讲话就会失去表现自己的机会,就会被埋没。日积月累,多年之后,当你的朋友们都事业有成的时候,你还是平庸无为。那时候你是何等痛苦?如果你现在就能清楚地感受到这种痛苦,就自然有决心、会想办法主动改变性格来避免它了。
    其他类似的情况还有:你想减肥,但是将来苗条美丽身材所带来的快乐可能比不上眼前美食带来的快乐这么实在。这时你就要变换思路了,要把美食和痛苦联系起来,之后自然就会少吃。戒烟后口气清闲,节省开支等等带来的快乐,远远抵不过烟瘾犯了时的痛苦。想戒烟吗,就必须把戒烟与比烟瘾更大的痛苦联系起来。
    道理已经说清楚了,但执行起来就不像说的那么容易啊。比如,当众讲话与恐惧这种在我们成长过程中逐步养成的关联是很难被打破的。再比如吸烟,他带来的痛苦即便深刻,那也是比较遥远的事情,而吞云吐雾的快感却是近在眼前的。再加上人常有侥幸心理:我吸烟就一定得癌症吗?诸如此类,都是我们重建快乐、痛苦联接的障碍。要克服这些,或者等待某个重大事件发生,一下子改变了你已有的联接关系;或者需要一个长期的不断强化新联接的重建过程。
    重大事件的发生是可遇而不可求的,我们可以掌握的是后者,多花一点时间同样可以达到效果。以克服美食的诱惑为例,找个每天陪在你身边的人做教练。你每次夹起一块肉的时候,他就跟你说又有谁因为太胖而恋爱失败;或者因为太胖得了心脏病、肝硬化什么的;然后还要把病人的痛苦、肝脏上的肥油等等描述得绘声绘色。这样虽说恶心了点,不过用不了多久,你就会把盘里的肉和病变的心、肝什么的联系在一起,对肉类再也没有食欲了。
    没有合适的教练人选,那反复听听这套《PERSONAL POWER》也可每天给你鼓劲,充当教练用。

三、我的经历

    我自己也经历了一个克服与人交流障碍的这样一个过程:从见了生人就脸红,一声不吱,到可以用英语向台下几百个老美工程师吹嘘自己的技术。变化虽大,用的也不过是上面的方法,就不再重复了。还是说一个比较好玩的转变吧。
    我本来特别喜欢吃海鲜,可是有一天突然得了“人工荨麻疹”,一种过敏性疾病。照例海鲜这种刺激性的东西是不应该再碰的了,可我就是馋得忍不住。而且有点侥幸心理,觉得海鲜也许不会加重我的病情吧?于是鱼虾照吃不误。终于,有一天在吃过海鲜大餐后不到两个小时,手臂上就起了一片红斑,奇痒无比。吃药不管用,三天之后才慢慢消去。打那以后,就算看见再大的龙虾,我也不流口水了,因为我已经把它和痛苦联系在一起了。庆幸的是,自那以后我的过敏也开始有所好转了。

相关文章
    生活随笔

编辑

LabVIEW 程序中的线程 2 – LabVIEW 的执行系统

二、LabVIEW 的执行系统

1. 什么是执行系统

    早期 LabVIEW 的 VI 都是单线程运行的,LabVIEW 5.0 后才引入了多线程运行。其实,对于并排摆放的LabVIEW 函数模块而言,即使LabVIEW 不为它们分配不同的线程,通常也是“并行执行”的。LabVIEW 会把它们拆成片断,轮流执行:这有一点像是 LabVIEW 为自己设计了一套多线程调度系统,在系统的单个线程内并行执行多个任务。
    LabVIEW 中这样一套把 VI 代码调度、运行起来的机制叫做执行系统。现在的 LabIVEW 有六个执行系统,分别是:用户界面执行系统、标准执行系统、仪器I/O执行系统、数据采集执行系统、以及其他1、其他2系统。一个应用程序中使用到的众多子 VI 可以是分别放在不同的执行系统里运行的。用户可以VI 属性面板上选择 Execution 页面,可以在这个页面指定或更改某个 VI 的首选执行系统。

2. 执行系统与线程的关系

    LabVIEW 在支持多线程以后,不同的执行系统中的代码肯定是运行在不同线程下的。用户界面执行系统只有一个线程,并且是这个程序的主线程。 这一点与其他执行系统都不一样,其他的执行系统都可以开辟多个线程来执行代码。用户除了可以设置 VI 的执行系统,还可以设置它的优先级。优先级分 5 个档次(暂先不考虑 subroutine)。在 LabVIEW 7.0 之前, LabVIEW 在默认情况下为同一个执行系统下每个档次的优先级开启一条独立的线程;而在LabVIEW 7.0 之后,LabVIEW 在默认会默认的为每个执行系统下每个档次的优先级开启 4 条线程。当然你使用 \vi.lib\Utility\sysinfo.llb\threadconfig.vi 可以更改这一设置。但是对于普通用户来说最好不要改动它。
    在用 C 语言编写多线程程序时,你还要注意不能开辟太多的线程,因为线程开辟、销毁、切换等也是有消耗的。线程太多可能效率反而更差。但是使用 LabVIEW 就方便多了。在使用默认设置的情况下,LabVIEW 最多为你的程序开辟 5 条线程:一条用户界面线程,四条标准执行系统标准优先级下的线程。五条线程不会引起明显的效率损失。

3. 用户界面执行系统

    程序中所有与界面相关的代码都是放在用户界面执行系统下执行的。就算你为一个 VI 设置了其他的执行系统,这个 VI 的前面板被打开后,他上面的数据更新的操作也会被放在用户界面执行系统下运行。还有一些工作,比如利用 Open VI Reference 节点动态的把一个 VI 加载到内存的工作,也是在用户界面执行系统下运行的。
    前面提到了,用户界面执行系统一个最特殊的执行系统,因为它只有一个线程(我们就给这个线程起名叫用户界面线程好了)。LabVIEW 一启动,这个线程就被创建出来了,而其他执行系统下的线程只有在被使用到时才会被 LabVIEW 创建。
    在图1 中的例子中,如果是运行在其他的线程下,都会把我的双核 CPU 占满。原因参考本文第一章(LabVIEW 是自动多线程语言)的图2。但是如果我们把 VI 的执行系统改为用户界面执行系统,那么这两个循环就会运行在同一线程下,我的双核 CPU 其中一个核将被占用 100%,另一个则基本空闲。
    图2 是 VI 在运行过程中的一幅截图,虽然程序在单线成下运行,两个循环仍然是并行运行的,两个显示控件的数据会交替增加。

    
图1、2:在界面线程-单线程下运行的并行任务

    因为 LabVIEW 是自动多线程的,如果一些模块不能保证多线程安全,就需要把他们设定为在用户界面线程运行。这样就等于强制他们在同一个线程下执行,以保证安全。具体例子在下一节讨论。

4. 其他几个执行系统

    在 执行系统一栏还有其他几个条目可选。
    “same as caller”是默认选项,它表示这个 VI 沿用调用它的上层 VI 设置的执行系统。如果顶层 VI 也选择“same as caller”,那么就等于它选择了标准执行系统。
    “standard”标准执行系统是最常用的配置方式。
    “Instrument I/O”仪器I/O执行系统一般用于发送命令到外部仪器,或从仪器中读取数据。这是程序中较为重要的操作,需要及时运行。所以仪器I/O执行系统中的线程的优先级比其他执行系统中的线程要高一些。
    “data acquisition”数据采集执行系统一般用于快速数据采集。数据采集执行系统中的线程的数据堆栈区比较大。
    “other 1”,“other 2”其他1、其他2执行系统没什么特别之处。如果你一定要让某些 VI 运行在独立的线程内,则可以使用这两个选项。
    绝大多数情况下,用户使用界面执行系统、标准执行系统就已经足够了。
 
 

相关文章:

 

Talking about 智力题一则

 这样行不行啊:

比如我是调查者,我让 A、B、C 自己选取一个随机实数分别是 Ka、Kb、Kc,然后把他们的工资与这个实数的和告诉我,这样我就得到了 Sa’=Sa+Ka、Sb’=Sb+Kb、Sc’=Sc+Kc。
我再让 A 和 B 把 Ka、Kb 告诉 C,让 C 把他们的和 K=Ka+Kb+Kc 告诉我。我就得到了他们的平均工资 S = (Sa’+Sb’+Sc’-K)/3

Quote

智力题一则

     大IN公司规定员工的工资是相互保密的。请问如何得到A、B、C三位员工工资的平均数?
    
     注:在获取的过程中不能要求任一员工直接给出其工资数字或者任何可以推导出其工资的数字(如税金等)。

用 LabVIEW 编写 Wizard 类型的应用程序 2 (LabVIEW 6.1 ~ 7.1)

 

四、Tab 控件+事件处理结构

     LabVIEW 6.1 的出现才第一次大大简化了 Wizard 界面风格程序的编写。LabVIEW 6.1增加了两个非常重要的新特性,一个是Tab控件,一个是事件处理结构。
    有了Tab控件,就可以把 Wizard 中每一页需要的控件分别放在 Wizard 不同的页面上,切换 Tab 的活动页面也就显示了该页面上相应的控件。
    事件处理结构的应用更为广泛。有了它,编程者就不需要再添加额外的代码来监视每个控件的状态改变以及鼠标、键盘等的操作了。
 
    这种利用Tab控件和事件处理结构编写的 Wizard 风格界面程序的方法现在仍然被广泛使用着,下面这个链接就是一个采用这种方法编写的软件:
    它的功能是把一个 C 语言开发的仪器驱动程序转换为 LabVIEW 下的驱动程序。程序虽然是我编写的,但版权属于NI公司,所以不能把程序源代码公开给大家。
 
    这种方法也有它的弊端。因为整个 Wizard 界面会用到的所有控件都集中在同一个 VI 上,这个主VI就可能特别庞大:界面可能有数十个控件,程序框图上的事件处理更为复杂,有近百个事件也不作为奇。如果需要对程序作修改,要找到相应的事件框就已经很困难了,要确定这个改动是否会影响程序的其他部分就更为困难了。
    图1是我编写的一个Tab控件风格的向导型程序,它的主VI中的事件结构中,有近百个事件需要处理。对这样的程序,想找到一个相应的时间都很麻烦,处理好事件之间的关系就更困难了。
    Tab 控件+事件处理结构的架构虽然大大简化了 Wizard 界面风格程序的编写,但是这样的程序很难对他的代码进行更细致的模块划分,并把模块的私用数据隐藏起来。为了使大型 Wizard 程序有更好的可读性,可维护性,还需找到一种更好的架构。
 
 
图1:使用Tab控件的向导型程序,事件结构中众多事件

相关文章:

 

LabVIEW 中的数字型数据 3 – 数值的单位

 

三、数值的单位

1. 数值控件上的单位

    数值型控件和常量是可以带单位的。在数值型控件的快捷菜单上选择“Visible Items -> Unit Label”,就可输入数值的单位。如果你对某个单位的正确拼写没有把握,可以先任意输入一个字符,然后用鼠标右键点击单位标签,选择“Build Unit String…”。这时,LabVIEW会弹出一个对话框,LabVIEW所支持的单位都在这里分类排出。
  
图1~3:使用数字控件的单位
   
    例如要计算2年有多少天,可以有如下的程序:
图4,5:同类型单位的空间可以由数据传递
 

2. 单位使数据类型检查更严格

    把一个 I32 型的数据赋值给 string 型的控件肯定是一种错误行为,程序员总是希望编译器在编译时就把这种错误报告出来。虽然现在大多数编程语言都可以在编译时报告此类错误,但 LabVIEW 数值类型的单位可以让这种检查更严格:实数与字符串之间不可以互相赋值;同样是实数型的俩个数据,一个表示时间,一个表示长度,他们之间也不应当相互赋值。
    在编写 LabVIEW 程序的时候,应当尽量使用带单位的数值控件。因为,如果你给一个数据设置了单位,LabVIEW就会自动帮助你进行单位的一致性检查。比如图6 所示,当你试图把表示时间的数据和表示长度的数据相加时,LabVIEW会禁止你连线。 着帮助你防止了编程时出现的不一致性错误。
图6:不同类型的数据不能进行计算
 
    但是,这种严格的一致性检查也可能会带来麻烦。例如,我们编写了一个子VI,用于计算两个时间单位的和。下次当我们需要一个计算长度单位的和的子VI时,却不能够直接使用已有的计算时间单位的子VI,因为它们的单位是不同的。为了解决这个问题,LabVIEW 提供了单位统配符。
    在编写需要用于不同单位的子VI时,可以使用单位通配符。单位的通配符用 $n 表示,其中 n 是 1 到 9 之间任意一个数字。例如我们以上提到的加法,可以在子 VI 中使用通配符 $1,如果还需要另外一个执行其他运算的子 VI 中,其单位可以用 $2 表示。
图7:使用单位通配符

 3. 单位转换

    使用 Numeric->Conversion->Convert Unit 节点可以把一个纯数字量转换为带有单位的数字量,或者反过来转换。使用 Cast Unit Base 节点可以更灵活地把某一数值的单位直接转换成另一单位。需要注意的是,Convert Unit 节点的外观和表达式节点的外观一模一样,甚至快捷菜单都一样,这应该是LabVIEW的一个缺陷。但他们的功能完全不同,你不要试图在表达式节点中使用 build unit 菜单,它不执行单位的转换,也不指示有差错。

相关文章:

 

LabVIEW 中的数字型数据 2 – 运算

二、运算

 1.  常用函数

    与数值数据相关的运算处理节点大都在函数栏的 Programming -> Numeric 项里,如图1 所示。


图1:Numeric Function Palette

    从这些函数节点的图标一眼就可以看出它们的用处了。例如,加、减、四舍五入、求倒数等。更全面的数学运算函数在 Mathematic 函数栏。Mathematic 函数栏内的很多运算不仅是针对单个数值的,还可用于数组运算。
    这里每一个公式的用途都可以在 LabVIWE 帮助文档上找到,我就不重复了。我们在这里着重讨论一下,在众多类似的运算方法中,如何选择一个适合你的程序的方案。
    对于简单一次性加减乘除,自然使用基本的函数节点就够用了。但是,如果是复杂的数值运算,则需要大量函数节点。节点之间的连线可能会有转角甚至相互交叉,显得比较杂乱,不利于程序阅读和维护。这时我们可以使用其它运算节点。

2. 表达式节点

        对于只有一个输入和一个输出的运算,我们可以使用表达式节点(Expression Node)。


图2:Expression Node 的应用实例

    图2 所示的例子中,完成把华氏温度转换为摄氏温度的计算。F1 到 C1 的转换是通过基本运算节点完成的。尽管运算并不复杂,但是阅读程序的人仍然无法立即就意识到这个运算与书中给出的公式相对比是否正确,还需要仔细地一步一步判断。这是图形化语言在表达纯数学计算时不利的一面,文字表达方式此时会更为直观易懂。表达式节点是使用文字来描述运算的。F2 到 C2 的转换就是使用表达式节点来完成的,用户可以直观地读出该节点所使用的公式。
    与使用基本运算节相比较,表达式节点另一个优点是节省了框图上的空间。

    在表达式节点中只允许有一个字符串,代表输入参数,例如本例中,参数用 f 表示。LabVIEW 在线帮助里列出有表达式节点所支持的运算符、函数和表达式规则。 

3. Formula Express VI

    如果运算有多个输入,可以使用 Formula Express VI。该 VI 在函数栏 Mathematic -> Scripts & Formulas 下。图3 是这个 Express VI 的配置面板,它看起来就像是一台高档计算器,基本不需要学习就可以使用了。


图3:Formula Express VI 的配置面板

    Formula Express VI 的缺点是:他的表达式是隐藏起来的。用户需要查看,还得先调出配置面板才行。

4. 公式节点

    对于更加复杂的计算,尤其是当输入变量超过一个的时候,应该使用公式节点(Formula Node)。公式节点中的表达式语法与 C 语言类似。可以把它看作是更为复杂的支持多输入输出的表达式节点。它的优点也与表达式节点相同:
    在实现算法时,人们往往更习惯于文本表达方式,所以使用公式节点的可读性和可维护性更强。


图4:Formula Node

 5. MathScript,MATLAB Script 和 Xmath Script 节点

    这三个脚本节点比较类似,都应用于处理更为复杂的数学运算,比如大型矩阵运算等。脚本语法使用 MATLAB 的语法或与 MATLAB 极为类似的语法。

    如果是编写新程序,可以优先考虑 MathScript,因为后两种节点还需调用外部程序来解释节点中的脚本。
    使用 MATLAB Script 节点 需要机器上安装有 MATLAB。MATLAB 由M athWorks 公司开发,是数学计算工具方面最常用的软件。使用 Xmath Script 节点,需要安装 NI MATRIXx。MATRIXx 是 NI 公司进行数学运算,仿真等的产品。功能与 MATLAB 类似。

LabVIEW 中的数字型数据 1 – 控件和常量

一、数值型控件和常量

 

1. 控件

    在LabVIEW的控件栏中有一栏是数值控件。
 
    这一栏内的控件虽然在前面板上的外观各不相同,但是在框图中的端点都是数值类型的。我们在使用这些数值控件时可以选择适合的界面所需的旋钮、仪表盘等。还可以在数值型控件的属性对话框里设置它的数值类型、数值范围、格式和精度等,显示方法等等。
   我们以最普通的数值控件为例,解释一下如何配置它的显示方式。假如,我们的界面是 Windows 风格的,那么界面上所有的控件都应使用系统风格的控件,包括数值型控件。如果这个控件用于表示时间,我们就需要对这个控件的显示方法进行高级的配置。
    打开这个控件配置面板的格式与精度页,选择“Advanced editing mode”,就可以自己为控件设置显示方式了。
 

2. 常量

    如果是常量,在设置数值类型时通常会发现“Adapt to Source”(按照输入调整)项是被选中的,作为控件时这一项不能被选中。此时如果在常量中输入一个正数,比如“34”,常量的类型会自动变为I32整型(蓝色),而输入“34.3”, 常量的类型会自动变为DBL实数型。如果一定要输入实数型34,可以输入34.0。           

3. 不同表示法(Representation)的选择

    数值类型包括各种长度的整型、实数型和虚数型,其中I64和U64类型是LabVIEW 8.0新增加的。选用短整型数值比选用长整型数值类型节约内存。在大的数值数组中应尽量使用短类型数值以节约内存。对于单个数值,它可以节约的内存十分有限,但是使用长整型数值可以避免数值越界引起的错误,所以还是应该使用长整型数值。
    你可以自己做个试验:新建一个 VI,在 VI 上放置两个值为 300 的 I16 常量,然后相乘,看看他们的积是多少。这种错误如果隐藏在一个大工程内,调试起来也是颇为费劲的。
 
 

相关文章:

 

《突破停滞》读后感

    《致加西亚的一封信》被很多人誉为洗脑书,意志不坚强的员工看过之后就会不问报酬,尽心竭力为公司卖命。所以,为了不被洗脑,每个员工都应当拓宽阅读面,兼听则明嘛。
    《突破停滞》这本书绝对不会被你的老板所推荐,甚至会被他们所痛恨。因为这本书怂恿人跳槽的,但是正好拿来和《致加西亚的一封信》中和一下。
    《突破停滞》的中心思想就是:如果你连续五年没有被升职了,那么,为了自己的前途,无论如何也要换个地方了。
 
    《致加西亚的一封信》为大家指出了一条通向成功的道路,就是敬业。但是,敬业是必要而非充分条件,这条道路不保证你一定成功。获取成功,有时需要执著,有时需要变通。
    比如你进入了一家传统的国有企业,尽管你才华横溢又勤恳能干,可是掌管你是否升迁的领导就是不欣赏你。人家就是喜欢会拍马的,不喜欢会干活的。你迟迟得不到应有的回报又能怎么样呢?
    再比如,你进的是一家奖惩较为公正,比较稳定的外企。这样的企业一向都很吸引人,能进去的必定是经过严格挑选的。你看看周围,同事们的智商,情商,都不比你差。想在这样一群人中脱颖而出太困难了。在大家水平接近,互有优缺点时,在这种情况下,对一每个不能被提升的人来说都不是太公平。而站在公司的角度,做到对每个员工都公平也不可能。一旦你成了牺牲品,不要指望公司有朝一日会补偿你。要想得到公正,只能靠自己想办法。
    总而言之,不论你在什么样的公司工作,如果连续5年没有被升职,那你就应该很清楚的意识到公司领导对你的印象如何。基本上,你以后在这家公司的机会也不会很多了。这时,你其实就只有一条出路了- 跳槽。
 
    对于个人而言,即使你不在乎所谓的职位薪水,如果连续5年没有被提升,也应当考虑有所变动才行。
    首先,人的情绪会受别人对自己态度的影响。每个人都希望自己的成绩被别人认可,升职提薪是被认可的一种最直接的表现,它反过来会鼓励一个人把工作做得更好。相反,长时间得不到这样的肯定,会对人产生负面影响,慢慢的会让一个人觉的自己的工作无人关心,索然无趣。失去了对工作的热情,混日子,对公司是损失,对个人损失更大。
    其次,5年后没有被升职,意味着你很可能还要继续重复你早已熟悉的工作。你将不会在你的工作内学到更多的新知识,也没有更多有意义的经验可以积累。我认为,如果一项长期工作,除了不算丰厚的酬金,其他什么都得不到,那么这项工作根本不值得一个技术工作者来做。
 
    小结一下:不论站在什么角度,都不能呆在一个位置上长期不动。跳槽可以解决很多问题。但是为了不让老板们太恨我,给出一条比跳槽稍微缓和的出路:在公司内部换个部门也可以解决一些问题。