# minipad **Repository Path**: cat-cat-helloworld/minipad ## Basic Information - **Project Name**: minipad - **Description**: nullptr - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 44 - **Created**: 2023-07-26 - **Last Updated**: 2023-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # minipad ### 项目介绍 本项目为Linux下的各个应用程序开发,基于全志T113-S3,运行TinaLinux系统,UI部分基于lvgl开发。此仓库仅记录应用程序开发,不包括硬件、系统以及驱动部分。益于lvgl的可移植性,部分程序甚至可以只修改lvgl的底层驱动(如sdl)后直接在PC端上运行。 ### 软件架构 #### 1. 应用程序开发模式 应用程序之间采用多进程开发模式,从运行时的进程父子关系来看,主页面(main_page)为父进程,其余应用程序均为其创建的子进程。由于采用了多进程的开发模式,因此每个应用程序可以独立编译和运行。 应用程序内部采用多线程开发模式,长时间运行来看为UI线程和处理线程,短时间内可能存在一些其他线程,如音视频解码线程等。 #### 2. 应用程序源码结构 应用程序采用C/C++混合编程,C语言主要处理UI部分,C++主要处理数据和交互部分。 每个程序的都存在有xxx_gui.c和xxx.cpp,前者包含应用程序的UI部分,后者包含应用程序的处理部分。 ### 各个应用程序简介 #### 1. 主页面(main_page) 加载驱动以及运行一些后台程序,采用读取外部配置文件的方式安装应用程序,添加其他应用程序后不必重新编译主页面,只需要在配置文件中添加该应用程序的配置,包括执行文件名,图标和名称,在开机时会自动解析并安装。同时还附带天气获取功能,使用心知天气V3 API。 #### 2. 设置(setting) 用于设置一些系统的参数,包括屏幕亮度,系统音量(暂未加入)。还用于网络信息的获取与设置,包括无线网卡的信息和wifi热点的连接。 #### 3. 图片(picture) 遍历某个目录下的图片,包括bmp,jpg/jpeg和png格式的图片,在列表显示缩略图,点击缩略图后可以全屏显示,暂时不支持缩放功能,后续考虑添加。 #### 4. 电脑资源监控(pc_resource) 用来查看电脑的各个资源信息,通过socket与电脑进行TCP通信获取,服务端为AIDA64的LCD项目功能。此应用程序的主要为不同UI主题的设计和开发,电脑资源数据就那些,关键是如何使用UI显示这些数据。为了后续方便开发和添加不同的UI主题,因此,在UI部分,抽象出了"主题"这个概念,每个主题对外只需要提供初始化(init)、数据更新(update)和删除(release)三个函数,在pc_resource_gui.c中统一注册。 #### 5. 音乐播放器(music) 遍历某个目录下的音乐,目前仅支持wav与mp3格式的音乐播放,wav直接读取文件播放,mp3采用libmad解码,但不管是何种文件,最终都抽象成一个MusicObj类,方便上层调用。歌词使用lrc格式,使用C语言解析,歌词显示使用lvgl的roller小工具实现。 #### 6. 视频播放器(video) 与音乐播放器有很多异曲同工之处,都是遍历视频文件,然后解码播放。视频的解码部分基于Tina的tplayer开发,使用硬件解码,CPU占用率非常低。 ### 使用到的资源文件 代码中可能使用到的字体、背景图片等资源位于**res**目录下 ### 更新说明 此仓库后续可能会持续更新......