找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1168|回复: 12
收起左侧

滑动条UI上如何保存最终的数据?

  [复制链接]
ID:1108479 发表于 2024-2-25 11:05 | 显示全部楼层 |阅读模式

大家好,

我的项目上有一个3.5寸的触摸屏,触摸屏上做了一个图形UI,也就是滑条,如下,

slider.jpg


这个滑条主要用来设置一个变量的值,从左往右滑动时,滑条显示从0到100自增,最大100.
假设这个变量是:
unsigned char speed_val=0;

现在要把最终设定的值保存起来,比如最终滑到50,要把50这个值写进flash保存,也就是保存最后一个值。
我之前没用图形UI时,用的保存方法是,再定义一个变量的副本,
unsigned char speed_val_temp=0;

不停的对比speed_valspeed_val_temp的值,当两者值不一样时,说明滑条的值发生了变化,就把speed_val保存进flash,大概这样,

if(speed_val != speed_val_temp)
{
     speed_val_temp=speed_val;
     write_data_to_flash(speed_val_temp);
}

由于之前用户操作不频繁,所以用这种方法。
现在用了滑条,假设需要保存50这个值,用户从0滑到50,中间经历了49个值,这49个值都会被写进flash,导致写flash太频繁,而这中间的49个值也并不是我需要的,我只需要保存50这个值。但现在滑条的问题是,我不知道用户什么时候停止滑动,用户最终滑到什么值。

有人说可以在UI上加一个保存按钮,滑到最终值,点一下保存。这个确实不错,但是为了UI的好看和简洁性,最终没有加,而且我看好多别人的滑条上面也没有保存按钮啊,他们是怎么实现保存数据的?

希望大神能赐教一些思路,谢谢!


回复

使用道具 举报

ID:857072 发表于 2024-2-25 12:49 来自手机 | 显示全部楼层
串口屏发变化数值给你的时候就开始计时比如串口屏发给你的数据隔个两三秒了还没有变证明用户没有调整了把它保存一下,
回复

使用道具 举报

ID:1109793 发表于 2024-2-25 13:13 | 显示全部楼层
我是不太懂这个,不过这个不是用手指操作的?那么手指离开屏幕时保存可以不?
回复

使用道具 举报

ID:1066092 发表于 2024-2-25 16:08 | 显示全部楼层
滑动条失去焦点时保存数据?
回复

使用道具 举报

ID:933601 发表于 2024-2-25 16:20 | 显示全部楼层
我的愚见,应该可以使用时间计数,大于某个值才保存,不知是否正确!
回复

使用道具 举报

ID:213173 发表于 2024-2-25 20:42 | 显示全部楼层
保存所谓滑条的原理与按键一样,用计时器。一旦操作滑条就不停赋值计时变量预定初值并倒计时,停止操作滑条后等倒计时为0保存当前滑条数据。
回复

使用道具 举报

ID:401564 发表于 2024-2-26 12:46 | 显示全部楼层
1,牺牲一定的响应速度来提高效率,可以设定一个滑动停止时间,停止滑动一段时间后再输出滑块的值,而不是实时输出,这样的话,你从0滑动到70的时候,可能是只输出一个值:70,如果是实时输出的话,那就是从0-70一共要输出71个数据了
2,保存的位置可以先保存到单片机的内存上,关机再写入FLASH,下次开机再从FLASH读取出来就可以了
回复

使用道具 举报

ID:712097 发表于 2024-2-27 10:40 | 显示全部楼层
滑动条有没有事件驱动?如果有,在值变化的事件中保存就可以了。如果没有,用定时器,延时一段时间再读取滑动条的值后保存。
回复

使用道具 举报

ID:1107043 发表于 2024-2-27 11:09 | 显示全部楼层
其实你也可以,不急着保存。你可以先把你滑动条的值先临时存放。当你在操作其他的功能是就可以把前面操作的值再进行flash保存。比如你要退出这个界面,或者进入其他界面是就可以将滑动条的值保存起来
回复

使用道具 举报

ID:584814 发表于 2024-2-27 11:43 | 显示全部楼层
俺也不明白滑动条上方的数字是不是自己蹦出来的
就像数钱记帐,有的人是数完记账,也有的人是数一张记一次帐,仅此而已。
回复

使用道具 举报

ID:41656 发表于 2024-2-28 16:21 | 显示全部楼层
要是用的串口屏的话里面有数据读取功能你可以读取滑动条的值,存储数据建议间隔一段时间比较存储一次,不要频率太高否则数据变化时存储频率太高占用时间多也影响FLASH寿命,存储数据建议也建议增加一下CRC之类的校验
回复

使用道具 举报

ID:1108479 发表于 2024-3-23 09:58 | 显示全部楼层
c8t6 发表于 2024-2-27 11:09
其实你也可以,不急着保存。你可以先把你滑动条的值先临时存放。当你在操作其他的功能是就可以把前面操作的 ...

你的这种思路我也想到过,但是会有一个问题就是,如果用户滑到一个值后马上关机,这个数据就丢失了!如果不发生马上关机这种意外事件,你这种思路是不错的
回复

使用道具 举报

ID:1108479 发表于 2024-3-23 10:01 | 显示全部楼层
chxelc 发表于 2024-2-27 10:40
滑动条有没有事件驱动?如果有,在值变化的事件中保存就可以了。如果没有,用定时器,延时一段时间再读取滑 ...

有事件驱动,不过在值变化的事件中保存,是不是和我上面讲的一样了,就是从0滑到50,这中间经历的49个值都会被保存?而我只需要50这个值而已。

我在想是不是用释放这个事件比较好一些,结合上面兄弟的一些建议,在手指释放的时候保存应该会好一些,我的滑动条是有释放这个事件的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表