本文主要是介绍集成电路竞赛——Robei 杯之上位机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#今天也是咸鱼的一天~
上一回在写UART的时候,就感觉到了一个问题,单纯的Robei EDA的仿真其实没有什么实际的应用价值,最多就是给刚刚入门 EDA的人熟悉一下这个设计和仿真流程。等到熟练运用了,设计其实可以照搬实际代码的。
另一个很头疼的问题就是,在实际的比赛过程中,保证Robei EDA 设计仿真 ——生成模块文件——导入FPGA开发环境——实现功能,这么一个流程估计是不大可能的,比较真实的过程大概是,先把代码写出来,并且实现了实物作品的功能,再把软件套在Robei 上面交作业。这个EDA 软件虽然好用是真的好用,但是在运用自如和设计习惯上,的确不太一时半会可以接受。
所以这次先放弃一下关于 EDA模块的更新,来讲一个和比赛息息相关但是和FPGA并没有什么太大问题的东西——上位机(Upper Computer)
先来说说“上位机”的定义,从概念上来说,发送命令和提供服务功能的是上位机,而接收命令个服从控制的是下位机。这里,上位机的概念很明确,高位的,掌握控制权的就是上位机。在大部分情况,上位机是PC或者主控,在上位机的界面上,能够显示各种各样的信息,来自下位机的数据信息,或者要向下位机的控制选项,以及一些数据处理的界面。
有了上位机,再来说说下位机。与上位机相对的就是下位机,接收上位机的命令,做出运行状态的改变,然后将采集到的数据返回给上位机进行处理。这里的下位机,可以是传感器,也可以是硬件单片机,也有可能是下位的电脑。上位机和下位机只是一个控制关系的约束,并不是确定的硬件名称。一个单片机可以是另一个单片机的上位机,也可以是电脑的下位机,这个关系是相对的。
在Robei 杯的比赛中,上位机很大可能就是 电脑 or 手机,因为这个非常符合 机器人 的赛题方向,机器人是一个硬件工具,在控制这个机器人的过程中,除了直接在机器人上面的控制(比如显示屏),更多是是利用无线来做一个远程的操控,比如通过 蓝牙、WIFI、ZigBee、串口 、4G、5G模组进行通信。
为什么一定会用上位机呢? 因为这样带来的可操作空间更大。假设一个机器人 or 一个数据收集仪器(以气象采集器为例),我将它放置在一个地方或者多个地方,当某些环境状况出现改变时,不可能人为的去把仪器一一进行改动,为了最大化节省人力,肯定希望从终端进行直接控制,这就是上位机出现的意义。
了解了上位机,那么接下来就简单介绍一下,各种上位机会用到的语言/软件/资料~
先来说我比较熟悉的,电脑端的上位机。
C#
这个是我2020年寒假的时候,为了准备北斗杯竞赛学习的,用C#来写窗体应用程序,和单片机利用UART来进行数据收发。(用了无线的串口收发模块)
C#的优点是:
- 有直接的串口类可以去引用,整体的设计也较容易上手。
- 支持各种数据库,包括Oracle,SQL Server,MySQL,Access。资料也很全
- 拥有众多的API可以调用,不用自己从0开始写轮子,在大部分情况下,直接调用现成的就可以完成大部分任务了。
- 有C语言基础的入门起来很方便,大致看一下视频教程就能依葫芦画瓢了。
学习可以参考这个视频:杜洋工作室 上位机
应用设计环境是 :visual studio 201x
Qt
Qt 是基于C++来编程的,对于有C语言经验的人来说,上手也是非常的容易。这货还是诺基亚开发的呢,它家的手机可以拿来砸核桃。
Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。
如何配置环境可以看这一个文章:Qt5 安装
做串口上位机可以参考这个大佬的博客:用qt编写上位机与stm32通信
学习资料可以看这个:
链接:https://pan.baidu.com/s/1pg8hv33mMnMaNJ2R1wLZUQ
提取码:mzdg
LabView
这也是一个很常用的上位机,但是这个稍微有点老,好的资料我一时找不到,改天在说(又乖又怂)
然后就是手机端的上位机,手机的上位机当然是一个手机的应用啦。(废话︿( ̄︶ ̄)︿)
在电脑端的上位机,所有的语言基本是编写电脑软件的,C#和Qt就是这样,手机的话,肯定就是编写手机的语言啦~
比如JavaScript~手机的上位机,大部分时候使用的是蓝牙,WIFI这样的通信协议,不过其实不用怎么担心,网上都有很全的轮子可以调用,很多卖无线模块的商家,都会配一个可以在网页上开发的控制界面,或者SDK,来方便硬件工程师开发。
这里是贴吧的一个人写的apk资料:
链接:https://pan.baidu.com/s/1UZnX46jIU1A6-0nZuCFJPg
提取码:bypl
这是一个蓝牙开发的app:
https://blog.csdn.net/weixin_42119432/article/details/98881378
App Inventor
我用过的唯一一个安卓app的开发软件,叫做 App Inventor,是MIT的一个非盈利性的免费的开源的安卓开发环境,但是要注意的是,这个开发环境是 图形化界面,就是你会收获一个,像三四年级小学生学编程一样的界面,不过这个也确实好用,简单快捷,蓝牙也支持。
app.gzjkw.net/login/
要在谷歌浏览器上才能正常使用,因为好像这个服务器是挂在谷歌上的。没有谷歌用360浏览器也可以。
界面比较沙雕,请做好准备~
Android Studio
这个才是正经的安卓开发教程。不过,其实不必执着于技术,做项目和比赛还是要看需求的,总不可能把arm当开关才叫牛逼,黑猫白猫能抓老鼠就够了。
如何安装 Android studio:
参考这篇大佬的文章:
https://www.runoob.com/android/android-studio-install.html
或者这篇,这个感觉更详细:
https://blog.csdn.net/qq_41976613/article/details/91432304
安卓入门推荐B站这个教程:
38409964
安卓蓝牙的开发学习:
https://www.bilibili.com/video/BV1MW411v7E7
eclipse
安装见这篇博客:
https://www.cnblogs.com/caijiaming/p/10837083.html
or 这篇博客
https://blog.csdn.net/qq_36554582/article/details/81835097
入门视频推荐这个:
https://www.bilibili.com/video/BV1dp411R76c
—————————————————要结束的分割线————————————————————
我自己本身只学过电脑端上位机的开发,并且也不是非常精通。这次Robei 杯的比赛,做上位机的是我的队友,我本身是负责写硬件代码的,对安卓这方面的上位机并不是非常的熟悉。
不过还是决定写一个关于上位机的啦,毕竟数据显示界面对于硬件来说还是非常重要的。
在此声明,本人菜鸡一只,所讲述的内容不保证完全正确,不要因为博客中的错误来拿刀子找我(怂炸),欢迎各位大佬的建议和指正,感激不尽啊~ 喵~ 喵呜~
——————————————————一条活蹦乱跳的分割线————————————————
关于上位机的问题,我和我的老师,和我的学姐,还有一个计软院的学姐讨论了一下。
得到了一些比较独特的感悟,对于电子类专业的学生来说,如果不是以后打算吃上位机这口饭的,就不要太深入的去研究上位机这个东西,尤其是UI界面,这个是计算机吃饭的家伙。在我写上位机出现问题的时候,去找计软院的人问,他们对于这个语言和应用程序的掌握,远远比我们这些半吊子好的不是一星半点(废话︿( ̄︶ ̄)︿),很多问题可以非常灵活的解决,而我只能在一旁干着急。
同样,市场上的上位机远比我们想象的成熟,买一个20的模块,都能给你配一个完整的上位机,自己写的,未必有多好。(老师原话)
在大多数情况下,上位机是一个调试工具,也是一个信息显示界面,我们通过上位机来检查数据的收发和处理数据,而重点不在与如何把这个数据界面显示的花里胡哨,又是图像又是地图又是什么大数据分析处理。如果专注于硬件,上位机就是一个界面,这也是为什么很多时候买模块,商家配套的上位机简直土气的要死,又难看又老气,因为对于工程师来说实用是第一位的,不是拿来大众化的控制系统,再好看也没有(有时还耗内存)。除非是,一些涉及硬件接口协议的上位机,或者这个上位机和硬件底层息息相关,不然化太多时间注重如何把上位机做的高级。
但是,话说回来,显示也是很重要的,尤其是在比赛上,对于某些作品有时候显示的重要性可能会>实物,这个是建立在数据采集相对简单,但是数据处理相对复杂的情况,这个时候对显示的界面要求高。比如天气数据(虽然气象数据采集也很复杂),假设你参加一个比赛,采集气象数据,然后做综合气象数据的处理显示,硬件用的都是模块化的电路,那么数据采集就变得相对容易,但是数据的综合处理就很复杂,要进行滤波、误差化、平滑处理、再过各种各样的算法,最后还要画图像来得到 结果。这就是一个显示重过实物硬件的例子。
不过,在一般情况下,上位机的重要性都是 <= 实物硬件的。
这篇关于集成电路竞赛——Robei 杯之上位机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!