# tui_project **Repository Path**: weimingtom2000/tui_project ## Basic Information - **Project Name**: tui_project - **Description**: ✨ TUI是一套精简的可视化GUI系统,通过C语言编写的跨平台嵌入式GUI,目前支持WINDOWS、MELIS、EOS平台,后续还会支持更多芯片平台。该工程是对TUI API接口和工具的使用教程。 - **Primary Language**: C - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2022-02-16 - **Last Updated**: 2022-02-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

TUI是一套人机交互的GUI系统

## TUI特性: * TUI是一款小巧精致的GUI,采用纯C语言编写,可以用于HMI、智能家居、工业控制、教育类学习机、广告机、游戏机等应用场景。 * TUI作为嵌入式GUI,致力于软件跨平台的开发,不同平台间代码满足99%的兼容性,目前tui_project支持Windows、Melis、eos嵌入式平台,后续会增加更多平台。 * TUI内核不单单包含GUI相关的功能和丰富控件,里面还实现了消息机制、定时器、多国语言、图片(png、gif)、声音(wav、mp3)、各种资源的压缩打包最后映射成`V盘`。 * TUI内核还包含gb2312和utf8的编码转换、跨平台串口封装接口,时间、中文输入法、665KB的中文矢量字体、动画等。 * TUI提供了上位机uistudio工具,通过工具可以实现界面的可视化编辑,整个界面视图的UI开发,类似搭积木的拖拽控件,并且实现了视图、资源和逻辑的分离。 * TUI提供的上位机uistudio工具,还支持工程逆向,通过UStudio.Rever可以修改`res.disk`,方便不懂编程的人员,替换图片和更改坐标,完成固件修改。 * TUI的设计非常严谨,可以把它看成一个非常独立的模块,TUI整个生命周期有三步,初始化函数( *tui_start_init()* )、运行函数( *tui_run_loop()* )、销毁函数( *tui_end_uninit()* )三个函数控制,里面有完整地debug调试函数( *tui_dbg_core_information_dump()* 导出所有内核资源信息 ),退出的时候不会有内存泄漏和异常问题。 ## 结构目录: * :file_folder:**“apps”**    文件夹,里面存放了用户的逻辑代码,其中每个app里面的view视图代码是uistudio工具自动生成。 * :file_folder:**“includes”** 文件夹,里面存放了TUI所有接口函数头文件[“查看相关详细说明”](./includes/)。 * :file_folder:**“platform”** 文件夹,里面存放各个OS系统平台的工程编译入口文件夹(*melis、eos、vc++*)。 * :file_folder:**“res”**      文件夹,里面存放app开发的资源字体、图片、多国语言、视图布局结构、声音等其它应用资源。 * :file_folder:**“uistudio”**  文件夹,里面存放所见即所得工具所需要的工程文件。 * :handbag:**“res.disk”**  镜像包,该文件是uistudio工具,把res里面的资源处理后打包制作成一个**镜像资源文件**。
最后被映射到tui内核里面,成为一个**V:盘符**。 ## 应用APP介绍: 由于不是专业美工、开发时间有限,应用里面的所有图片均来自互联网,没有经过特殊处理(不用于商业用途),图片稍加利用,来实现TUI的接口功能。
下面我们对每个app做个简单的介绍,然后结合tui.h里面的接口,做相关说明。

主界面应用例子展示

### 弧形应用(arc_app0) * 跳转到弧形应用的目录查看[“./apps/arc_app0”](./apps/arc_app0/) ### 按钮应用(button_app1) * 跳转到按钮应用的目录查看[“./apps/button_app1”](./apps/button_app1/) ### 直线应用(line_app2) * 跳转到直线应用的目录查看[“./apps/line_app2”](./apps/line_app2/) ### 滑条应用(bar_app3) * 跳转到滑条应用的目录查看[“./apps/bar_app3”](./apps/bar_app3/) ### 动画应用(animation_app4) * 跳转到动画应用的目录查看[“./apps/animation_app4”](./apps/animation_app4/) ### 表盘应用(dashboard_app5) * 跳转到表盘应用的目录查看[“./apps/dashboard_app5”](./apps/dashboard_app5/) ### 窗口应用(window_app6) * 跳转到窗口应用的目录查看[“./apps/window_app6”](./apps/window_app6/) ### 串口应用(uart_app7) * 跳转到串口应用的目录查看[“./apps/uart_app7”](./apps/uart_app7/) ### 页容器应用(page_app8) * 跳转到页容器应用的目录查看[“./apps/page_app8”](./apps/page_app8/) ### 画板应用(draw_app9) * 跳转到画板应用的目录查看[“./apps/draw_app9”](./apps/draw_app9/) ### 设置应用(setting_app10) * 跳转到设置应用的目录查看[“./apps/setting_app10”](./apps/setting_app10/) ### 登陆应用(logon_app11) * 跳转到登陆应用的目录查看[“./apps/logon_app11”](./apps/logon_app11/)