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.练习对整个系统的把控

四、扩展项目:

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

        

 五、项目资料:

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

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

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

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

相关文章

YOLOv8改进 | SAConv可切换空洞卷积(附修改后的C2f+Bottleneck)

论文地址:官方论文地址 代码地址:官方代码地址 一、本文介绍 本文给大家带来的改进机制是可切换的空洞卷积(Switchable Atrous Convolution, SAC)是一种创新的卷积网络机制,专为增强物体检测和分割任务中的特征提取而…

五子棋游戏

import pygame #导入pygame模块 pygame.init()#初始化 screen pygame.display.set_mode((750,750))#设置游戏屏幕大小 running True#建立一个事件 while running:#事件运行for event in pygame.event.get():if event.type pygame.QUIT:#当点击事件后退出running False #事…

李峋同款爱心代码

李峋爱心代码 背景代码运行pycharm打包成exe程序 背景 最近大火的电视剧《点燃我温暖你》出现,令我的家庭地位进一步下降,因为男主“李峋”已经变成了她的大老公,而我就被打入冷宫. 为了满足她的“攀比心”,我连夜给她实现了粉红色…

【刷题笔记】数组-双指针||覆盖||重复元素

【刷题笔记】数组-双指针||覆盖||重复元素 目录 移除元素删除有序数组中的重复项删除有序数组中的重复项 II分析 移除元素 https://leetcode.cn/problems/remove-element/ 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并…

FreeRTOS任务创建及细节

目录 任务创建 简化的TCB结构体 创建任务堆栈和任务TCB 初始化任务TCB的成员 初始化任务堆栈 把新任务添加到就绪列表 任务创建 BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,const char * const pcName, /*lint !e971 Unqualified char types are allowed for …

第一篇:快速入门

简介 本篇文章主要目的教你如何快速的理解、掌握cocos shader的相关知识,并附加实践案例。 shader 我们可以理解为是一种在图形渲染过程中控制像素颜色的过程,通常用来创建各种视觉效果。如光照、阴影、扭曲等。 Material(材质&#xff0…

ps5ps4游戏室如何计时?计费系统怎么查看游戏时间以及收费如何管理

ps5ps4游戏室如何计时?计费系统怎么查看游戏时间以及收费如何管理 1、ps5ps4游戏室如何计时? 下图以佳易王计时计费软件V17.9为例说明 在开始计时的时候,只需点 开始计时按钮,那么开台时间和使用的时间长度项目显示在屏幕上&am…

代码随想录算法训练营 ---第四十四天

今天开始《动态规划:完全背包》的学习! 前言: 完全背包和01背包的区别在于完全背包里的物品能无限次使用,01背包只能用一次。 第一题: 简介: 本题是纯完全背包的使用。可以看一看和01背包的区别。 代码…

数据结构-二叉树(1)

1.树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 1.有一个特殊的结点&…

SpringBoot详解

一、介绍 Spring Boot 是一个基于 Spring 框架的开源框架,用于构建微服务和 Web 应用程序。它可以帮助开发者轻松创建独立的、基于 Spring 的应用程序,并在较短的时间内完成项目的开发。 二、核心 1. 约定大于配置 Spring Boot 通过自动化配置、约定优…

电压调整型脉宽调制控制集成电路芯片D7500,工作电压范围7V ~ 40V,输出电流(Max)可达200mA,具有欠压锁定功能

D7500/D7500F SMPS 控制器电路,是一块电压调整型脉宽调制控制集成电路。内部包含5V 基准电压电路、两个误差放大器、触发电路、控制输出电路、脉宽调制比较 器、死区时间比较器及一个 振荡器。该电路可转换频率1kHz至300kHz, 基准电压(Vref)的精确度提…

大数据Doris(三十):删除数据(Delete)

文章目录 删除数据(Delete) 一、​​​​​​​DELETE FROM Statement(条件删除)

pandas根据列正逆序排序

题目:根据 buy_quantity 列进行排名,相同值分配相同的最低排名。 import pandas as pd# 创建一个示例 DataFrame data {item_id: [1, 2, 3, 4, 5, 6, 7], buy_quantity: [1, 2, 2, 3, 3, 4, 5]} df pd.DataFrame(data)# 使用 rank() 函数为 buy_quant…

git报错:error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413

git报错:error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 如图: error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 send-pack: unexpected disconnect while reading sideband packet fatal: th…

【Spring整合Junit】Spring整合Junit介绍

本文内容基于【Spring整合MyBatis】Spring整合MyBatis的具体方法进行测试 文章目录 1. 导入相关坐标2. 使用Junit测试所需注解3. 在测试类中写相关内容 1. 导入相关坐标 在pom.xml中导入相关坐标&#xff1a; <dependency><groupId>junit</groupId><ar…

Redis 面试题——持久化

目录 1.概述1.1.Redis 的持久化功能是指什么&#xff1f;1.2.Redis 有哪些持久化机制&#xff1f; 2.RDB2.1.什么是 RDB 持久化&#xff1f;2.2.Redis 中使用什么命令来生成 RDB 快照文件&#xff1f;2.3.如何在 Redis 的配置文件中对 RDB 进行配置&#xff1f;2.4.✨RDB 持久化…

人才“塔尖城市”,长沙如何炼成?

文 | 智能相对论 作者 | 范柔丝 长沙在人才吸引力上&#xff0c;近几年来可谓风头无二。 自2022年长沙人才政策“升级版45条”实施以来&#xff0c;越来越多的人才因为长沙真金白银的政策与城市发展机遇&#xff0c;奔赴长沙安居乐业。 随着2023互联网岳麓峰会吹响长沙全力…

[蓝桥杯训练]———高精度乘法、除法

高精度乘法、除法 一、高精度乘法⭐1.1 初步理解1.1.1 高精度的定义1.1.2 为什么会有高精度1.1.3 高精度乘法的复杂度 1.2 思想讲解1.3 代码实现1.3.1 声明1.3.2 实现高精度乘法1.3.3 整体实现1.3.4 代码测试 二、高精度除法⭐2.1 初步理解2.2 思想讲解2.3 代码实现2.3.1 声明2…

JDBC编程基础

JDBC编程基础 JDBC介绍创建JDBC项目的步骤1.引入依赖2.注册驱动3.获取数据库连接4.获取sql执行对象 JDBC 常用 API 详解sql执行对象PreparedStatement作用 事务管理结果集对象 JDBC项目demo测试 JDBC介绍 每个数据库都会提供一组API来支持程序员实现自己客户端&#xff0c;自己…

矩阵置零[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个m x n的矩阵&#xff0c;如果一个元素为0&#xff0c;则将其所在行和列的所有元素都设为0。请使用原地算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[…