硬汉嵌入式论坛

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

[emWin] emWin5.32 Edit控件显示异常

[复制链接]

3

主题

18

回帖

27

积分

新手上路

积分
27
发表于 2024-11-28 18:38:59 | 显示全部楼层 |阅读模式
硬件平台:F429+ 1280*480的屏幕 + 32M SDRAM,emWin5.32。

页面上大概有3行*4列的Edit控件,下面放了一个listview控件。通过旋钮让某个Edit控件的值加一或减一,另外有几个Edit控件有时候会突然消失,过几秒钟又会显示。或者有时候消失后不再显示,需要再次让这个Edit控件值改变,这样消失的控件才会全部显示。

我之前怀疑是emWin的内存太小,因为把emWin的内存从4M改为2M,会出现先刷新屏幕上半部分,然后再刷新下半部分屏幕的现象,这个现象和上述控件消失的现象类似。然后将emWin内存改到8M,通过GUI_ALLOC_GetNumUsedBytes函数查看emWin内存最大使用量,最大使用量会达到7M左右;如果将emWin内存改到16M,最大内存使用量会达到14.8M左右。怎么感觉emWin是给多少内存就用多少内存?

实验到这,问题还是存在,猜测应该不是emWin内存太小的问题。请各位大佬帮忙分析下是什么原因?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-11-29 08:37:47 | 显示全部楼层
程序里面是不是做了三缓冲或者窗口使用存储设备,建议先关闭了,然后测试是否还有这个现象,我怀疑是这个地方导致的你的刷新不正常
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-11-29 10:41:38 | 显示全部楼层
eric2013 发表于 2024-11-29 08:37
程序里面是不是做了三缓冲或者窗口使用存储设备,建议先关闭了,然后测试是否还有这个现象,我怀疑是这个地 ...

是的,程序里是用了存储设备,我关闭下试试
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-11-29 12:10:27 | 显示全部楼层
eric2013 发表于 2024-11-29 08:37
程序里面是不是做了三缓冲或者窗口使用存储设备,建议先关闭了,然后测试是否还有这个现象,我怀疑是这个地 ...

关闭之后控件的值确实是一起显示的,但是界面刷新就慢了。特别是如果有背景图片,会出现从上到下慢慢刷新的现象
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-11-29 14:11:47 | 显示全部楼层
eric2013 发表于 2024-11-29 08:37
程序里面是不是做了三缓冲或者窗口使用存储设备,建议先关闭了,然后测试是否还有这个现象,我怀疑是这个地 ...

硬汉哥,我关闭了存储设备还是出现了,只不过过了很久才出现
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-11-30 07:08:40 | 显示全部楼层
Hejack 发表于 2024-11-29 14:11
硬汉哥,我关闭了存储设备还是出现了,只不过过了很久才出现

那有可能是程序问题了,创建几个简单的对话框,带EDIT,轮换切换试试正常不。

如果也不正常,得考虑是底层驱动问题了。
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-11-30 13:42:24 | 显示全部楼层
eric2013 发表于 2024-11-30 07:08
那有可能是程序问题了,创建几个简单的对话框,带EDIT,轮换切换试试正常不。

如果也不正常,得考虑是 ...

硬汉哥,我按照这个方法测试了。如果是EDIT控件的文本改变不引起其他EDIT控件的文本更新的话,不会出现这个问题,如果是某个EDIT控件的文本改变会引起其他EDIT控件的文本更新的话,就会引起这个问题。而且好像存在一个趋势,只要某个EDIT控件关联的其他EDIT控件越多,就有越大的概率出现。这是什么原因啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-11-30 14:18:45 | 显示全部楼层
Hejack 发表于 2024-11-30 13:42
硬汉哥,我按照这个方法测试了。如果是EDIT控件的文本改变不引起其他EDIT控件的文本更新的话,不会出现这 ...

我有个思路,将edit控件改成用文本控件TEXT是不是现象正常
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-12-2 08:44:48 | 显示全部楼层
eric2013 发表于 2024-11-30 14:18
我有个思路,将edit控件改成用文本控件TEXT是不是现象正常

硬汉哥,改成TEXT控件还是会存在。而且我发现,假设控件1的文本更新引起控件2、3的文本也更新,并且假设包含控件1、2、3在内的最小矩形区域内还存在控件4、5,控件1的文本更新可能会引起控件5的文本出现消失的问题。(控件1是EDIT控件,其余为TEXT控件)

这是什么原因?是不是因为底层DMA传输出现问题了?(用的是裸机开发环境)
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2024-12-2 10:32:05 | 显示全部楼层
eric2013 发表于 2024-11-30 14:18
我有个思路,将edit控件改成用文本控件TEXT是不是现象正常

不好意思硬汉哥,前面的测试结果是全部为EDIT控件的时候。如果一个EDIT控件更新引起其他EDIT控件更新,那包含这些EDIT控件在内的最小矩形区域的控件好像都会重绘。(这是通过把存储设备关闭,看界面闪烁区域来判断哪些地方重绘了)。

如果把控件2、3改成TEXT控件,不会刷新最小矩形区域,只会刷新控件1、2、3的区域。我还在测试控件会不会出现消失
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-12-2 10:33:45 | 显示全部楼层
Hejack 发表于 2024-12-2 08:44
硬汉哥,改成TEXT控件还是会存在。而且我发现,假设控件1的文本更新引起控件2、3的文本也更新,并且假设 ...

这样的话,那得锁定下你的移植问题了,dma2d优化的地方都注释掉。然后sdram的cache也关闭了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 21:33 , Processed in 0.258863 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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