麦步社区-论坛

标题: 求助,表盘问题,模拟没问题,安装后手表显示异常 [打印本页]

作者: Haichen    时间: 2018-5-29 22:24
标题: 求助,表盘问题,模拟没问题,安装后手表显示异常
本帖最后由 Haichen 于 2018-5-30 09:28 编辑

问题解决,源码涉及部分隐私不再公开,多谢前辈指点。
[attach]8564[/attach]
[attach]8563[/attach]
模拟没问题,安装后手表显示异常,计算的天数也不对,内容显示乱七八糟。什么情况啊[attach]8565[/attach]

作者: qs100371    时间: 2018-5-30 08:24
本帖最后由 qs100371 于 2018-5-30 08:54 编辑

ini_window里
在app_service_get_datetime之前要初始化一下 datetime,日期错误也许是这个原因。
字符显示不出来有时是因为给的宽度或高度不够。

window_reloading里
P_Window p_old_window = (P_Window) app_window_stack_get_window_by_id(g_window_id);就不会有警告,

RES_BITMAP_WATCHFACE_WEATHER_BG资源ID和保留值冲突了,后面加个1即可

其它的就不好说,我没有表。

作者: Haichen    时间: 2018-5-30 09:25
qs100371 发表于 2018-5-30 08:24
ini_window里
在app_service_get_datetime之前要初始化一下 datetime,日期错误也许是这个原因。
字符显示 ...

太感谢了,听君一席话,胜读十年书,前辈一出马,我费了两天劲的东西终于弄好了,我提前声明了全局变量struct date_time datetime,没想到在函数内不能正常使用,还是重新声明了局部变量解决了问题,太感谢了。
作者: Haichen    时间: 2018-5-30 09:57
qs100371 发表于 2018-5-30 08:24
ini_window里
在app_service_get_datetime之前要初始化一下 datetime,日期错误也许是这个原因。
字符显示 ...

现在只有一个问题了,就是计算的天数不对,模拟里计算的1139天是对的,手表里显示的却是1984天,现在又变成了84天,这个问题可能的原因是什么呢,模拟的计算没问题啊
作者: qs100371    时间: 2018-5-30 13:17
检查一下整数数据类型,有没有溢出
作者: Haichen    时间: 2018-5-30 16:28
qs100371 发表于 2018-5-30 13:17
检查一下整数数据类型,有没有溢出

我逐个排查了,所有整数都在范围内啊,甚至极端一点我把所有整数都加大了一号,8改16,16改32,问题依旧~
另外因为怀疑是运行内存不足的问题,我把定义的全局变量尽量都换成了局部变量,还是没有解决问题。
作者: Haichen    时间: 2018-5-30 19:33
qs100371 发表于 2018-5-30 13:17
检查一下整数数据类型,有没有溢出

马蛋,终于找到原因了,
api文档里面还有这么一句话……
2.        一个窗口最多创建20个图层。不要创建过多。
2.        一个窗口最多创建20个图层。不要创建过多。
2.        一个窗口最多创建20个图层。不要创建过多。
……大写的服,终于找到原因了,一整天啊,内牛满面啊……
作者: qs100371    时间: 2018-5-30 21:26
天数和步数就直接用文字输出,不要贴图了
作者: Haichen    时间: 2018-5-30 21:38
qs100371 发表于 2018-5-30 21:26
天数和步数就直接用文字输出,不要贴图了

已经解决了,这点小问题折腾了一整天~
直接文字输出的不太好看,只能将就着用了~
我看贴文字图层的函数有一个 font_type 的参数,求教是可以换字体吗?
作者: qs100371    时间: 2018-5-31 08:12
字体定义在SDK目录下maibu_font_base.h中,只有arial simsun 两种字体。
作者: Haichen    时间: 2018-5-31 14:24
qs100371 发表于 2018-5-31 08:12
字体定义在SDK目录下maibu_font_base.h中,只有arial simsun 两种字体。

多谢,现在表盘显示正常,使用过程中有一个问题,就是过两个小时左右会停止刷新,切换别的表盘再切回来时会刷新一下,之后还是不再刷新,需要关机再开机后恢复正常,但过两个小时又停止刷新,请问这种情况可能的原因是什么呢。
作者: qs100371    时间: 2018-5-31 15:01
本帖最后由 qs100371 于 2018-5-31 15:54 编辑

天数计算应该是一天只算一次,可能出问题。把这部分注释掉再试试还正常不
memset(&datetime, 0, sizeof(datetime));
  //获取数据
  app_service_get_datetime(&datetime);

用之前初始化一下

作者: Haichen    时间: 2018-5-31 19:23
qs100371 发表于 2018-5-31 15:01
天数计算应该是一天只算一次,可能出问题。把这部分注释掉再试试还正常不
memset(&datetime, 0, sizeof(dat ...

我是设置的datetime全局变量,时间改变的时候用来判断一下日期有没有改变,再确定是否计算天数,这个datetime必须用完就memset清空吗,是因为没有清空才导致两个小时后窗口就不再刷新的么?我改改试试看
作者: Haichen    时间: 2018-6-2 07:15
qs100371 发表于 2018-5-31 15:01
天数计算应该是一天只算一次,可能出问题。把这部分注释掉再试试还正常不
memset(&datetime, 0, sizeof(dat ...

测试了两天,没有解决问题,不是memset清空的问题,貌似是手表的一个什么机制待两小时刷新一次被我触发了,因为待两小时过后手表时间等不再刷新后,重新安装表盘仍然不再刷新,必须要重新关机再开机才能正常刷新。
作者: qs100371    时间: 2018-6-3 04:42
你手表上装了很多表盘吗?官方有个检查表盘内存占用的程序,内存占用大会引起手表出现莫名其妙的问题。
作者: Haichen    时间: 2018-6-3 06:30
qs100371 发表于 2018-6-3 04:42
你手表上装了很多表盘吗?官方有个检查表盘内存占用的程序,内存占用大会引起手表出现莫名其妙的问题。 ...

检测过了,内存占用不大

this app used size :            1588

text section       :    1404
rel text section   :    328
data section       :    24
bss section        :    0
rodata section     :    108
symtab section     :    672
strtab section     :    522
请按任意键继续. . .

我把天数计算的内容全部注释掉也不行,真是莫名其妙的问题

作者: qs100371    时间: 2018-6-3 07:04
把手表上的表盘都删了就留这一个看看是不是手表本身内存不够
作者: Haichen    时间: 2018-6-3 21:13
qs100371 发表于 2018-6-3 07:04
把手表上的表盘都删了就留这一个看看是不是手表本身内存不够

终于找到原因了,这个bug不好找原因,主要是因为弄完后需要等待两个小时才能判断结果,导致浪费了很多时间,经过仔细阅读了api,终于解决问题,多谢前辈的耐心指教,再次感谢!

问题原因:
api描述:2016-05-13        V1.4.2        修改:修改窗口ID的返回类型为int32_t接口名: Window app_window_stack_get_window_by_id(int32_t id);
我的代码:static int8_t g_window_id = -1;   //这里的id在两个小时后溢出了
解决办法:static int32_t g_window_id = -1;

作者: qs100371    时间: 2018-6-3 21:53
把表盘另开一贴分享一下吧
作者: Haichen    时间: 2018-6-4 06:12
qs100371 发表于 2018-6-3 21:53
把表盘另开一贴分享一下吧

好的,晚些时候我写个总结贴。
其实归根结底还是要详读api,主要是没太多时间和精力,sdk也不给力,别的ide又不能用,严重影响开发和调试~




欢迎光临 麦步社区-论坛 (http://203.195.186.190/) Powered by Discuz! X3.2