一、定义

上位机:
上位机指可以直接发送操作指令的计算机或单片机,一般提供用户操作交互界面并向用户展示反馈数据。
典型设备类型:电脑,手机,平板,面板,触摸屏

下位机:
下位机指直接与机器相连接的计算机或单片机,一般用于接收和反馈上位机的指令,并且根据指令控制机器执行动作以及从机器传感器读取数据。
典型设备类型:PLC,stm32,51,FPGA,ARM等各类可编程芯片

上位机软件:
用于完成上位机操作交互的软件被定义为“上位机软件”;

二、上位机与下位机之间的关系

过程一:上位机给下位机发送控制命令,下位机收到此命令并执行相应的动作。
过程二:上位机给下位机发送状态获取命令,下位机收到此命令后调用传感器测量,然后转化为数字信息反馈给上位机。
过程三:下位机主动发送状态信息或报警信息给上位机。

为了实现以上过程,上位机和下位机都需要单独编程,都需要专门的开发人员在各自两个平台编写代码。

上位机与下位机关系示意图:

三、通信协议与通信API

实现上下位机之间的通信需要了解以下2个概念:

  • 通信协议
    上位机和下位机之间的通信协议有很多,只要能完成通信的协议都可以用在上位机与下位机之间。比如:
    通信协议(通信方式):RS232/RS485串行通信、USB、蓝牙、网络UDP/TCP

这个通信协议(通信方式)是实现上位机与下位机之间数据交换的基本通道。

  • 通信API
    在通信协议的基础上,具体发送什么数据即发送什么指令,还需要规定各个功能所对应的指令(上位机发给下位机的指令)。
    每个功能所对应的指令叫做API(Application Programming Interface), 在实际工作中常称这个api为“私有通信协议”。
    举例一条获取温度的api:
    [包头 + 获取温度对应的命令编码(编号)+ 校验位 + 包尾]
    api的命令格式,是自定义的一种固定的数据组合格式。不受任何通信方式和通信平台的限制。

这就意味着,只要通信协议(通信方式)可以建立,上位机软件可以是任意开发语言和任意开发平台,下位机也可以使用任意类型的单片机

四、上位机软件开发的特点

开发上位机软件与其他软件最大的区别就是“上位软件要连接设备并与之通信”。因此引发了上位机软件开发的各项技术:通信方式多样性、私有协议定制、通信框架的产生。

  1. 应用的场合有:
  • 手机连接智能设备
  • 电脑软件连接工业设备
  • 电脑软件连接医疗仪器
  • 电脑软件连接打印机
  • 其他需要电脑软件控制设备的场合
  1. PC软件的没落与前景
    随着智能手机和平板电脑的普及,现在大家都很少用电脑了,因为手机给用户提供了很大的使用自由,随时随地使用种类繁多的app。不仅方便高效还非常美观。现在能用手机app代替的软件,都没有人用相应电脑软件了。因此整体上PC软件在持续走衰,买台式机电脑的人也因此大量流失了。
    那么PC和PC软件就会没落甚至消失吗?就现在来看是不会(现在2020年)不仅不会还会持续好一段时间。为什么说暂时不会消失呢?是应为还有好些软件手机app和平板电脑无法替代。
    app无法代替PC软件的一些原因:
  • 操作:
    PC比手机多了键盘和鼠标,因此操作便捷性吊打手机。
  • 性能
    从配置名字上看,现在手机的cpu和内存都要超过普通电脑配置了,但是其实际性能还和台式机差好远。运行密集计算的绘图和视频相关的软件还是得用PC来完成。
  • 资源
    电脑可以接插大量的外设。比如几十T的硬盘、打印机、投影仪、摄像头等一系列外部资源。可以说吊打手机了。
  • 屏幕尺寸
    电脑都拥有一个大屏幕,操作起来效率非常高,比如excel在大屏幕上编辑起来非常高效。可以开多个软件窗口,随时切换操作。平板电脑的存在和普及就是因为大屏幕。(手机端现在有excel,但是人们还是用PC软件Excel的原因)
  • 电源
    PC一般都接着交流电,虽然不能像手机一样便携,但是拥有了持久稳定的电源。对于一些应用场合还是得使用交流电的方便。使用交流电使得电源功率大也是PC性能高的一个原因。
  • 专用外设
    有些外设必须要用PC电脑操作,比如:网银盾、加密狗、hifi声卡、行业专用采集卡等。
  • 其它
    另一个很奇葩但是有现实存在的原因是,手机相对于PC台式机更容易丢失(这里是指把手机作为专用设备的上位机设备来使用的情况)。

这里列举一些app无法替代电脑软件的例子:

视频剪辑软件、photoshop、CAD、绘制电路板软件、绘制机械三维图软件,彩超等医疗器械对应的上位机软件
行业专用设备配的上位机软件、军工设备配备的上位机软件、程序猿编程软件

除去如上所列的这些特殊软件需要使用PC的优势,剩余的软件均被手机软件所占领。手机软最大胜利就是他的便携性。
当然这也合情合理,出现了新的设备平台瓜分了PC软件的天下。技术总是要前进嘛。未来发展手机也可能会被抛弃。
因此呢,根据现在的情况来看pc软件还有好长第一段时间会持续存在。

现在遍地是手机app程序猿,对于pc软件开发者建议是,要么转行要么在特定行业中开发PC软件,这样技术积累才能持久,也能持久发展。
使用PC软件的行业主要有:医疗器械、实验室器械、军工、电力行业。

五、对手机app上位机的一些说明

为了最求便携性方便用户使用,其实很多设备专用软件也尝试开发了app端上位机软件。
但是经实际检验遇到如下方面的问题:

  1. 操作不方便,对于操作复杂的设备来说,使用app上位机软件时,还要腾出一只手或两只手来操作反而不方便了
  2. 接外设不方便,遇到最多的是接打印机不方便(虽然能接网络打印机,但实际体验差)
  3. 通信不方便,虽然可以使用蓝牙或无线网络来控制下位机设备,但是不够稳定,尤其特定行业还使用不了任何无线连接
  4. 一般工业设备的上位机软件会有多人交替操作,由于手机太便携,因此也同意丢失或被盗。

因此对于特殊行业又想用移动设备的便携性又像获得相对好的操作体验,可以使用运行Android系统的平板。

六、特殊行业的上位设备

肯德基店的点餐大屏幕(Android)、公交车上的广告屏幕(Android)、车站的导航屏幕(PC+win7)、移动手机充电站、自助贩卖机。

1.1-做了这么久,才知道什么是上位机相关推荐

  1. C#做一个简单的进行串口通信的上位机

    C#做一个简单的进行串口通信的上位机 乱世中的单纯 发布于 1年前,共有 10 条评论 1.上位机与下位机 上位机相当于一个软件系统,可以用于接收数据.控制数据.即可以对接收到的数据直接发送操控命令来 ...

  2. 为什么我的windows 10 电脑关机时,电脑灯延迟很久才熄灭?

    为什么我的 Windows 10 电脑关机时,电源灯延迟很久才熄灭?" 经常有小伙伴说,自己的Windows 10 电脑明明是做了正常关机的操作,电源灯却延迟很久后才熄灭.这是神马鬼呀? 其 ...

  3. 阿里CEO盒马内部演讲实录:跑得久才是最关键的

    摘要 价值观不是用来挂在墙上的,是不知不觉融入思考和行为之中的. 好的企业文化,首先是做好人,做"好"人和做好"人". 商业模式创新是创造生产力,组织能力创新是 ...

  4. 推送(Push)做了这么久还是误入“歧途”——MobPush

    在移动操作系统中,App可以实现消息推送(push)的功能.push是能够起到提醒或者唤醒用户的作用的,也是app运营渠道之一,运用得当可以帮助产品运营人员更高效地实现运营目标,相反盲目运用也会让AP ...

  5. 做了这么久数据分析没收获,原来一直在做“伪数据分析”

    用数据说话已成为流行语,数据分析能力,俨然已经成为互联网人的必备技能. 现在各行各业,越来越多的企业都在努力寻求具备数据分析能力的人才和专业数据分析人才,几乎所有的中.高阶产品.运营和市场甚至管理岗位 ...

  6. SSH登录太慢(等很久才提示输入密码)的问题

    SSH登录太慢(等很久才提示输入密码)的问题 SSH 登录太慢可能是 DNS 解析的问题,默认配置下 sshd 初次接受 ssh 客户端连接的时候会自动反向解析客户端 IP 以得到 ssh 客户端的域 ...

  7. 笔记本电脑开机到登入页面扩展显示器和电脑突然黑屏很久才显示

    环境: 联想E14 惠普/HPP24G4显示器 AOC/24B1XHM 显示器 问题描述: 笔记本电脑开机到登入页面扩展显示器和电脑突然黑屏很久才显示,有时电脑显示登录界面,显示器不显示,出现无信号提 ...

  8. Win7启动时黑屏很久才进入桌面的原因

    Win7启动时黑屏很久才进入桌面,处理步骤: 可能有可能中了木马,把杀毒软件升级到最新版,进行杀毒 右击我的电脑-> 管理 点击菜单栏上的查看 -> 显示隐藏的设备 点击设备管理器 -&g ...

  9. 要计算机专业才拥有的桌面,手把手教您win10黑屏一会才进桌面,win10开机黑屏很久才有画面解决办法...

    大家在操作电脑时一定会遇到很多问题,比如说win10黑屏一会才进桌面,win10开机黑屏很久才有画面解决办法就是我们经常会遇到的,小编及身边的朋友也遇到过win10黑屏一会才进桌面,win10开机黑屏 ...

最新文章

  1. 作为一个java程序员,常用的linux命令(越攒越多)
  2. php传递数据给javascript
  3. 分布式架构spring mvc +mybatis +shiro+ Activiti +Alibaba Druid
  4. 【412天】跃迁之路——程序员高效学习方法论探索系列(实验阶段169-2018.03.24)...
  5. .9-Vue源码之AST(5)
  6. python刷leetcode_零基础python刷leetcode -- 3. Longest Substring Without Repeating Characters
  7. Workspace in use or cannot be created, choose a different one.--错误解决办法
  8. python神经网络作用_Python · 神经网络(三*)· 网络
  9. Python破解滑块验证码算法,完美避开人机识别
  10. 【Golang 快速入门】高级语法:反射 + 并发
  11. Delphi多媒体设计之播放WAVE文件(API)
  12. 小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_34、SpringBoot整合Mybatis实操和打印SQL语句...
  13. windows/OpenCV/VS/C++配置
  14. 十折交叉验证python_k折交叉验证(matlab和python程序实现)
  15. AngularJS orderBy 使用要点
  16. 遭遇难题,走投无路到成功解决的心路历程 —— ORA12514:监听程序当前无法识别连接描述符中请求的服务
  17. 量化投资学习-30:股性与人性,从傅里叶变换谈谈股市大V的操作风格的观察
  18. esp32上传文件方法
  19. linux防火墙reject,Iptables 扩展动作 Reject Mark
  20. 初识Mongdb之数据查询篇(二)

热门文章

  1. python的进制转换器,Python进制转换
  2. Meshlab读取三维点云、三维点云重建以及三维点云法向量计算
  3. 查询php僵死进程,linux查找僵尸进程(zombie进程)
  4. 如何彻底禁止 macOS Big Sur 自动更新,去除更新标记和通知
  5. android 微信朋友圈图文编辑器,做朋友圈的「集赞机」:微信朋友圈生存手册 Android 篇...
  6. linux tc 限制ip流量,linux tc实现ip流量限制
  7. php第三方扣扣登陆,thinkphp3.2 实现qq第三方登录
  8. A4纸像素及WEB打印样式
  9. 接触软件工程第一周的学习笔记
  10. ASP.net中高度不能100%显示