硬汉嵌入式论坛

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

[emWin] emWin中怎么显示实时温度?

[复制链接]

45

主题

45

回帖

45

积分

初级会员

积分
45
发表于 2017-8-23 10:12:30 | 显示全部楼层 |阅读模式
DHT11程序在裸机下是显示正常的
但加入emWin中就不显示了
main文件中的任务

//DHT11温湿度
    OSTaskCreate((OS_TCB*     )&DHTTaskTCB,        
                         (CPU_CHAR*   )"DHT task",         
                 (OS_TASK_PTR )DHT_task,            
                 (void*       )0,                    
                 (OS_PRIO      )DHT_TASK_PRIO,     
                 (CPU_STK*    )&DHT_TASK_STK[0],   
                 (CPU_STK_SIZE)DHT_STK_SIZE/10,   
                 (CPU_STK_SIZE)DHT_STK_SIZE,        
                 (OS_MSG_QTY  )0,                    
                 (OS_TICK      )0,                     
                 (void*       )0,                    
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR*     )&err);
                                 
    OS_TaskSuspend((OS_TCB*)&StartTaskTCB,&err);        //挂起开始任务            
    OS_CRITICAL_EXIT();    //退出临界区
}

//DHT11温湿度
void DHT_task(void *p_arg)
    {   int t=0;
        u8 temperature;         
      u8 humidity;        
    while(1)
    {               
         if(t%10==0)//每100ms读取一次
        {                                      
            DHT11_Read_Data(&temperature,&humidity);                     
        
        }   
}
}
//界面任务

static void Caculate_RTC(WM_MESSAGE * pMsg)
{   
  char buf[30];
    char bufa[30];
    char bufb[30];
    char bufc[30];
//  u8 a=atoi(&temperature);
      WM_HWIN hWin = pMsg->hWin;

/*显示年月日 */
            sprintf(bufa,"%02d年%02d月%02d日",calendar.w_year,calendar.w_month,calendar.w_date);
        TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_0), bufa);
/*显示时间     */
      sprintf(buf,"%02d:%02d:%02d",calendar.hour,calendar.min,calendar.sec);
      TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_2), buf);
        

/*显示温度     */
      sprintf(bufb,"%d℃",aa[0]);
      TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_3),bufb);
                    
    /* 显示湿度 */                        
        sprintf(bufc,"%d%",aa[1]);  
        TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_4),bufc);
}

case WM_TIMER:
            /* 显示时间和日期 */
            Caculate_RTC(pMsg);
            /* 重启定时器 */
            WM_RestartTimer(pMsg->Data.v, 1000);
            break;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-8-23 11:09:45 | 显示全部楼层
先单独测试下你的这个工程,在main函数里面注释调用所有uCOS的代码,调用  DHT11_Read_Data(&temperature,&humidity); ,然后串口打印看看是否正常。

如果正常后再调试你的这个任务DHT_task,在函数 DHT11_Read_Data前后加上调度锁或者开关中断,然后串口单打印,看看是否正常。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-20 00:04 , Processed in 0.036159 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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