Linux上位机开发(开篇)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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.rhkb.cn/news/30349.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最长递增子序列--蓝桥oj3046拍照

题目链接 arr[] 1700 1701 1702 1703 1704 1705 dp1[] 1 2 3 4 5 6 dp2[] 6 5 4 3 2 1 sum[]dp1[]dp2[] sum[] 7 7 7 7 7 7 7是最大的倒叙和正序的…

upload-labs文件上传

第一关 上传一个1.jpg的文件,在里面写好一句webshell 保留一个数据包,将其中截获的1.jpg改为1.php后重新发送 可以看到,已经成功上传 第二关 写一个webshell如图,为2.php 第二关在过滤tpye的属性,在上传2.php后使用b…

LeetCode1137 第N个泰波那契数

泰波那契数列求解:从递归到迭代的优化之路 在算法的世界里,数列问题常常是我们锻炼思维、提升编程能力的重要途径。今天,让我们一同深入探讨泰波那契数列这一有趣的话题。 泰波那契数列的定义 泰波那契序列 Tn 有着独特的定义方式&#xf…

OpenCV 拆分、合并图像通道方法及复现

视频讲解 OpenCV 拆分、合并图像通道方法及复现 环境准备:安装 OpenCV 库(pip install opencv-python) 内容: 1. 读取任意图片(支持 jpg/png 等格式) 2. 使用 split () 函数拆解成 3 个单色通道&#xf…

【ArcGIS】地理坐标系

文章目录 一、坐标系理论体系深度解析1.1 地球形态的数学表达演进史1.1.1 地球曲率的认知变化1.1.2 参考椭球体参数对比表 1.2 地理坐标系的三维密码1.2.1 经纬度的本质1.2.2 大地基准面(Datum)的奥秘 1.3 投影坐标系:平面世界的诞生1.3.1 投…

登录固定账号和密码:

接口文档 【apifox】面试宝典 个人中心-保存用户数据信息 - 教学练测项目-面试宝典-鸿蒙 登录固定账号和密码: 账号:hmheima 密码:Hmheima%123 UI设计稿 【腾讯 CoDesign】面试宝典 CoDesign - 腾讯自研设计协作平台 访问密码&#xff1…

软件测试的基础入门(二)

文章目录 一、软件(开发)的生命周期什么是生命周期软件(开发)的生命周期需求分析计划设计编码测试运行维护 二、常见的开发模型瀑布模型流程优点缺点适应的场景 螺旋模型流程优点缺点适应的场景 增量模型和迭代模型流程适应的场景…

大模型架构记录2

一 应用场景 1.1 prompt 示例 1.2 自己搭建一个UI界面,调用接口 可以选用不同的模型,需要对应的API KEY 二 Agent 使用 2.1 构建GPT

PQL查询和监控各类中间件

1 prometheus的PQL查询 1.1 Metrics数据介绍 prometheus监控中采集过来的数据统一称为Metrics数据,其并不是代表具体的数据格式,而是一种统计度量计算单位当需要为某个系统或者某个服务做监控时,就需要使用到 metrics prometheus支持的met…

maven学习

Maven 概述 Maven 是一个基于 POM(Project Object Model,项目对象模型) 的项目管理和构建工具,主要用于 Java 项目。它通过一个中央信息管理模型(POM 文件)来管理项目的构建、依赖、文档、报告等。Maven 的…

STM32-I2C通信外设

目录 一:I2C外设简介 二:I2C外设数据收发 三:I2C的复用端口 四:主机发送和接收 五:硬件I2C读写MPU6050 相关函数: 1.I2C_ GenerateSTART 2.I2C_ GenerateSTOP 3.I2C_ AcknowledgeConfig 4.I2C…

c语言程序设计--(数据的存储)冲刺考研复试面试简答题,看看我是怎么回答的吧!!!!!

目录 1、整型在内存中的存储是怎样的? 2、原码反码补码的计算方式是什么? 3、对于整形数据在内存中存的都是二进制补码是为什么? 2、什么是大端小端存储? 3、为什么要有大端和小端的存储方式呢? 1、整型在内存中的…

记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)

文章目录 记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)一、创建项目1.1 生成提示词1.2 生成代码 二、编译预览2.1 导入项目2.2 编译预览 三、发布3.1 在微信开发者工具进行上传3…

Java 大视界 -- 基于 Java 的大数据实时数据处理框架性能评测与选型建议(121)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

MySQL索引数据结构

目录 1 索引常用的数据结构 1.1 二叉树 1.2 平衡二叉树 1.3 红黑树 1.3 Hash表 1.4 B树 1.4 B树 2 MySQL索引的数据结构 2.1 MyISAM存储引擎索引 2.2 InnoDB存储引擎索引 2.2.1 聚集索引 2.2.2 非聚集索引 2.2.3 联合索引数 2.2.4 hash索引 1 索引常用的数据结构 1.1 二叉树 二…

链表算法题目

1.两数相加 两个非空链表,分别表示两个整数,只不过是反着存储的,即先存储低位在存储高位。要求计算这两个链表所表示数的和,然后再以相同的表示方式将结果表示出来。如示例一:两个数分别是342和465,和为807…

深入解析 BitBake 日志机制:任务调度、日志记录与调试方法

1. 引言:为什么 BitBake 的日志机制至关重要? BitBake 是 Yocto 项目的核心构建工具,用于解析配方、管理任务依赖,并执行编译和打包任务。在 BitBake 构建过程中,日志记录机制不仅用于跟踪任务执行情况,还…

C++--迭代器(iterator)介绍---主要介绍vector和string中的迭代器

目录 一、迭代器(iterator)的定义 二、迭代器的类别 三、使用迭代器 3.1 迭代器运算符 3.2 迭代器的简单应用:使用迭代器将string对象的第一个字母改为大写 3.3 将迭代器从一个元素移动到另外一个元素 3.4 迭代器运算 3.5 迭代器的复…

基于multisim的自动干手器设计与仿真

1 设计的任务与要求 设计一个输出 5V 的直流稳压电源。用开关的闭合模拟手挡住光线的功能。用灯的亮灭模拟烘干吹风功能。 2 方案论证与选择 2.1 自动干手器的系统方案 本设计由5V直流电源、红外发射电路、红外接收电路、灯模拟电路构成。 1. 5V直流电源系统 这一部分是整…

【算法学习之路】7.链表算法

链表算法 前言一.原地逆置思路一:头插法思路二:双指针法思路3:递归 例题:1.头插法2.双指针法3,递归 二.双指针快慢指针:一个指针快一个指针慢例题1例题2 前言 我会将一些常用的算法以及对应的题单给写完&am…