电池电量数值异常跳变问题

项目场景:

智能手表电池电量数值异常跳变问题,影响UI数据展示。


问题描述

例如UI中显示的当前电量值47%,在不确定的时间上数值突然跳到100。


原因分析:

看现象发现:在异常出现的时候,状态栏的值会跟着变为100%,充电菜单图标上的值也会变成100%,所以怀疑是底层传上来的值出现了异常值,而不是UI处理时出错,需要监测整个充电过程中的电量数据变化进行分析。


解决方案:

需要在电池电量读取的接口函数中添加保存当前值到文件的一个log函数,对于突然变化很大的值单独做记录,用于后面分析。

void yt_value_log_save(uint32_t value)
{
    lv_fs_file_t pFp;
    UINT32 size;

    hal_rtc_t time;
    memset(&time, 0, sizeof(hal_rtc_t));
    Hal_Rtc_Gettime(&time);/*获取当前时间*/

    char buff[256] = {0};
    sprintf(buff,"%d-%d-%d:%d:%d,value=%lu\n",time.tm_mon,time.tm_mday,time.tm_hour ,time.tm_min,time.tm_sec, value);/*格式化要输出的值*/
    
    if (lv_fs_open(&pFp, "C:/value_log.nv", LV_FS_MODE_WR | LV_FS_MODE_APPEND) != LV_FS_RES_OK) {
		return ;
	}
    
    lv_fs_size(&pFp, &size);
    lv_fs_seek(&pFp, size);
    lv_fs_write(&pFp, buff, strlen(buff), NULL);/*数据写到文件*/
    lv_fs_close(&pFp);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值