需求:通过按钮点击实现加减乘除的简易计算器。

1.我们使用矩阵按钮(lv_btnmatrix)快速创建布局,文本框(lv_textarea)显示结果。

2.在按钮回调中将点击结果加入文本框上显示。

矩阵按钮相对于普通按钮:

• 对于基于网格的按钮布局,按钮矩阵更易于使用。
• 每个按钮矩阵消耗的内存少得多。
龙芯1b开发板使用LVGL库的简易计算器-CSDN直播

lv_obj_t * calc_ta=NULL ;//矩阵按钮对象
double calc_result=0;//计算结果
char textbuf[50];//字符串缓存
static const char * calc_btnm_map[] = {"""\xE6\xB8\x85"/*清*/"""\xE9\x99\xA4"/*除*/"","\n","7", "8", "9","/","\n","4", "5","6","*","\n","1", "2", "3", "-","\n",".","0","=","+",""};//最后一个元素必须为空字符串!//计算器按钮回调事件
void calc_event_handler(lv_obj_t * obj, lv_event_t event)
{if(event == LV_EVENT_CLICKED){const char * txt = lv_btnmatrix_get_active_btn_text(obj);if(!strcmp(txt,"=")){//计算结果显示sprintf(textbuf,"%s\n",lv_textarea_get_text(calc_ta));//格式字符串calc_result = EvaluateExpression(textbuf);//将字符串(例如:1+2-3/3)传入计算函数中 返回计算结果if((calc_result - (int)calc_result) == 0)//无小数则取整数{sprintf(textbuf,"%d",(int)calc_result);}else{sprintf(textbuf,"%lf",calc_result);//calc_result 转换为字符串}lv_textarea_set_text(calc_ta,textbuf);//文本框显示计算结果}else if(!strcmp(txt,"""\xE6\xB8\x85"/*清*/"""\xE9\x99\xA4"/*除*/"")){calc_result=0;lv_textarea_set_text(calc_ta,"");}else{lv_textarea_add_text(calc_ta,txt);//将1-9 +-*/ 加入文本框中}}
}//绘制简易计算器UI
void init_ui_calc(lv_obj_t *par)
{//创建一个容器对象 存放按钮矩阵lv_obj_t * cont = lv_cont_create(par, NULL);//设置容器的大小和位置lv_obj_set_size(cont, 480, 450);lv_obj_align(cont, NULL, LV_ALIGN_CENTER, 80, 0);//设置容器的布局为LV_LAYOUT_COLUMN_LEFTlv_cont_set_layout(cont, LV_LAYOUT_COLUMN_MID);//文本框 用于显示数据calc_ta = lv_textarea_create(cont, NULL);lv_obj_set_size(calc_ta, 470, 50);lv_textarea_set_text_align(calc_ta, LV_LABEL_ALIGN_LEFT);lv_textarea_set_text(calc_ta,"");//按钮矩阵lv_obj_t * btnm = lv_btnmatrix_create(cont,0);lv_btnmatrix_set_map(btnm,calc_btnm_map);lv_obj_set_event_cb(btnm, calc_event_handler);//lv_obj_set_size(obj,width,height)lv_obj_set_size(btnm,470,350);}

龙芯1b(LS1B200)使用LVGL7.0.1组件 按钮矩阵 实现简易计算器相关推荐

  1. 龙芯1b(LS1B200)使用LVGL7.0.1组件 使用中文的坑

    问题 龙芯1b(LS1B200),使用LVGL库.无法正常显示中文字体问题. 问题查找 1.查看配置文件lvgl-7.0.1\lv_conf.h 在文件中发现龙芯已经帮助我们使用宏定义配置好了中文字库 ...

  2. 龙芯1b(LS1B200)使用LVGL7.0.1组件的初次体验

    由比赛入坑龙芯1b(LS1B200),需要对板上驱动进行开发,使用LVGL库来做UI界面控制驱动. 网上资料难以查找,在本文中记录学习. 实现效果: 使用LVGL库的基本步骤: 1.硬件和需求设置LV ...

  3. 龙芯1b(LS1B200)使用LVGL7.0.1组件的滑杆控件控制三色RGB灯的亮度

    需求:通过三个滑杆,分别控制RGB三色灯的红绿蓝颜色.并显示0-100%的滑动数值 在这里我们使用LVGL库的滑杆 (lv_slider)组件来控制数值,并绑定回调事件,在回调事件中控制RGB灯的颜色 ...

  4. 【龙芯1B】:74HC595数码管或74HC138数码管程序开发

    学习目标:解决龙芯1B:74HC595或74HC138数码管显示问题 首先我们要知道数码管的原理:以74HC595为例,74HC595是具有三态输出功能(即具有高电平.低电平和高阻抗三种输出状态)的门 ...

  5. 【龙芯1B】:有源蜂鸣器例程

    前言 大家对龙芯1B200有任何问题都可以私信我,大家的关注才是我不断更新的动力. 可能私信不能很及时的回,大家稍微谅解一下,看到立马就回. 一.蜂鸣器介绍 这里简单的介绍一下大家众所周知的蜂鸣器,蜂 ...

  6. 【国产之光】:龙芯1B(嵌入式方向)

    自从嵌入式1B的出产,我就开始了解了,毕竟是嵌入式方向的工程师,不管什么岗位都爱国,不过的确国产的一出自然想去看看国产之光,也希望祖国芯片事业越来越好.(作为一名博主当然说这些就像说废话)那么我们开始 ...

  7. 【龙芯1B】:龙芯1B200字号修改程序(基于龙芯1B200)

    嵌入式芯片与系统设计竞赛开发板 项目场景:   由于龙芯的资料很少,于是想普及一下龙芯1B的字号修改例程.希望对大家有所帮助,如有不妥之处,可联系博主!一切的资源都是为了传播学习,让大家都能学会,这才 ...

  8. 【龙芯1B】:LCD显示图片文字背景色前景色、小创语音控制lcd显示、数码管倒计时

    项目场景:     闲来无事,写了几个关于嵌入式技能大赛的任务.希望对大家有所帮助.本文开发板由百科荣创的龙芯1b开发板支持,关于嵌入式技能大赛的开发板.  LCD显示图片&文字&背景 ...

  9. 龙芯1B核心板QT4环境下,phonon+phonon_mplayer+mplayer,实现音频控制播放

    应用Phonon框架实质上分4个部分,你的程序,Phonon库,Phonon后端插件(phonon_backend),真正的后端. Phonon其实什么都不干,他只是提供了一套API接口,这套接口可以 ...

最新文章

  1. inconfont 字体库应用
  2. CTF---Web入门第十题 Once More
  3. 解决toad中number类型小数位数过长按科学计数法显示的问题
  4. 讲你肯定能懂的机器学习多维极值求解 1
  5. 目标检测、分割、识别、分类综述
  6. 【Oracle】DataGuard中 Switchover 主、备切换
  7. 时间序列深度学习:seq2seq 模型预测太阳黑子
  8. MyBatis源码阅读(三) --- 配置信息的解析以及SqlSessionFactory构建过程
  9. Cameralink光端机
  10. 又有朋友被骗入传销了!
  11. sql字符型注入-sqli第1关
  12. 浅谈大数据的过去、现在和未来
  13. FBX SDK下载安装教程
  14. SP服务商Java短信平台的软件模型和实现(吴宏杰,赵雷,杨季文,苏州大学计算机科学和技术学院)...
  15. postman上一接口返回值作为下一接口传参
  16. 360网站卫士推出免费风云加速
  17. 如何给笔记本用麦克风录的声音降噪(风扇声音大)
  18. 阿里巴开发手册之隐式传递resolveActivity检查
  19. CSS3——鼠标变小手
  20. mysql启动错误1.69_开启伪静态出错iPHP Error: iCMS 运行出错!找不到文章: ID:404(10001)...

热门文章

  1. 初学者也能上手的Python数据分析案例
  2. 【UE4有意思吧 知乎专栏导读】
  3. ZBrush教程(二):可用雕刻笔刷功能介绍
  4. c语言编程排课系统,C语言-课表排课系统.docx
  5. 电子邮箱怎么写?电子邮箱格式选择,电子邮件注册哪个好?
  6. Linux--RH124---unit 1 基础使用
  7. php简写workman聊天系统
  8. octave画心形曲线
  9. 2010年知名大企业工资大曝光
  10. abb机器人示教器io信号关联_如何在示教器上配置ABB机器人的输入/输出信号?(多图)...