putin 发表于 2024-3-9 22:30:37

AppWizard工程中,RTOS多任务WM_SendMessageNoPara更新数据问题

请教,AppWizard生成的代码工程,RTOS中其他任务怎么使用WM_SendMessageNoPara往GUI任务SCREEN中的控件更新数据?谢谢!


eric2013 发表于 2024-3-10 09:48:42

9楼,获取下Screen的句柄

AppWizard创建页面如何通过外面按键切换页面
https://www.armbbs.cn/forum.php?mod=viewthread&tid=123076&fromuid=58
(出处: 硬汉嵌入式论坛)

putin 发表于 2024-3-11 15:24:07

eric2013 发表于 2024-3-10 09:48
9楼,获取下Screen的句柄

AppWizard创建页面如何通过外面按键切换页面


谢谢硬汉哥,按照上面方法是可以更新数据,但是现在有个新问题出现了,如果只有一个SCREEN没问题,我现在有很多个SCREEN切换,其他板子需要一直不停的往这个板子发数据,然后数据通过WM_SendMessageNoPara不停地发到其中一个SCREEN上,屏幕触摸按钮切换到其他SCREEN时没问题,现在一切换回数据显示的SCREEN时,板子就死在WM_SendMessageNoPara这里。

hpdell 发表于 2024-3-11 17:10:59

本帖最后由 hpdell 于 2024-3-11 17:15 编辑

putin 发表于 2024-3-11 15:24
谢谢硬汉哥,按照上面方法是可以更新数据,但是现在有个新问题出现了,如果只有一个SCREEN没问题,我现在 ...
貌似是先获取需要发送到屏幕句柄的id(这个需要定义为全局的), 之后发送消息时带上这个屏幕句柄 参数

我目前就是这么干,完全木有问题哟

WM_HWINhWinCctv = NULL ;


void cbID_SCREEN_Cctv(WM_MESSAGE * pMsg) {
        WM_HWIN hItem;
   int NCode, Id, i=0, id_index;
   intpError;
        volatile int res;


       
        hWinCctv = pMsg->hWin;



switch (pMsg->MsgId)

   ...

case MSG_ID_CCTV_START: {

   }break;






#define   MSG_ID_CCTV_START   (GUI_ID_USER + 0x0108)
WM_SendMessageNoPara(hWinCctv , MSG_ID_CCTV_START);   其 他地方发送消息, 那么在 cbID_SCREEN_Cctv 这个里面就可以收到消息了









putin 发表于 2024-3-11 17:21:11

hpdell 发表于 2024-3-11 17:10
貌似是先获取需要发送到屏幕句柄的id(这个需要定义为全局的), 之后发送消息时带上这个屏幕句柄 参数
...

我现在是这么做的,如果LCD只显示这一个 SCREEN 是没有问题,当我从其他 SCREEN 回到这个SCREEN 就死机了。

putin 发表于 2024-3-11 17:27:39

我在想,应该是需要获取当前显示SCREEN的句柄,WM_SendMessageNoPara只能发给当前显示的SCREEN,当前还在看手册中。

putin 发表于 2024-3-11 21:12:38

找到原因了,是切换到其他SCREEN时,删掉了原来的SCREEN,切换回原来的SCREEN时,原来的SCREEN的句柄变了。导致程序死了。
页: [1]
查看完整版本: AppWizard工程中,RTOS多任务WM_SendMessageNoPara更新数据问题