发布时间:2022-12-25 21:30
文 | Edward
帮我写个软件 |
“你是学软件的,帮我写个软件吧,要可以显示当前的温度,湿度”,一个好久没有联系的朋友突然找我说。
“啊,我是做单片机软件的,不会写电脑软件”,我回答道。
“什么吗,软件不应该是电脑上运行的软件吗?还一直说自己是软件工程师呢,连个软件都不会写”朋友答道。
这是很久之前我和一位朋友的对话。
结束之后,我脑中突然出现了一个念头,他作为一个业外人员,当然不懂嵌入式软件和上位机软件的区别,但是万一有一天突然老板这么对我说,那我该怎么回答他呢?而且作为一个软件工程师,难道不应该学一门上位机开发软件吗?总不能每次写个小的界面,还要跑到软件组去,拉下脸求别人帮忙写个?
想到这里,我后来开始学习了一门上位机软件,而在我学习上位机软件的过程中,我发现这种软件的开发思路,也对我C语言的开发有很多启示。
为什么要写上位机软件? |
可是,为什么我们要学一门上位机软件呢?做好自己的单片机软件难道不好吗?
这个问题我觉得可以从以下几个方面来说:
首先,如果你做工业自动化控制,如PLC,PLC工程师其实是很方便来写一个上位机的,之前西门子等各大PLC厂商,推出了很多配套的上位机软件开发工具,尽管它们放到目前来看,界面设计很不人性化,美观度也不行,但是总的来说是一套东西是非常完整的。他们那时候常用的软件如WinCC,组态王等软件,都可以帮助他们轻松完成。
现在这样子的界面,确实很难登录大雅之堂了,但是还有另一部分人,他们用着NI控制卡,用着LabView,开发上位机那是分秒之事。
而我们的单片机控制器,确实比他们的都要来的先进,功能强大,自由度高,但是这个上位机软件是呈现给客户的东西,是客户最能直接感受到的“软件”,因此学会个上位机是很有必要的,因为它可以帮我们把强大的单片机软件展示出来。
其次,在我们平时软件调试的时候,或者软件完成之后,有很多预留的参数需要我们去读写,甚至这些参数和我们的单片机软件息息相关。比如当你做一个运动控制软件的时候,PID参数可能要通过通讯接口在现场实时调整,这时候,如果我们一遍遍烧写程序,或者通过调试软件不断地发协议过去,是个非常累且不直观的工作,而此时如果我们实现写完一个上位机软件,在调试现场就可以非常轻松地修改参数了,修改完成后,坐在沙发上就可以喝茶看手机了(这个是我自己臆想的)。
最后,上位机开发,总离不开学习高级语言,虽然很多做底层的都鄙视高级语言,但是不可否认的是,高级语言确实有很重要的思想在里面,这个思想如果你单纯做C语言是怎么样都接触不到的,那就是所谓的“面向对象”的设计思想。如果掌握了这种思想,并将其用于C语言的开发中,那对C语言开发也会非常有帮助。
该学哪个上位机软件 |
说了这么多,该学哪个上位机软件呢?
确实,目前的上位机开发软件非常多,而且每家的架构甚至编程语言都完全不一样,下面简单罗列几家:
WPF和Winform
WPF,WInform和.net C#仅仅地扎根在Windows操纵系统底下,因为他们是微软亲手一步步构筑起来的,所以微软爸爸不下血本地去帮助他们成长。如果说要在Windows底下开发一个工具软件,且没有跨平台的需求,那么WPF,WInform和.net C#的组合是最最最适合的,没有之一。而且就语言的易上手程度来说,C#的基础功能和C语言是非常接近的,而且C#的面向对象机制设计的非常彻底,不考虑效率的情况下,远远优于C++。而且目前这个工具是有免费的社区版的,难道不试试吗?
QT
Qt是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。
QT目前的最大优势就是跨平台,虽然每家都在宣称自己跨平台,但QT无疑是做的最好的,但是其最大的问题其实是编程语言是C++,C++的优缺点,我们这里就不讨论了,见仁见智。
其他的还有很多,我们这里就不推荐了,主要原因就是不主流,如GTK+,FLTK,MFC(太老)。
我该学哪个 ? |
如果你不爱折腾 |
C#和Winform, WPF。 |
如果你爱折腾 |
QT。 |
如果你是个C语言死忠粉 |
GTK+。 |
如果你想做个透彻的软件工程师 |
你告诉我吧。 |