用上位机控制单片机然后实现数据传输,学习哪种上位机好呢?

用户873195775108


从我学习计算机、软件相关知识开始,十几年来,我曾经使用过的上位软件集成开发工具按时间顺序依次为(这些集成开发工具,有些我已不常使用,有些甚至完全被淘汰):

  • visual foxpro

  • visual basic

  • visual c++

  • delphi

  • matlab

  • visual studio

  • QT

  • android studio

使用的编程语言有:

  • foxpro,

  • VB,

  • c,

  • c++,

  • pascal,

  • matlab,

  • c#,

  • java

除此之外,还有以下的脚本语言:

  • lua,

  • python,

  • javascript,

  • php

现在,最常使用的集成开发环境有delphi以及android studio,

其中delphi主要用于开发有人机交互界面显示的上位机开发软件,用于数据采集、存储、显示。

基于delphi开发了控制器的远程升级程序、控制器内置网页生成下载工具以及modbus数据采集、设置工具。


delphi在十年前非常流行,其特点是非常小巧,我使用的安装包还是当前上大学时从隔壁学校图书馆下载的delphi 7的破解版,大约400M的大小。

虽然近十年前,delphi已经没落,很多风靡一时的delphi相关的网站估计已经消失,但是,从网站上依然能找到非常多的第三方库。还能满足大部分应用要求。

在我的电脑上,也有装visual studio和QT,但是用得不多,曾经用visual studio帮朋友研究过shadowsock,曾经用QT修改过xmpp客户端,用于测试公司的产品。

visual studio和QT都太庞大了,安装包都有好几G,电脑打开IDE之后,变得非常卡,影响效率。远不如delphi用得得心应手。

android studio主要用来编写控制器的app,设计的app是web app,主要用html5+javascript实现,再打包成app,基于java的原生app编写并不多。

至于matlab,之前主要是用来做数据分析,算法研究,以及电路分析.

比如,以前做智能电表项目的时候,需要用到快速fft变换,直接调用matlab的fft函就得到结果,再与自己通过单片机c语言实现的fft函数进行比较,验证函数正确性.

比如PID的控制算法的研究,之前借助matlab的simulink做一些仿真,研究PID的参数整定,非常方便.

用来做电路分析也非常方便,通过电路理论(比如基尔霍夫电流、电压定律),我们通常对电路可以得到n元一次方型组,通过matlab的符号矩阵运算,可以很快速得到结果。

自从matlab6.5在windows 7的系统上无法安装,下载windows 2010又没有license之后,我就对matlab就彻底失望了,近五年没碰过了。

我用php语言主要是用来编写服务器程序,在wordpress的基础上实现了控制器的管理后台,采用workerman实现了一个tcp服务器。

下图是基于VUE+element UI+websocket实现的网页前端:

我觉得随着技术的发展,解释型的脚本语言会大型其道,其特点就是简单,资源多。

目前来看,最火算是python了。

接下来的发展趋势是物联网、云计算,根据这样的趋势,我觉得未来软件的系统架构会是如下图:

跟设备配置使用的上位机软件需要有几大功能:

1) 基于串口,USB,TCP/IP的实时数据采集

2) 数据存储,数据的展示

3) 人机交互界面

4) 数据分析

结合未来的软件发展趋势,这些数据最终需要上传到云服务器,进行大数据的云计算,并通过前端的UI展示出来。

python是同时满足这几大功能需求的上位机软件开发语言。

数据分析有强大的pandas库,支持和matlab一样的矩阵运算,支持大数据处理,最关键是免费的。

设备通信pyserial库,应用尽有...

要做好一个系统,一个产品,需要精通各方面的知识,比如电子、电路,单片机,C,delphi, HTML5, javascript,前端框架(如VUE, bootstrap,element UI),PHP,mysql, redis,TCP/IP, websocket, HTTP,workerman,lua, android...

这是题外话, 不管怎么样,去学python吧,未来是python的天下。


IT自动化交流


上位机通过通讯的方式可以实现控制单片机的数据传输,在传输方式有无线和有线之分,如RS232,RS485,CAN等是有线传输;WIFI、蓝牙等是无线传输。所以在使用上位机控制时,只要通过软件实现相应的通讯协议即可。很多上位机软件都可以实现这种功能,但是从硬件角度和应用较多,推荐三种类型的上位机软件。

1.VB

上位机软件

VB的全称是visual Basic,是微软所研发的一款基于对象的通用的程序设计语言,诞生于上世纪九十年代初期。这款软件是基于图形可视化编程的,制作软件界面、人机交互界面很容易,不需编写大量代码去描述界面元素的外观和位置,而只要把库中预先建立的对象拖到屏幕上,再实现具体的响应即可。由于各种图形化的对象都是现成的,跟现在的组态王软件很类似,用起来很方便,适合做上位机开发。

微软虽然已经不再更新VB,但是用户可以使用VC和Visual Studio进行开发。

2.Labview上位机软件

Labview是美国的NI设计研发的,该软件在仪器仪表行业、工业自动化行业有着很高的声望。Labview采用图形化编程和数据流编程方式,程序框图中的节点之间的数据流向决定着函数的执行顺序。这与传统的代码式的软件编程完全不一样。而且在软件内部集成了很多通讯模块、仪表模块和曲线分析模块,用户拿来可以直接用,大大简化了设计难度、提高了研发效率、提高了设计稳定性。用来开发上位机软件再适合不过了。

3.组态软件开发上位机

组态软件在工控行业使用广泛,尤其是在与PLC、触摸屏结合起来做集中控制的时候。组态软件目前国产的品牌有很多,做的也比较稳定。组态软件也是图形化编程方式,在软件库中有很多工程应用的模型,用户拖出来可以直接用,甚至常用的通讯模块都是封装好的,用户只需要配置一下就可以用,方便实用。在很多矿上的调度室/集控室、车间的集控室等,上位机界面都是用组态软件编写的。

以上就是这个问题的回答,感谢留言、评论、转发。

更多精彩内容请关注本头条号:玩转嵌入式。感谢大家。


玩转嵌入式


用上位机控制单片机然后实现数据传输,学习哪种上位机好呢?

既然是控制单片机,那么通讯协议是可以自己编写实现的,要实现数据传输甚至不需要自己编写上位机软件都可以,如果用常规的通讯协议比如modbus tcp 甚至可以直接使用组态软件作为上位机,那样上位机的通讯协议可以不用写,直接可以开始应用层的组态。

也建议朋友你可以使用规范的通讯协议标准,无论是以后硬件软件一起发售或者只发售硬件,都能够更好的适应市场。

如果确定要写上位机软件那么老董强烈推荐你使用C#因为国内有一位大神已经开源了一套组态软件的源码,这是一套完整的上位机软件,从底层通讯协议到网关再上层的数据监视、控制、报警、实时曲线、历史曲线、所有的功能都是完备的。

当然还有别的选择LabVIEW,VB,python都可以,其中labVIEW会更方便一些会有很多的工具包,和各种协议的通讯协议支持,另外它还有LabVIEWDSC这个专门用于控制领域的模块。

总体来讲推荐你使用C#或者labVIEW,有句话说的好,站在巨人的肩膀上你才能看的更远。


老董聊电气自动化


单片机与上位机通信,因为不是模组控制器,所以这里我们假设一个条件:

就是数据传输的通信协议是自定义的。这个时候,需要与上位机通信就需要串口底层或者usb底层的数据接受,与按照协议的解析了,



那么有哪些上位机开发软件或者说哪些开发语言可以实现数据通信呢?

其实这样的开发语言很多,目前说下主流的几种开发语言

1 Vb语言,Vb语言是一种相对简单编程的语言,开发入门比较简单,有专用的vb开发环境,有成型的串口控件,只需要简单编程就能实现数据的接收。这个语言因为微软不在更新,所以目前的window 8及以上版本都无法正常运行,甚至有些64位的win7也不能完美工作,不过Vb曾经在xp系统的时代辉煌过,目前慢慢淘汰。



2 Vc语言, 其实是c语言的windows开发,有窗体等简单界面和控件,有一定程度沿用vb的风格,所以官方默认的界面都不是很好看,需要进行界面美化,当然能更加灵活的实现多种功能。linux就是基于c需要开发,安卓又是linux 内核编写。当前很多常用的电脑端软件很多也在用c语言开发

3 .net 目前.net 应用十分广泛,可以使用.net开发网站,也可以做应用程序等,是目前主流的电脑端开发语言,所以实现与单片机上位机通信功能是没有什么问题的。只是需要考虑.net版本与windows版本的兼容性。

4 java 其实Java分为javaSE javaEE.javaME 很多人一看到这个都知道可以做安卓手机的app,实际上是java Me 其实这三个是领域的细分,而另外的是什么呢,

JavaEE是做web开发,也就是做网站相关开发的,

JavaSE就是做电脑端也可以说上位机端开发的。



java是一门与C++类似的,区别与c语言面向过程开发,java是面向对象的开发语言,相对于vb开发难度要大很多,如果您有c++基础,那么学习起来就会容易很多 。

实现单片机与上机机通信的功能就会很容易。

以上是个人对问题的回答,难免会有遗漏或者偏颇。

谢谢大家


科技电小二


所谓上位机,其实就是PC端的应用软件。

在嵌入式设备的开发过程中,很多都是使用串口来进行简单的调试控制。

调试和控制的前提就是需要学会至少一种报文格式的使用。设备的信息交换就是一个封包拆包过过程。使用串口调试可以验证设备信息交互的成败。

最好的上位机就是与硬件配套的上位机,也就是按照自己的需求去写的上位机。

编写上位机的编程语言,主流的编程语言其实都可以完成。但是开发都讲究开发周期,越短的时间完成越好。至于选择什么语言去编写无非就几个条件,

一、自己已经掌握的编程语言。

二、上位机运行在什么系统之上。

每一种编程语言都有其擅长的领域。如果是Linux系统,我觉得使用Qt来开发界面应用程序是一个不错的选择,如果是win系统,使用C#或者VB编程语言来开发是个不错的选择。以上这些做图形界面设计都是托拽的方式实现非常简单。除了这些还可以用JAVA来开发,只不过JAVA的图形应用开发设计不是哪么方便。JAVA可以用来开发与设备进行网络交互的服务端程序。



嵌入式小萧


四种都用过,Laview,组态方便是方便,但不自由,很多特殊算法无法嵌入,而且最重要的是要money。VB早期用,控件界面设计阶段就定得很漂亮,但实在忍受不了两点,一是性能确实太差,跟组态差不多,二是分发给用户太麻烦,用户计算机状态千差万别,总是要注册ocx啊什么地,烦。现在基本用VS编C++程序了,烦是烦了点,但各种自由,性能可控,可以说如果C++都来不及干某个任务,别的编程工具想都不要想,界面要好看烦一些,要各种自画控件,弄得不好,各种坑,内存泄漏啊,野指针啊,但锻炼个两三年就有经验了。


夏日风41


一.问题不好具体回答。

当下工业通讯控制,串口,和以太网居多。我们耳熟能详的语言都支持这两方面的编程,功能都强大,用的人都很多,所以选择什么语言,还得具体问题具体分析。

二.具体分析。

1.分析系统。

工控机系统多以xp,win7为主(这个仁者见仁),所以倾向选择微软自家的语言。

2.语言分析。

微软系统上的编程语言,年代不太久远的有vb,mfc,c sharp,年代上能接受mfc,c sharp。

3.语言对比。

mfc开发的产品庞大,执行效率高相对高,上手相对复杂。

c sharp上手简单,开发效率高。

会mfc一周内能上手c sharp,反过来难。

会mfc的看只会c sharp的像小白,反过来像大神。

三.结论。要考虑老旧设备,程序要维护的,mfc或其他。

没任何局限的,建议c sharp.。

简单调用微软写好的代码,快速通讯。


工控编程


这个我有心得,从1996年开始我就涉及上位机控制单片机的编程工作,最开始用VB,用时间最长的是VC6干了10年,用得最顺手的是DELPHI,现在还在用,这么多年下来,觉得选什么语言不太重要,要学习,先从计算机硬件基础,从原理上学习才重要,如果一定要推荐一个,C#吧,个人认为当下适用,以后也有前途,兼具VB,VC,DELPHI优点,比java更具前途!


寒雪叔叔叔


这个仁者见仁智者见智了!单片机和上位机通讯只是软件层面上的对接和数据传输!任何编程语言都可以做到!如果你没有什么经验的话学pythin是个不错的选择!易学易上手库也多任何编程语言的方法都可以被python调用!python还是跨平台的脚本类语言一处编写到处适用!且以后python可以用到更多的地方!



烽火资讯台


现在蓝牙模块都很便宜,蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,按功能分为蓝牙数据模块和蓝牙语音模块。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯。

Android平台包含了蓝牙框架,使设备以无线方式与其他蓝牙设备进行数据交换的支持。 Android提供蓝牙API来执行这些不同的操作。扫描其他蓝牙设备;获取配对设备列表;连接到通过服务发现其他设备。

单片机的串口可以跟蓝牙通信,手机都有标配蓝牙,安卓编程很普及,所以买个蓝牙模块,十块钱左右,用手机直接控制单片机数据传输很简单的。


分享到:


相關文章: