硬汉嵌入式论坛

 找回密码
 立即注册
查看: 621|回复: 11
收起左侧

[emWin] emWin V5.32进度条Progbar的设置问题

[复制链接]

3

主题

13

回帖

22

积分

新手上路

积分
22
发表于 2023-6-21 12:18:09 | 显示全部楼层 |阅读模式
emWin版本:V5.32


问题描述:创建了进度条PROGBAR后,设置范围和当前值,结果发现回读的范围值和当前值都是错的。但如果使用emWin V6.28来调试发现没问题。具体调试结果看截图。这就导致了我无法通过设置回调函数来自己绘制进度条。最神奇的地方在于,哪怕回读的范围值和当前值不正确,但如果不设置自己的回调函数,让GUI内部自己画,也还是能正确绘制出进度条,

请问,有谁知道这是什么情况?这算不算是V5.32存在的BUG?


进度条问题.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106905
QQ
发表于 2023-6-21 16:48:30 | 显示全部楼层
整不好确实是个bug。单片机版有6.30的,可以使用。
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2023-6-21 23:47:56 | 显示全部楼层
eric2013 发表于 2023-6-21 16:48
整不好确实是个bug。单片机版有6.30的,可以使用。

STM32F429支持使用这个版本不,怎么查看是否支持?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106905
QQ
发表于 2023-6-22 11:36:48 | 显示全部楼层
那年的岳麓山 发表于 2023-6-21 23:47
STM32F429支持使用这个版本不,怎么查看是否支持?

没问题。这个是纯C的,只要是MDK支持的,都可以使用。

emWin6.30单片机版本发布,对应AppWizard也可以使用最新的1.34a了
https://www.armbbs.cn/forum.php? ... d=117770&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2023-6-29 08:36:47 | 显示全部楼层
这个不是bug,模拟器上的是debug版本的emwin,Widget会多使用4Byte作为控件的debugID,但是release版本不存在这个bugid,所以这时内存的数组会整体前移动4字节。去检查一下   “GUI_DEBUG_LEVEL”这个宏定义。
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2023-6-29 08:37:31 | 显示全部楼层
eric2013 发表于 2023-6-21 16:48
整不好确实是个bug。单片机版有6.30的,可以使用。

/*********************************************************************
*
*        Widget object
*
* The widget object is the base class for most widgets
*/
typedef struct {
  int EffectSize;
  void (* pfDrawUp)      (void);
  void (* pfDrawUpRect)  (const GUI_RECT * pRect);
  void (* pfDrawDown)    (void);
  void (* pfDrawDownRect)(const GUI_RECT * pRect);
  void (* pfDrawFlat)    (void);
  void (* pfDrawFlatRect)(const GUI_RECT * pRect);
} WIDGET_EFFECT;

typedef struct {
  WM_Obj      Win;
  const WIDGET_EFFECT* pEffect;
  I16 Id;
  U16 State;
  #if GUI_DEBUG_LEVEL > 1
    U32 DebugId;
  #endif  

} WIDGET;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106905
QQ
发表于 2023-6-30 10:12:01 | 显示全部楼层
Javen 发表于 2023-6-29 08:37
/*********************************************************************
*
*        Widget object
...

感谢分享。
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2023-7-12 09:29:49 | 显示全部楼层
Javen 发表于 2023-6-29 08:37
/*********************************************************************
*
*        Widget object
...

我使用的emwin V5.32的debug,宏定义GUI_DEBUG_LEVEL的定义值使得具体控件里面确实会存在debugId这个成员,在WIDGET里并不存在这个成员。另外是这个成员PROGBAR控件中是排在范围和当前值后边,即使整个内存往前移动,那也应该是移动了debugId之后的成员值,范围和当前值应该还是没变动才是
progbar.PNG
widget.PNG
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2023-7-14 14:34:15 | 显示全部楼层
那年的岳麓山 发表于 2023-7-12 09:29
我使用的emwin V5.32的debug,宏定义GUI_DEBUG_LEVEL的定义值使得具体控件里面确实会存在debugId这个成员 ...

你看的DebugID是进度条控件的,我写的DebugID是Widget的。两个类是不一样的,进度条包含Widget类。
你看到的-》 ProgressBar->DebugID
我说的->ProgressBar-> Widget -> DebugID
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2023-7-14 16:58:19 | 显示全部楼层
Javen 发表于 2023-7-14 14:34
你看的DebugID是进度条控件的,我写的DebugID是Widget的。两个类是不一样的,进度条包含Widget类。
你看 ...

我两个都有截图出来了,一个是WIDGET,一个是包含WIDGET的进度条,你仔细看下
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2023-7-15 11:32:43 | 显示全部楼层
那年的岳麓山 发表于 2023-7-14 16:58
我两个都有截图出来了,一个是WIDGET,一个是包含WIDGET的进度条,你仔细看下

都说了,一个是debug版本,一个是release版本。你这个典型的就是头文件和lib不匹配。我安装的6.32C版本头文件就是带debugID的。

很明显就是你头文件定义缺少这个,导致内存整体偏移4Byte。这有啥好犟的
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2023-7-17 11:01:18 | 显示全部楼层
Javen 发表于 2023-7-15 11:32
都说了,一个是debug版本,一个是release版本。你这个典型的就是头文件和lib不匹配。我安装的6.32C版本头 ...

根据你的回复,我仔细检查了下使用的库和头文件,结果发现还真不对应,库是532的,但是头文件全是522的,真是无语了,这么离谱的错也能犯。我用的工程是人家提供的,我只写界面,从没想过头文件和库文件不对应。替换掉头文件后,仿真显示的内存数据就对了。

最后,十分感谢这位大哥!
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 11:48 , Processed in 0.296857 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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