Linux上位机开发(开篇)

news2025/3/10 4:50:57

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        传统的上位机开发,一般都是默认pc软件开发。既然是pc软件,一般来说都是基于windows平台开发。开放的框架,无非是wpf、qt、mfc这三种。但是事实上,很多嵌入式的平台,也需要进行界面开发。如果是单片机、类似于stm32这种,大多数都是用ucGUI或者是lvgl。而linux平台呢,非常建议大家用qt进行开发。有了图形界面之后,系统的很多交互都会非常方便,效率也比webserver+网页方便很多。

1、Qt开发的好处

        个人觉得qt开发最大的好处就是跨平台。简单来说,windows上面怎么做,linux平台就怎么做。这样写下来的代码,几乎不需要修改就可以port到嵌入式平台上面使用。

2、不需要安装虚拟机开发Qt

        目前市面上,已经有非常多的卡片电脑。类似于树莓派、鲁班猫这样的开发板,自己烧录好image之后,就可以开发了。常用的qt开发环境,直接apt-get下载即可,不需要做什么交叉编译、也不需要安装虚拟机。以前通过这种开发方式来进行上位机开发,这是很老的开发模式,效率也不高。所以,还是建议大家直接选择开发板进行二次开发。

3、开发板可以进行gdb调试

        现在的开发板非常强大,动不动都是4核cpu、6核cpu。板子上面除了gcc、g++之外,还有gdb工具。这也就是说,如果出现了编译错误,可以直接用gdb进行调试。和打印log相比较,gdb调试一开始的时候,也许需要记住很多的命令,等到用熟了之后,其实开发效率非常高。

4、编译不需要集成开发环境

        开发qt的时候,可能很多同学还是习惯用qt creator这种IDE进行开发。当然如果是画界面,用qt designer还是非常方便的。但是如果是编译调试,其实makefile & g++ & uic/moc/rcc命令的方式更加便捷、高效。

5、借助于deepseek之类的工具进行开发

        自从有了chatgpt/deepseek之类的工具之后,其实开发效率提高了很多。对于控件的选择、定时器、数据库、网络、图形绘制这种常见的工作,用工具来解决其实是最快的。也就是说,我们把命令告诉工具,这样生成的代码粘贴到我们自己的软件当中,这种方式其实效率是最高的。

        虽然生成的代码可能有问题,但是我们可以进一步去分析和调试,甚至于可以在这个基础之上进行优化。我们自己的价值,应该是怎么把应用和客户的需求bind在一起。

6、可以直接控制硬件

        和pc操作不同,很多嵌入式设备是和电气、机械、电机、camera直接沟通的。所以很多时候我们的算法结果,是可以直接操作其他硬件设备的,比如通过232/485/can/usb/网络去进行控制,这是pc上面所没有的体验。

7、稳定性和实时性考虑

        很多工业、医疗设备,对稳定性要求很高,基本是要求不能死机的。只有设备稳定了,才会要求后面的性能和易操作性,没有稳定一切都是0。

        另外,很多的arm soc旁边都有一个mcu,完全可以通过这个mcu做一些实时性的动作,这也是一般pc没有办法做到的。

8、户外便捷性

        嵌入式设备很多都是用电池的,在户外进行使用的。所以软件运行的过程当中,是不是需要进入睡眠模式,或者是低功耗模式,这也是一个考验。

9、启动速度

        原则上,嵌入式设备启动速度越快越好。甚至于说,图形界面先出来,然后边运行边加载,这总比长时间没有反应要强很多。这方面,非常建议大家多多看看其他家嵌入式设备界面的做法,争取能够做到取长补短。

10、软硬结合才是合适的商业模式

        纯软件开发,就目前的商业环境来说,很容易做成一锤子买卖。或者软件容易被人破解。但是如果我们是软件跟着嵌入式设备走,搭配一定的加密逻辑,这样就变成不单卖软件,而是去卖模块。这样客户拿到了实体东西,也不会觉得亏。要不然,只是一个软件交出去了,客户怎么着都不会满意。

        对于开发者来说,自己的利益得到了保护,也才有信心和去不停迭代软件和算法,形成一个良性的软件开发模式。毕竟自己的工作得到了认可和汇报,才方便进行后续的开发工作。

        和pc上位机比较,嵌入式成本上优势很大,这也是嵌入式设备长盛不衰的一个重要原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2312483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法005——有效三角形个数

力扣——有效三角形个数点击链接跳转 判断三条边是否能组成三角形,大家第一时间想到的就是两边之和大于第三边 但是运用这个方法,我们需要判断三次,有一个更简单的方法,只需要判断一次 因为 C 已经是三边之中最大的了&#xff…

【STM32】江科大STM32学习笔记汇总(已完结)

00. 目录 文章目录 00. 目录01. STM32学习笔记汇总02. 相关资料下载03. 打赏04. 附录 01. STM32学习笔记汇总 【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【ST…

【Python编程】高性能Python Web服务部署架构解析

一、FastAPI 与 Uvicorn/Gunicorn 的协同 1. 开发环境:Uvicorn 直接驱动 作用:Uvicorn 作为 ASGI 服务器,原生支持 FastAPI 的异步特性,提供热重载(--reload)和高效异步请求处理。 启动命令: u…

OSPF的各种LSA类型,多区域及特殊区域

一、OSPF的LSA类型 OSPF(开放最短路径优先)协议使用多种LSA(链路状态通告)类型来交换网络拓扑信息。以下是主要LSA类型的详细分类及其作用: 1. Type 1 LSA(路由器LSA) 生成者:每个…

pyqt联合designer的运用和设置

PyQt Designer 简介 PyQt Designer 是一个用于创建和设计 PyQt 应用程序用户界面的可视化工具。它允许用户通过拖放方式添加和排列各种控件,如按钮、文本框、滑块等,并设置它们的属性和样式,从而快速构建出美观且功能完整的 UI 界面。 Windows版本:【免费】安装包别管啊啊…

vulnhub靶场之【digitalworld.local系列】的snakeoil靶机

前言 靶机:digitalworld.local-snakeoil,IP地址为192.168.10.11 攻击:kali,IP地址为192.168.10.6 kali采用VMware虚拟机,靶机选择使用VMware打开文件,都选择桥接网络 这里官方给的有两种方式&#xff0…

Ubuntu切换lowlatency内核

文章目录 一. 前言二. 开发环境三. 具体操作 一. 前言 低延迟内核(Lowlatency Kernel) 旨在为需要低延迟响应的应用程序设计的内核版本。Linux-lowlatency特别适合音频处理、实时计算、游戏和其他需要及时响应的实时任务。其主要特点是优化了中断处理、调…

C++修炼之路:初识C++

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 引言 …

微信小程序+SpringBoot的单词学习小程序平台(程序+论文+讲解+安装+修改+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统背景 &#xff08;一&#xff09;社会需求背景 在全球化的大背景下&#xff0c;英语作为国际…

VBA 数据库同一表的当前行与其他行的主键重复判断实现方案1

目的&#xff0c;判断是否主键重复&#xff0c;不重复则登录新数据&#xff0c;重复则不登录。 定义类型&#xff1a; DataRecord   tableName 表名   rowNumber 行号   columnName 列名   data 数据 想要实现的代码逻辑如下&#xff1a; 模拟数据库的登录过程。假设…

VUE的第二天

1. 指令修饰符 1.1什么是指令修饰符&#xff1f; ​ 所谓指令修饰符就是通过“.”指明一些指令后缀 不同的后缀封装了不同的处理操作 —> 简化代码 1.2按键修饰符 keyup.enter —>当点击enter键的时候才触发 代码演示&#xff1a; <div id"app"><…

Element Plus中的树组件的具体用法(持续更新!)

const defaultProps {//子树为节点对象的childrenchildren: children,//节点标签为节点对象的name属性label: name, } 属性 以下是树组件中的常用属性以及作用&#xff1a; data&#xff1a;展示的数据&#xff08;数据源&#xff09; show-checkbox&#xff1a;节点是否可…

尚硅谷爬虫note14

一、scrapy scrapy&#xff1a;为爬取网站数据是&#xff0c;提取结构性数据而编写的应用框架 1. 安装 pip install scrapy 或者&#xff0c;国内源安装 pip install scrapy -i https&#xff1a;//pypi.douban.com/simple 2. 报错 报错1&#xff09;building ‘twisted.te…

永洪科技深度分析实战,零售企业的销量预测

随着人工智能技术的不断发展&#xff0c;智能预测已经成为各个领域的重要应用之一。现在&#xff0c;智能预测技术已经广泛应用于金融、零售、医疗、能源等领域&#xff0c;为企业和个人提供决策支持。 智能预测技术通过分析大量的数据&#xff0c;利用机器学习和深度学习算法…

2.数据结构-栈和队列

数据结构-栈和队列 2.1栈2.1.1栈的表示和实现2.1.2栈的应用举例数制转换括号匹配检验迷宫给求解表达式求值 2.1栈 栈是限定仅在表尾进行插入或删除操作的线性表&#xff0c;因此&#xff0c;对栈来说&#xff0c;表尾端有其特殊含义&#xff0c;称为栈顶&#xff08;top&#x…

android studio开发文档

android基本样式 1.文本 2.设置文本大小 3.字体颜色 背景 资源文件 xml’引用资源文件 4.视图宽高 5.间距 6.对齐方式 常用布局 1.linearLayout线性布局 2.相对布局 RelativeLayout 3.网格布局GridLayout 4.scrollview滚动视图 Button 点击事件与长按事件 长按 按钮禁用与…

Java 对象与类——从 C++ 到 Java

文章目录 面向对象程序设计概述使用预定义类用户自定义类静态字段与静态方法方法参数对象构造包JAR 文件文档注释类设计技巧 面向对象程序设计概述 面向对象程序设计&#xff08;OOP&#xff09;在 20 世纪 70 年代出现&#xff0c;是当今主流编程范型&#xff0c;Java 是面向…

一篇文章讲解清楚ARM9芯片启动流程

SAM9X60 ARM9 boot启动流程关键词介绍&#xff1a; 第一级bootloader - 也叫boot ROM&#xff0c;是集成在MPU内部的ROM里面 它的主要功能是执行对MPU的基本初始化和配置&#xff0c;查找并将第二级bootloader从外部NVM中读取出来并放到MPU内部的SRAM. 可以让MPU强制停留在第一…

【2025】Electron + React 架构筑基——从零到一的跨平台开发

引言 源代码仓库&#xff1a; Github仓库【electron_git】 你是否厌倦了在命令行中反复输入git status&#xff0c;却依然无法直观看到文件变化&#xff1f; 是否羡慕VS Code的丝滑Git集成&#xff0c;却苦恼于无法定制自己的专属工具&#xff1f; 本专栏将为你打开一扇新的…

Vue3实战学习(IDEA中打开、启动与搭建Vue3工程极简脚手架教程(2025超详细教程)、Windows系统命令行启动Vue3工程)(2)

目录 一、命令行中重新启动已搭建好的Vue3工程。(快速上手) &#xff08;0&#xff09;Windows环境下使用命令行从零到一手动搭建Vue3工程教程。 &#xff08;1&#xff09;首先找到已建Vue3工程的目录。 &#xff08;2&#xff09;无需再下载依赖包&#xff0c;直接执行npm ru…