硬汉嵌入式论坛

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

[emWin] WM_SendMessage这个函数使用了什么机制?

[复制链接]

76

主题

237

回帖

465

积分

高级会员

积分
465
发表于 2019-12-30 11:15:27 | 显示全部楼层 |阅读模式
WM_SendMessage这个函数使用了消息队列机制吗?我在使用过程中遇到问题,多个非GUI任务同时高频率调用这个函数给GUI任务中的窗口发自定义消息,会有概率导致系统进入硬件错误,检查了任务栈,足够大,没问题。实在找不到问题所在,想问下,这个函数内部使用了类似OS系统的消息队列的机制吗?我在调试的时候发现好像执行了这个函数会立即回调GUI窗口的自定义消息响应,有谁知道这个函数到底使用了什么机制传递消息的?抓狂....
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2019-12-30 15:25:09 | 显示全部楼层
我也跟踪过,这个函数对某些消息会立刻调用消息处理回调函数,有些又是在gui_exe中处理,不太看得明白
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2019-12-30 16:11:56 | 显示全部楼层
myxiaonia 发表于 2019-12-30 15:25
我也跟踪过,这个函数对某些消息会立刻调用消息处理回调函数,有些又是在gui_exe中处理,不太看得明白

看来这个函数在多个非GUI任务中调用存在隐患,我用操作系统的消息队列中转了一下,解决了这个问题。
回复

使用道具 举报

335

主题

2040

回帖

3050

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3050
发表于 2019-12-30 16:19:10 | 显示全部楼层
kokoromi 发表于 2019-12-30 16:11
看来这个函数在多个非GUI任务中调用存在隐患,我用操作系统的消息队列中转了一下,解决了这个问题。

看一下emwin的移植相关函数,如果需要多线程调用,它的部分函数需要加互锁,而且相关宏定义要改为1。 可能是这部分的移植没有做好。这方便的项目经验很少,不好指导。

其他任务给GUI发消息,还是应该用os本身的信号量之类的,然后,在GUI任务内部在发送窗口消息。比较规范吧。
回复

使用道具 举报

12

主题

104

回帖

140

积分

初级会员

积分
140
发表于 2019-12-30 17:22:56 | 显示全部楼层
看过ucgui的源码这一段其实就是封装好消息传入后调用处理消息回调函数而已,是一调用这条sendmsg就直接进入回调处理。。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2019-12-30 18:37:16 | 显示全部楼层
caicaptain2 发表于 2019-12-30 16:19
看一下emwin的移植相关函数,如果需要多线程调用,它的部分函数需要加互锁,而且相关宏定义要改为1。 可 ...

我现在就是改成了像你说的这个方式,没问题了。至于那个多线程调用的,我之前用过,可能是没用对或者其他原因,反正感觉很难用,发送窗口消息的任务动不动就被挂起在那个互斥锁上面了,最后放弃了。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2020-1-1 09:19:05 | 显示全部楼层
cz123123 发表于 2019-12-30 17:22
看过ucgui的源码这一段其实就是封装好消息传入后调用处理消息回调函数而已,是一调用这条sendmsg就直接进入 ...

好吧,果然是直接调用...
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2020-1-1 22:32:41 | 显示全部楼层
kokoromi 发表于 2020-1-1 09:19
好吧,果然是直接调用...

某些是直接调用,某些又不是
回复

使用道具 举报

17

主题

63

回帖

114

积分

初级会员

积分
114
发表于 2020-1-2 09:28:24 | 显示全部楼层
是不是emwin不支持多任务的原因?官方明确说的不支持多任务操控emwin
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 18:36 , Processed in 0.247896 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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