硬汉嵌入式论坛

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

[emWin] 实体按键的外部中断发送不了私人消息?

[复制链接]

1

主题

6

回帖

1

积分

新手上路

积分
1
发表于 2016-8-1 10:43:29 | 显示全部楼层 |阅读模式
void EXTI9_5_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line5)==SET)
  {
       EXTI_ClearITPendingBit(EXTI_Line5);

    delay_ms(10);

    if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)==Bit_RESET)
    {
        WM_SendMessageNoPara(WM_GetClientWindow(hWinMain),WM_MESSAGE_KEY);
    }
  }   
}[s:145]
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-8-1 10:44:59 | 显示全部楼层
case WM_MESSAGE_KEY:
            GUI_EndDialog(hDlg,0);
            WM_DeleteWindow(hDlg);
            hWinMain = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);        
            break;
这个关于界面切换的问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-1 13:06:05 | 显示全部楼层
不要中断里面发,实际测试发现的确问题比较多,如果用了RTOS的话,给任务发消息,在任务里面执行发送。
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-8-1 16:05:07 | 显示全部楼层
哦哦
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-8-1 16:22:18 | 显示全部楼层
请问,要切换grahp的界面到其他界面,为什么切换不了?
static void SetInterFace1(WM_HWIN hDlg)
{
      int i;
        WM_HWIN hItem;
        GRAPH_CreateEx(2,2,320,240,hDlg,WM_CF_SHOW,GRAPH_CF_GRID_FIXED_X,GUI_ID_GRAPH0);
    hItem = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0);
    /* Add graphs */
    for (i = 0; i < GUI_COUNTOF(_aColor); i++) {
      _ahData = GRAPH_DATA_YT_Create(_aColor, 500, 0, 0);
      GRAPH_AttachData(hItem, _ahData);
    }
    /* Set graph attributes */
    GRAPH_SetGridDistY(hItem, 20);  
        GRAPH_SetGridDistX(hItem, 24);  
    GRAPH_SetGridVis(hItem, 10);     
    GRAPH_SetUserDraw(hItem, _UserDraw);  
    /* Create and add vertical scale */
    _hScaleV = GRAPH_SCALE_Create(5, GUI_TA_LEFT, GRAPH_SCALE_CF_VERTICAL, 20);
        GRAPH_SCALE_SetFactor(_hScaleV,0.5);        //éèÖÃêyÖμ¼ä¾à
    GRAPH_SCALE_SetTextColor(_hScaleV, GUI_DARKGREEN);
    GRAPH_AttachScale(hItem, _hScaleV);  //»æÖÆêyÖμ
    /* Create and add horizontal scale */
    _hScaleH = GRAPH_SCALE_Create(230, GUI_TA_HCENTER, GRAPH_SCALE_CF_HORIZONTAL, 24);
        GRAPH_SCALE_SetFactor(_hScaleH,0.04);
    GRAPH_SCALE_SetTextColor(_hScaleH, GUI_DARKGREEN);
    GRAPH_AttachScale(hItem, _hScaleH);
}

    case WM_MESSAGE_KEY1:        
//            hGraph=WM_GetClientWindow(pMsg->hWin);
//            WM_DeleteWindow(hGraph);
//          hWinMain = WM_CreateWindow( 0,  0, 320, 240, WM_CF_SHOW, _cbDemoCallback1, 0);    break;
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-8-1 16:23:26 | 显示全部楼层
现在我只能切换一次界面,然后就硬件错误了
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-8-1 16:25:46 | 显示全部楼层
这是全部代码
static void _cbDemoCallback1(WM_MESSAGE* pMsg) {
    WM_HWIN hDlg,hGraph;
  hDlg = pMsg->hWin;   
  switch (pMsg->MsgId) {
  case WM_PAINT:   
        if(INTER == 0)
    SetInterface();

        else
        SetInterFace1(hDlg);   
   
    break;
   
    case WM_MESSAGE_KEY:
            WM_DeleteWindow(hWinMain);
          hWinMain1 = WM_CreateWindow( 0,  0, 320, 240, WM_CF_SHOW, _cbDemoCallback1, 0);        
            GPIO_SetBits(GPIOD,GPIO_Pin_3);   
            break;
   
    case WM_MESSAGE_KEY1:        
            hGraph=WM_GetClientWindow(pMsg->hWin);
            WM_DeleteWindow(hGraph);
          hWinMain = WM_CreateWindow( 0,  0, 320, 240, WM_CF_SHOW, _cbDemoCallback1, 0);   
            GPIO_SetBits(GPIOD,GPIO_Pin_6);
            break;   
   
    case WM_DELETE:
        
            break;
   
  default:
    WM_DefaultProc(pMsg);
  }
}
        if(INTER == 0)
        {
         WM_SendMessageNoPara(WM_GetClientWindow(hWinMain),WM_MESSAGE_KEY);
         GPIO_ResetBits(GPIOB,GPIO_Pin_5);
            }
         
         else {
         WM_SendMessageNoPara(WM_GetClientWindow(hWinMain1),WM_MESSAGE_KEY1);
         GPIO_SetBits(GPIOB,GPIO_Pin_5);
         INTER=0;
        }
        INTER++;

void MainTask1(void) {
    GUI_SetBkColor(GUI_WHITE);  
  GUI_Clear();
    hWinMain = WM_CreateWindow( 0,  0, 320, 240, WM_CF_SHOW , _cbDemoCallback1, 0);

    while(1)
    {
        delay_ms(100);
        GUI_Exec();
        delay_ms(500);
    }
}
回复

使用道具 举报

1

主题

6

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-8-1 16:27:38 | 显示全部楼层
是graph的父窗口没删除成功吗,还是句柄有问题?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 23:53 , Processed in 0.040955 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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