<title>“台上一分钟台下十年功”资深labview工程师的七年感悟
“台上一分钟台下十年功”资深LabVIEW工程师的七年感悟
小编导读: 2014年NI LabVIEW挑战赛聚集了全球 LabVIEW 使用者及爱好者,张超经过刺激的过五关斩六将后夺得桂冠,下面就请跟着小编一起来看看LabVIEW工程师张超的夺冠历程。
1、电子发烧友:我们论坛大概在一周前,发布了一个采访内容征集的帖子,大家对你也有一定的认识了,但是还是先请您介绍一下您自己,讲讲你目前从事的岗位和工作吧!
张超:我研究的主要方向是高电压绝缘检测,具体说就是研究局部放电检测与识别。在电场作用下,绝缘系统中只有部分区域发生放电,而没有贯穿施加电压的导体之间,即尚未击穿,这种现象称之为局部放电。当绝缘体局部区域的电场强度达到击穿场强时,该区域就发生放电。在电工产品中,绝缘体各区域承受的电场一般是不均匀的,而且电介质也是不均匀的,于是绝缘体内部或表面就会出现某些区域的电场强度高于平均电场强度,某些区域的电场强度低于平均击穿场强,因此在某些区域就会首先发生放电,而其它区域仍然保持绝缘的特性,这就形成了局部放电。
2、电子发烧友:您是负责LabVIEW开发的,那么能给我们详细的介绍一下LabVIEW开发具体包括哪些范畴嘛?在开发过程中哪些环节是需要特别注意的呢?
张超: LabVIEW的用途是比较广的,我个人应用LabVIEW主要是做PC机端的应用软件开发,为用户提供操作和使用软件。
在开发的过程中需要注意的事情其实也很多,但是我个人觉得最主要的是以下三点:
- 第一:设计合理的程序架构;
- 第二,尽量做到代码的优化使用,减小后面板的占用面积;
- 第三,简单实用的UI设计。
3、电子发烧友:结合在论坛做的采访内容征集,我们整理一下几个问题内容如下:
① 能不能给大家分析一下您对Labview市场前景发展的看法呢?
张超:扬长避短吧,希望LabVIEW在平板开发和其它一些移动设备开发中能有突破,这样前景更广阔。
② 初学者学习Labview相对于其他语言C、C++、C#、Java,在学习方法、难度和周期上有没有一些区别?
张超:我个人也是用其他语言编程的,体会最深的就是整个编程的思想不同,LabVIEW的数据流模式编程,数据的走向更清晰直观,因此相对传统代码语言,其开发更快、投入更少。而且其封装了一些函数也降低了编程和调试的难度,例如无指针,数组可变大小等等。
如果您想创建一个测控系统,不同于C语言等低级语言,使用NI LabVIEW系统设计软件能够帮助您降低风险、节省开支并免除不必要的麻烦。在这里我并非暗示LabVIEW是比C语言“更好”的编程语言——特别是考虑到LabVIEW大部分内容不仅仅由G语言编写,还由C和C++语言组成。恰恰相反,这两种语言各自具有不同的优势,程序员应合理择取才能达到自己的目的。
LabVIEW和C语言相比起来就好比面包和面粉的关系。如果您想做一个三明治,就必须先选用面包。如果您想做一个蛋糕,先用的自然是面粉。如果用面粉从头烘烤面包,即昂贵又费时(尤其是当你只想吃些小点心时),但若做的是蛋糕,面粉就必不可少了。同样的,你会发现,要选择最适合的编程语言并非易事,它归结为使用正确的工具来完成适合的工作。
③ 在LabVIEW编程方面,你个人有没有比较好的习惯和建议?
张超:个人的习惯和建议就是后面板一定要摆放整齐,合理的使用子vi以方便程序阅读,尽量控制后面板的占用面积。
1,各个while循环要么按照垂直的方向排列、要么按照水平方向排列,而且要统一宽度或高度,使程序看起来整齐;
2,while循环的个数不要太多,线程过多时应该使用子vi;
4、电子发烧友:现在很多客户都讲究“面子工程”界面设计的绚不绚丽,当今是扁平化设计大行其道,您对于这样的UI设计有什么心得体会呢?
张超:界面风格的问题其实是要交给美工去做的,我想风格也应该根据行业而定,不能一概而论。软件工程师主要应该对软件界面的结构进行合理的设计,我提过的一个思想就是用户不需要看说明书,便可以操作软件,这样的软件我想界面设计就是合理的。
5、电子发烧友:据我所知您接触LabVIEW已经有七年多了,大型的项目开发您肯定也是有自己独体体会,那能跟大家分享一下您对于编写软件设计方面的一些个人体会嘛?
张超:较大型项目软件开发最重要的就是架构设计,根据LabVIEW的特点,最重要的就是对软件的数据流进行设计,其实这本身可以引申为一种面向对象的思想,我现在做的工作也是在面向对象上多做文章。将软件需要处理的数据进行归纳和总结,然后基于数据进行架构设计,这是我的方法。
成功的例子就不举了,可以举一个反例给大家参考。08年为实验室做的一个控制软件,要求能够存储所有输入参数,当时自己只是简单的将参数存入了二进制文件(多种数据类型),大家知道用LabVIEW的写入二进制文件命令在读取时,需要输入数据类型,所以我简单的处理方式就有了隐患。后来当需要增加存储的参数时,我所有存储和读取参数的部分都需要跟着相应的更改,给程序的修改造成了很大的麻烦。这里如果对存储的参数进行一下数据类型的处理以及结构的调整(如数组),可能麻烦就不会这么多。其实程序结构的设计和这个类似,设计合理的数据类型,使程序具有一定的扩展性和鲁棒性,这样的结构才是合理的。
6、电子发烧友:现在大家都在谈论软硬结合,那么你怎么看LabVIEW与硬件的结合的呢?有没有涉及到过这样的开发项目,给大家分享一下吧!
张超:我们公司所有的硬件都是自己开发,包括ARM、FPGA、100MS/s采集设备等,我主要用到的接口是通信接口,包括TCP、UDP、FTP、Serial Port等,到目前为止,我所接触的项目大都与这些接口有关。
接口的意义就在于数据的传输,大家可以参考我比赛中的通信协议,在实际的软硬件通信中,这种协议也是适用的,可以实现命令的发送以及数据的上传等等功能。
7、电子发烧友:您参加2014LabVIEW挑战赛的五关中程序上面您觉得有哪些共性嘛?比方说会不会用到状态机队列、面向对象等呢?
张超:前两关的程序其实不需要太多架构设计,第二关的程序我甚至只用来一个线程便解决了问题。我的后三关程序是一脉相承的,一直在基于我的通信协议进行功能模块的添加,包括面向对象、状态机的使用。状态机目前是比较流行的一种架构,面向对象也是一种趋势,但是我认为只要能够合理的解决问题,不应该拘泥于某种架构,不能将自己的思想被固有的东西束缚,作为一个脑力劳动者,大家应该有一种发散的思考方式。
8、电子发烧友:从第三关开始您的程序架构没有经过大的改变,通过增加通信协议,来实现功能的扩展。那么您认为通信协议在LabVIEW开发过程中占据什么地位呢?
张超:因为程序是分为server和client两部分的,在我的程序中,通信协议是将这两部分链接起来的桥梁,是保证两端数据流同步的重要手段,这也是我前面说到的设计数据流的一部分,更是程序架构的一部分。
9、电子发烧友:用LabVIEW做一些软件开发,在需求分析、开发流程、测试、软件优化、版本方面和软件相关文档撰写方面有没有个人的一些想法?
张超:其实这些都是软件开发最基本的管理,每一步都是必不可少的,这里我觉得我也不需要过多的赘述。个人觉得越是前面的步骤越是重要,在规划上花更多的时间,可以减少编写过程中遇到的困难,同时最后要做好文档的总结。
10、电子发烧友:我们这次采访,大概接近尾声了,作为2014年LabVIEW挑战赛的冠军您大概还有什么经验、想法跟大家沟通一下的呢?
张超: 要做自己喜欢做的事儿,更要坚持做自己喜欢做的事儿,你一定会成功,无论感情、生活、工作都一样。当然,感情不是一个人的事,大家不要强求哈哈。希望大家能够坚持用LabVIEW开发,我想下一个冠军就在你们之中。
冠军代码公布链接:https://bbs.elecfans.com/jishu_460882_1_1.html
社区之星推荐或自荐:不限专业领域、不限技术方向,只要你是一个有活力并乐于分享的开发者,只要你愿意把自己的经验收获分享给大家,帮助众多从业者共同学习、共同进步,我们就欢迎你来做客社区之星。
联系方式:陈晨 chenchen@elecfans.com,论坛用户名:zhou2sheng。快来联系小编吧!
往期回顾:
第二十一期:社区之星——“一入电农深似海”嵌入式工程师的心路历程
第二十期:社区之星——如何成为一位“合格”的资深电子工程师
第十九期:社区之星——LabVIEW工程师炼成记
第十八期:社区之星——中兴资深工程师聊Linux的设计与开发
第十七期:社区之星——学霸教你如何考进嵌入式国家实验室
第十六期:社区之星——资深工程师指点:如何走好电路设计之路
第十五期:社区之星——勇于试错,Be Brave
第十四期:社区之星——资深工程师现身:谈谈嵌入式开发的那些年
第十三期:社区之星——酸甜苦辣兼有之,资深工程师谈创业之路
第十二期:社区之星——FPGA资深FAE的经验独白
第十一期:社区之星——特权同学从自学FPGA到权威翻译的这五年
第十期:社区之星——怎样完成从电子工程师菜鸟到研发主管的蜕变
第九期:社区之星——如何成长为资深的嵌入式工程师
第八期:社区之星——持之以恒:FPGA工程师对行业新人的经验分享
第七期:社区之星——天道酬勤:资深FPGA工程师成长故事
第六期:社区之星——“剩”者为王:资深嵌入式工程师的进阶指南
第五期:社区之星——电源技术牛人版主:刘佳文
第四期:社区之星——嵌入式社区达人:王巧玉
第三期:社区之星——ARM技术智多星达人:程志
第二期:社区之星——资深单片机技术牛人:谁才是真正的工程师?
第一期:社区之星——DSP牛人miachael_xing