正点原子T100智能焊台体验,顺便咱们来说说它的软件菜单、界面切换如何来实现?

简介: 正点原子T100智能焊台体验,顺便咱们来说说它的软件菜单、界面切换如何来实现?

前阵子收到了正点原子赠送的T100智能焊台以及DS100数字示波器,目前经过个人实际体验,总体感觉非常优秀,如下:

640.png

1、正点原子T100智能焊台体验

将T100智能焊台做了一下简单组装,然后开启了一波操作和焊接:

640.png

个人体验总结如下:


  • 体积较小,便于外出携带
  • 界面操作简单,参数设置功能丰富
  • 升温较快,控温稳定
  • 人性化的自动休眠和待机功能
  • 维护保养简单

2、正点原子T100智能焊台菜单框架

但是,作为软件工程师,我更有兴趣的是,它的界面是如何实现的?因为界面操作也是整个产品中非常重要的一部分,如下:

640.png

640.png

640.png

640.png

Q1.界面切换的软件设计思路

关于界面的切换的设计思想,可以参考如下文章:


C语言表驱动法编程实践(精华帖,建议收藏并实践)


C语言映射表在嵌入式串口解析、UI设计中的应用(值得收藏并实践的精华帖)

Q2.多语言版本的软件设计思路

如上,之前有小伙伴问过我一个问题,如何来设计多语言版本呢?正常面向全球出货的电子产品,那么它一定逃不过多语言版本,不同国家由于语言不同,导致上面显示的内容不一样,对于不同语言我们可以采用一个二维指针数组的方式来实现,第一维表示具体是哪国的语言,第二维表示具体要显示什么内容,例如:

const u8* Mulit_Language[3][LANGUAGE_NUM]=
{
  {
    "0.退出",
    "1.步进设置",
    "2.休眠温度",
    "3.休眠时间",
    "4.待机时间",
    "5.自动关机",
    "6.参数选择",
    "7.温度校准",
    "8.输出电源",
    "9.输出开关",
    "10.蜂鸣器",
    "11.语言选择",
    "12.恢复出厂",
  },
  {
    "0.Exit",
    "1.Step Set",
    "2.Sleep Temp",
    "3.Sleep Time",
    "4.Stdby Time",
    "5.Auto P_Off",
    "6.Param Sel",
    "7.Temp Calib",
    "8.Output Cur",
    "9.Output ON",
    "10.Beep ON",
    "11.Language",
    "12.Restore",
  },
  //后面还可以继续拓展别的语言
};

Q3.滑动菜单列表的软件设计思路

先来观察下这个界面包含什么信息:

640.png

最上面是带填充色的标题显示,右边是一个滚动条,然后中间区域有一个指向当前项的手的图标还有具体的字符串项,当操作旋钮时,对应的项则被填充背景色,且对应项的字符串的前景色也发生改变,根据这个思路,我们可以得到设计软件应该有的一些信息:


  • 1.当前选中的位置,它应该是一个变量,可以改变
  • 2.这个菜单列表具体有多长,包含了多少个菜单列表项
  • 3.选中的时候长什么样?没有被选中的时候呢?
  • 4.选中的时候加载图标显示,没有被选中加载空图标
  • 5.菜单列表项显示的内容,具体每一项要显示什么东西
  • 6.当选中这个菜单项以后,按确认键后要触发什么操作?
  • 7.菜单之间的切换,分级,列表的话就有前、后的关系
  • 8.滚动条的实现,如何与列表信息关联?


接下来,将这些信息就可以抽象为一个结构体ListItem

typedef struct ListItem
{   
  //菜单显示时光标位置
 int8_t  item_cursor; 
  //菜单包含项目数
 uint8_t item_count;
  //显示菜单的状态 是否选中
 uint8_t item_is_select;
  //菜单项目选中的ICO数据地址
 const uint8_t *item_ico_display; 
  //菜单项目没选中的ICO数据地址
 const uint8_t *item_ico_un_display; 
  //菜单列表显示的文本内容
 const uint8_t *item_display_text;
  //跳转到对应的功能菜单
 void (*Jump_Menu)(void); 
  //切换到上一级菜单列表项
 struct ListItem* prev_item_list; 
  //切换到下一级菜单列表项
 struct ListItem* next_item_list; 
}List_Item_Typedef;

这里我们采用的是双向链表的设计思想对这个菜单进行维护和更新,根据这个结构体,继续完成一个菜单列表的控制函数与具体的结构体变量还有滚动条关联起来即可,关于滚动条我们需要单独去设计一个控件,由于篇幅原因,这里就不实现了;详细的设计过程写起来稍微有些复杂,我可以在后期单独用小熊派出一个专题来实现这个过程,并进行详细的讲解。

3、开源的GUI框架

现在GUI框架设计趋向于成熟,有很多大神也在Github和Gitee上开源了不少优秀的GUI框架,经过简单的移植(GUI是纯软件实现,只要硬件支持的操作就可以套用),我们可以拥有很多基础控件,比如按钮,进度条,图标,曲线等等,其中著名的有STemWin、LVGL、TouchGFX等等,但是针对正点原子T100焊台,其实只需要能够绘制单色的GUI框架即可,对于单色的GUI框架,我们在码云上可以轻松找到:

640.png

640.png

还有类似的:


针对单色显示屏的 GUI 解决方案SimpleGUI

640.png

正点原子也有类似的产品,界面与T100智能焊台类似,源代码也是开源的,详情可以访问正点原子资料下载中心查看:

http://www.openedv.com/docs/tool/solder/solder.html


640.png

当然,你还能搜索到更多相关的资源,通过学习这些资源你会发现,其实设计思想都差不多,只要掌握其中一个,了解其设计思想,相信有朝一日你也可以撸一个适合自己项目的GUI框架,关于菜单切换和界面实现,我之前也开源了一些项目,如下,有兴趣可自行学习或研究:


谈谈嵌入式应用软件人机界面开发的菜单框架编写


开源作品:基于RT-Thread 智慧农业监测系统产品级开发


TencentOS tiny危险气体探测仪产品级开发


基于TencentOS tiny云打印机&智能达特甲醛探测系统

4、开源的T12烙铁控制器

至于具体功能,比如焊台里PID算法是怎么处理的,功能是如何交互的,在码云上有位大佬,这位大佬现在还在读研究生,但已经能自己通过STM32把一把烙铁给造出来了,详细可以访问他的码云参考他的设计思路:

https://gitee.com/Cai-Zi/STM32_T12_Controller?_from=gitee_search

640.png

640.png

往期精彩

分享GitHub上一些嵌入式相关的高星开源项目


嵌入式相关开源项目、库、资料------持续更新中


带串口屏显示的Bootloader


谈谈做产品、做项目以及标准化相关的话题

目录
相关文章
|
7月前
|
UED
软件开发常见流程,好的用户体验,智能引导助手,介绍软件相关操作,会画个键盘,对键盘的相关键进行标注,效果动态展示图怎样画????弄一个图标,相关介绍
软件开发常见流程,好的用户体验,智能引导助手,介绍软件相关操作,会画个键盘,对键盘的相关键进行标注,效果动态展示图怎样画????弄一个图标,相关介绍
|
4月前
|
XML 数据可视化 Android开发
Android应用界面
Android应用界面中的布局和控件使用,包括相对布局、线性布局、表格布局、帧布局、扁平化布局等,以及AdapterView及其子类如ListView的使用方法和Adapter接口的应用。
50 0
Android应用界面
|
6月前
|
开发者 图形学 开发工具
Unity编辑器神级扩展攻略:从批量操作到定制Inspector界面,手把手教你编写高效开发工具,解锁编辑器隐藏潜能
【8月更文挑战第31天】Unity是一款强大的游戏开发引擎,支持多平台发布与高度可定制的编辑器环境。通过自定义编辑器工具,开发者能显著提升工作效率。本文介绍如何使用C#脚本扩展Unity编辑器功能,包括批量调整游戏对象位置、创建自定义Inspector界面及项目统计窗口等实用工具,并提供具体示例代码。理解并应用这些技巧,可大幅优化开发流程,提高生产力。
547 1
|
5月前
|
存储 自然语言处理 搜索推荐
探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【9月更文挑战第4天】“OS Copilot”是一款高效的操作系统辅助软件,通过智能化手段简化电脑使用,涵盖智能命令建议、代码片段生成、文件管理及任务自动化等强大功能。其简洁的界面与友好的用户体验使其成为提升生产力的理想选择,无论是专业人士还是普通用户都能从中受益。从安装到实际应用都非常流畅,能显著提升工作效率,是优化数字生活的得力助手。
63 0
|
数据可视化 编译器 C语言
给小熊派做一个可视化的Keil工程配置模板(这个功能真香!)
给小熊派做一个可视化的Keil工程配置模板(这个功能真香!)
173 0
|
XML 测试技术 API
【Android开发日常】一文弄懂桌面图标快捷菜单 & 桌面小组件
开发可以定义快捷方式,以便在应用中执行特定操作。 这些快捷方式可在受支持的启动器或助理(如 Google 助理)中显示,方便用户快速启动应用中的常见任务或推荐任务。 通过本文你还将了解一些可提升快捷方式效果的最佳做法。
1218 1
|
存储 Java API
一个精美的主界面窗口功能的设计和实现原来如此简单,万字肝爆
一个精美的主界面窗口功能的设计和实现原来如此简单,万字肝爆
138 0
|
C#
C#实现按键精灵的'找图' '找色' '找字'的功能
  背景:游戏辅助功能通常使用按键精灵编写脚本,按键精灵的最大卖点就是能够找到画面中字,图,色,这对于模拟用户鼠标操作至关重要,这能找到道具,找到血量,实现自动打怪,自动补血,自动买卖道具,博主闲来无聊,看到一款按键精灵实现的辅助,于是乎想用WPF也写一款辅助工具,实现其核心的找图找色等功能。
2827 0
|
数据可视化 Java 容器
Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
注意由于我们计步功能的步数要在重写方法中用到,所以不能将初始化语句写在方法体内,而是要写在成员位置。在其名字的时候也要做到“见名知意”,所以我们给它起名字为step
362 0
Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
|
Windows
【开源】发布一个软件“WeNote 微便签”,比系统自带的便笺好用,每个便签可独立设倒计时
【开源】发布一个软件“WeNote 微便签”,比系统自带的便笺好用,每个便签可独立设倒计时
604 0
【开源】发布一个软件“WeNote 微便签”,比系统自带的便笺好用,每个便签可独立设倒计时