1 /**
2 *     @author: sdyang.chd
3 *
4 *     @date :   2016-1-2
5 *
6 *     @brief :   嵌入式上位机编写指南
7 *
8 * */

随着嵌入式技术的发展,底层的设计越来越多的通过串行通信在工控机上体现成果,或者最终的算法策略等,上位机更是一件调试的神兵利器。面对如果多的编写工具和编写语言,我们究竟该选择哪种工具或者语言去编写呢?

下面就笔者近十年的编程经验(当然有几年的编程经验,就当了多少年的小白,渣渣,大神勿喷)。

首先从语言的角度:

basic语言,c语言,c++语言,C#语言,Java语言,Python语言,Pascal语言,Matlab语言,LabView语言。

以上几种语言基本都可以实现功能,basic相对语言的复杂性比较简单,由于高封装性,所以使用起来比较方便,但是也限制了它的灵活性,尤其是对上位机数据的处理略显不足。笔者认为将c、c++写成c/c++的做法是不正确的,不能讲这两种语言混为一谈,但是在这里由于其基本语法一直,编程实现更略有不同,而针对我们的上位机编写无关紧要,姑且将这两者滚为一谈,c/c++硬件底层的编程能力很强,所以更加适合上位机的编写,但是在工具选择上,和控件等选择与编程方法上,种类很多,各有利弊。这里说的Java语言主要针对android上位机所谈。

 

第二从工具选择上:

如果是新手,推荐vb.net,matlab以及虚拟仪器见长的LabView。

对于想深度定制的老用户,可以采用qt+qwt,C#+com组件,java+android API的方式,但是要注意,编写时最好给串行通信单独开一个线程,否则在你上位机还同时进行运算时,可能会出现丢数据的现象。最不建议的是用vc6.0,虽然大多数人学生时代学的是vc6.0,或许也很精通于此,但是这个工具已经不符合潮流了,主要体现就是不兼容windows最新的系统,而qt和vb.net都具有良好的兼容性和可移植性,甚至可以直接一直到linux内核的系统下运行,而作为限制主流的嵌入式非实时性(即任性性)系统来说,裁剪的linux占得比重最大。

对于matlab,LabView这类工具可以发挥其特长,直接采用图形化的编程方式,也不用考虑多线程的问题,其封装的比较好。

对于qt,笔者在此提供一个历程,要注意由于是测试程序所以写的比较乱也没考虑鲁棒性而开多线程,使用者要酌情修改,以适合自己的应用。

历程基于qt5,原因是qt5集成了最新的串行通信类qserial。。。,同时工程里配置了qwt一套画工控曲线的库,需要二次编译。如果配置环境不成功,笔者建议使用qcustomplot这个类,也可以达到差不多的效果,其次如果不在乎效率的话,大家也可以采用qt+js的方式来画曲线等,百度出品了一套echarts的开源js库可以满足你的要求,但是主要利用后者效率会有折扣,可能达不到实时追踪的效果,但是画出的曲线好看。

另外为了打包程序中的dll,或者实现压缩目的,可以使用upx等加壳工具。

最后,奉上历程的连接:

链接:http://pan.baidu.com/s/1o7iKoyu 密码:k18i