正点原子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


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

目录
相关文章
|
8月前
|
人工智能 安全 物联网
《鸿蒙Next引领物联网产业变革,开启万物互联新时代》
鸿蒙Next打破设备互联壁垒,通过分布式软总线技术实现手机、电视、车载设备及智能家居的无缝协同,提升互操作性。它提供统一开发平台,支持一次开发、多端部署,降低开发成本。系统从底层优化安全机制,确保用户数据隐私。集成AI技术,实现智能控制和管理,推动产业标准化和规模化发展,开启万物互联新时代。
295 65
|
人工智能 搜索推荐 算法
玩转通义星尘:体验定制化多样角色能力
在杭州云栖大会上,阿里云对外展示了一款个性化角色创作平台——**通义星尘**,其基于大规模高质量个性化对话数据,采用分阶段的个性化训练策略,使得模型在保持通用能力的基础上,延伸出拟人、具有情感、鲜明语言风格的能力,在角色的个性、风格遵循上具有更强的指令遵循能力。那么其能力展现到底如何?我们又能玩出哪些花样呢?今天开始测试通义星尘,争取年前把8个垂直模型都测试一遍,,加油!本文为原创,未经许可请勿搬运。
玩转通义星尘:体验定制化多样角色能力
|
6月前
|
机器学习/深度学习 运维 自然语言处理
智绘运维:深度学习赋能知识图谱建设
智绘运维:深度学习赋能知识图谱建设
186 20
|
6月前
|
人工智能 资源调度 调度
DeepSeek一体机!飞天企业版上新“AI Stack”,支持DeepSeek满血版和Qwen单机部署!
飞天企业版上新“AI Stack”,支持DeepSeek满血版和Qwen单机部署!
4290 0
|
7月前
|
计算机视觉
YOLOv11改进策略【卷积层】| CVPR-2024 利用DynamicConv 动态卷积 结合C3k2进行二次创新,提高精度
YOLOv11改进策略【卷积层】| CVPR-2024 利用DynamicConv 动态卷积 结合C3k2进行二次创新,提高精度
487 0
|
10月前
|
机器学习/深度学习 编解码 算法
什么是超分辨率?浅谈一下基于深度学习的图像超分辨率技术
超分辨率技术旨在提升图像或视频的清晰度,通过增加单位长度内的采样点数量来提高空间分辨率。基于深度学习的方法,如SRCNN、VDSR、SRResNet等,通过卷积神经网络和残差学习等技术,显著提升了图像重建的质量。此外,基于参考图像的超分辨率技术通过利用高分辨率参考图像,进一步提高了重建图像的真实感和细节。
|
12月前
|
存储 NoSQL 关系型数据库
NoSQL 数据库的优缺点?
NoSQL 数据库的优缺点?
413 4
|
自然语言处理 开发者 Python
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的 HTML 内容。Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强。
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的 HTML 内容。Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强。
|
JavaScript 定位技术
【天地图】vue 天地图 T is not defined
【天地图】vue 天地图 T is not defined
406 1
|
存储 监控 Java
使用Elasticsearch实现全文搜索的最佳实践
使用Elasticsearch实现全文搜索的最佳实践