https://www.zhihu.com/question/295656875/answer/503429293
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
LabVIEW!
先放两个自己做的,巨丑勿喷,主要是接地气,后面放大招。
手机的三轴加速度计数据(步行)
烟雾报警器的上位机(当前没硬件随机数模拟的)
这个是烟雾报警器的历史记录查询与修改的
程序框图长这样
LabVIEW天生就是用来做上位机的,而且效率很高,适合工程技术人员使用,而不必专业的软件开发者。
最重要的是这个足够专业和成熟(工业上用的很多),学习成本也低,我学习LabVIEW之前只学过C/MATLAB/Python/Processing,主要是做单片机的编程,因为有C的基础,所以学习LABVIEW完全无压力基本就是熟悉操作一遍就会了,两个语言一脉相承,不同的地方是所有GUI的共同点,你要真正掌握的也是这部分。
要说LabVIEW能做什么,我之前真的没想到会有那么多的地方会用到这个,见识限制了我的想象力,没有它做不到,只有你想不到。(SpaceX的测控中心就是用LabVIEW,还有老美的电磁轨道炮测试系统。)
SpaceX的任务控制中心面板
具体的一个UI
这个是电磁炮的
但是如果是做系统辨识,我之前都是串口发过来,然后用MATLAB的系统辨识工具箱直接出结果,一样很方便。直接编个脚本就好了,干嘛非得要GUI呢?
还有只有你对GUI有个性化的要求(觉得LabVIEW的太丑了,或是因为版权的问题),这时我建议你用Qt/C#什么的,那就不在此问题的范围内了,毕竟大家都不是做商业软件的。
最后上位机如果是数据采集会简单些,数据流是单向的,怎么来都行。但是双向的就不是上位机的问题了,这时候通讯协议才是占大头的地方,这个才是最头痛的。具体的难点仔细体会。
Python
用 Python吧,串口库,图形显示,系统辨识,都有现成的,拿来拼装就可以了。
不用担心慢,毕竟你的数据流量是串口的速度
PyQt
我用PyQt,,做过的一些小工具:https://github.com/XIVN1987
electron
我用electron做,装上node.js的serialport库,使用node.js的buffer处理二进制,devtools调试,js的回调函数,html5的各种成品库,开发起来那个叫feel倍爽!
C++
C++,C#, Python 都可以,Matlab 基本上没用过就不说了。
但是现实的项目不光需要考虑技术因素,还有政治问题。我作上位机时候的一个体会就是,作下位机的那帮人通常只了解并相信C,如果你在上位机程序上选择了其他语言,只要项目出现任何问题,他们第一本能的反应就是你选错语言的锅。偏偏他们的话语权通常都很大,怎么说服他们是件很麻烦的事情。如果你上下机都能自己作的话,那么恭喜你,你的自由度很大。如果不是的话,建议你还是选择“政治正确”的C/C++吧。
c#
serialport类写串口贼无脑。可视化数据的dll网上也能找到不少。或者qt也行。python不适合做这种对数据类型长度比较有要求的任务。再说python的ui没一个漂亮的。matlab就更不行了。