Linux基础项目开发1:量产工具——程序框架(一)

前言:

前面已经将Linux应用开发基础知识学习完了,现在让我们来做个小项目练练手,对之前的一些知识点进行一个更加具体详细的认识与了解,我们要进行的项目名称为:电子产品量产测试与烧写工具,这是一套软件,用在我们的实际生产中, 在具体开发中我们将显示系统,输入系统,文字系统,UI系统,页面系统,业务系统这五个板块进行学习。

一、项目介绍:

电子产品量产测试与烧写工具。这是一套软件,用在我们的实际生产中, 有如下特点:

1.简单易用:

         把这套软件烧写在 SD 卡上,插到 IMX6ULL 板子里并启动,它就会自动测试各个模块、烧写 EMMC 系统。

        工人只要按照说明接入几个模块,就可以完成整个测试、烧写过程。

         测试结果一目了然:等 LCD 上所有模块的图标都变绿时,就表示测试通过。

2.软件可配置、易扩展:

        通过配置文件添加测试项,可以添加不限个数的测试项。

        每个测试项有自己的测试程序,测试通过后把结果发送给 GUI 即可。各个测试程序互不影响。

3. 纯 C 语言编程

工具设计的界面,它可以一边测试一边烧写:

上图中的 led、speaker 按钮,可以点击: 

1.当你看到 LED 闪烁时,就点击 led 按钮,它变成绿色表示测试通过;

2. 当你从耳机里听到声音时,就点击 speaker 按钮,它变成绿色表示测试通过。

        其他按钮无法点击,接上对应模块后会自动测试,测试通过时图标就会变绿。

        上图中的蓝色按钮表示烧写 EMMC 的进度,烧写成功后它也会变绿。

        LCD 上所有图标都变绿时,就表示测试、烧写全部完成;某项保持红色的话,就表示对应模块测试失败。

二、程序框架:

设计到的知识点:

1.Framebuffer应用编程        2.文字显示及图像显示         3.输入系统应用编程

4.网络通信编程                    5多线程编程

三、编程规范:

初学写的代码

 现在要规范的代码:

你能把一个项目拆分成各个子系统吗?

并且这些子系统跟业务无关,

以后还可以应用在其他项目上!

对于一个子系统,

你怎么抽象出它的对外接口?

考虑周全了吗?

容易扩展吗?

跟别的模块耦合要尽量少!

这个项目可以锻炼我们哪些能力?

我们教给你的是“基础能力”:

1.良好的编程规范

2.面向对象的编程思想

3.练习对事物的抽象能力

4.练习对整个系统的把控

四、扩展项目:

        很多产品的项目界面都是和我们这个项目的界面类似的,可以称我们这个项目是这些类似项目的基础项目:

        

 五、项目资料:

关于这个项目的所有源代码已经绑定在本文章中。

很多产品的界面都是类似的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Clion+Ubuntu(WSL)+MySQL8.0开发环境搭建

1. 下载 MySQL 源码 访问 MySQL 官方网站(MySQL :: Download MySQL Community Server)并下载 MySQL 8.0 的源码包(mysql-boost-8.0.31.tar.gz)。 2. 安装编译依赖 1)更换镜像源 参考:Linux Ubuntu 修改…

实在智能荣获36氪消费新势力榜单“优选品牌服务商”

近日,36氪未来消费正式公布「FUTURE 2023」消费新势力名单,实在智能凭借专业的数字化产品力、卓越的服务力和深远的行业影响力,成功入选榜单并获评“优选品牌服务商”。 据悉,此次名单是由36氪未来消费特邀消费领域的行业专家、投…

MySQL--InnoDB引擎

InnoDB引擎 逻辑存储引擎 表空间→段→区→页→行 Tablespace 表空间(ibd文件):一个mysql实例可以对应多个表空间,用于存储记录、索引等数据Segment 段:段分为数据段、索引段、回滚段,InnoDB是索引组织表…

UI自动化测试详解

1、about自动化测试 定义:把人为驱动的测试转化为机器执行的一种过程,重点在于持续集成这个概念; 优势:节约人力和时间成本; 测试金字塔: 如上图所示,敏捷大师Mike Cohn提出该概念&#xff0…

linux 磁盘管理、分区管理常用命令

文章目录 基础命令挂载新硬盘/分区添加内存交换分区swaplvm分区管理模式 基础命令 查看目录文件大小 du -sh /backup du -sh /backup/* du -sh *查看磁盘挂载信息 df -lhT查看某个目录挂载在哪个分区,以及分区的磁盘使用情况 df [目录] #例如:df /ho…

C# 使用PanGu分词

写在前面 这是官方介绍:盘古分词是一个中英文分词组件。作者eaglet 曾经开发过KTDictSeg 中文分词组件,拥有大量用户。作者基于之前分词组件的开发经验,结合最新的开发技术重新编写了盘古分词组件。 盘古分词组件需要配合其字典文件使用&am…

【斗破年番】萧炎斩杀蝎山,活捉魂殿铁护法,救小医仙身中魔斑毒

Hello,小伙伴们,我是拾荒君。 《斗破苍穹年番》第72集的国漫已经更新了。这一集中,蝎毕岩靠着秘术的加成暂时压制住了小医仙。在激烈的交战中,小医仙不得不解开自身的厄难毒体,而每解开一次,她就离死亡更近一步。 萧炎…

中文编程开发工具高级版全部构件工具箱列表,中文编程自由版下载

中文编程开发工具高级版全部构件工具箱列表,中文编程自由版下载 附:中文编程工具构件工具箱总共22组305个构件,构件明细如下:文本件16个: (普通标签,连接标签,闪动标签,立…

艾森股份将上市在即:募资约6亿元,张兵、蔡卡敦夫妇为实控人

11月27日,江苏艾森半导体材料股份有限公司(下称“艾森股份”,SH:688720)开启申购,将在科创板上市。本次上市,艾森股份的发行价为28.03元/股,发行数量约2203万股,预计募资总额约6.18亿…

QMap key()和value(const Key key, const T defaultValue = T()) const第二个参数作用

value()函数介绍 返回与键key关联的值。 如果map不包含键为key的项,则该函数返回defaultValue。 如果没有指定defaultValue,该函数返回一个默认构造的值。 如果映射中有多个key项,则返回最近插入的项的值。 示例 定义自定义类型&#xff…

距离向量路由协议——RIP

目录 动态路由动态路由简介为什么需要动态路由动态路由基本原理路由协议的分类 距离向量路由协议RIPv1 VS RIPv2RIP简介RIPv1的主要特征RIPv1的基本配置 VS RIPv2的基本配置RIP配置案例被动接口单播更新使用子网地址 动态路由 动态路由简介 为什么需要动态路由 如果采用静态…

串口数据包收发的思路和流程-stm32入门

本节主要内容: 如何去规定一个合理的数据包格式如何收发数据包 1. 数据包格式规定/定义 1.1 HEX 数据包定义 固定包长,含包头包尾 可变包长,含包头包尾 首先数据包的作用是把一个个单独的数据给打包起来,方便我们进行多字节…

126. 单词接龙 II

126. 单词接龙 II 需要注意的是,由于要找最短路径,连接 dot 与 lot 之间的边就不可以被记录下来,同理连接 dog 与 log 之间的边也不可以被记录。这是因为经过它们的边一定不会是最短路径。因此在广度优先遍历的时候,需要记录的图…

运维01:云计算

云计算的类型 分类:公有云、私有云、混合云 云计算的服务模式 服务模式分3种: ①IaaS(Infrastructure as a Service):基础设施即服务 ②PaaS(Platform as a Service):平台即服务…

第一节HarmonyOS DevEcoStudio工具下载以及环境搭建

一、下载与安装DevEco Studio 在HarmonyOS应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio 工具下载官网:https://developer.harmonyos.com/cn/develop/deveco-stu…

STL: 容器适配器stack 与 queue

目录 1.容器适配器 1.1 STL标准库中stack和queue的底层结构 1.2 deque的简单介绍(了解) 1.2.1 deque的原理介绍 1.2.2 deque的缺陷 1.2.3 为什么选择deque作为stack和queue的底层默认容器 2. stack的介绍和使用 2.1 stack的介绍 2.2 stack的使用 2.3 利用deque模拟实现…

3分钟快速实现EG网关串口连接丰炜PLC

EG网关串口连接丰炜PLC 前言:丰炜PLC广泛应于工业控制领域,是一款性能高、稳定性强的PLC设备。此文档将介绍如何使用EG系列网关通过串口连接丰炜PLC,并添加到EP物联网云平台,实现电脑Web页面、手机APP和微信对丰炜PLC的远程监控和…

【24届校招】c++选手还有机会吗?如何选择更好的出路?

一、今年为什么c选手就业形势如此艰难? 去年c岗位的火热,不少c选手拿到高薪offer,今年转c的人群变多,内卷加剧,高学历大佬多如牛毛,很多比较好的c岗位多人投递,僧多肉少。 从行情来说&#xf…

关于‘NoneType‘ object has no attribute ‘endswith‘问题

这是个调用文件,相当于一个工具,不能单独使用,所以运行会报这个错误。

CSS3制作3D爱心动画

1、什么是CSS css,即层叠样式表的简称,是一种标记语言,有浏览器解释执行用来使页面变得更美观。 2、选择器 css3中新增了一些选择器,如下: 3、新样式 边框 css3新增了三个边框属性,分别是: bo…