硬汉嵌入式论坛

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

[emWin] 温湿度DHT11加入条件判断

[复制链接]

45

主题

45

回帖

45

积分

初级会员

积分
45
发表于 2016-8-18 01:11:56 | 显示全部楼层 |阅读模式
金钱
请问温湿度是用DHT11_Read_Data(&temperature,&humidity);函数体,temperature为温度,想要它加入条件判断怎样加    比如1度到28度   文本颜色黑色   29度到32度文本颜色红色
      DHT11_Read_Data(&temperature,&humidity);       //读取温湿度值
            hItem =WM_GetDialogItem(pMsg->hWin, ID_TEXT_3);
       TEXT_SetTextAlign(hItem, TEXT_CF_RIGHT |TEXT_CF_BOTTOM);
           if(temperature=0,temperature<=29)//
                   {
                       TEXT_SetBkColor(hItem,GUI_LIGHTBLUE); //背景颜色
                      TEXT_SetTextColor(hItem,GUI_RED);//文本颜色黑色
                      TEXT_SetFont(hItem,&GUI_FontHZ16);  //字体
       }
         if((temperature=30,temperature<=35)==0)//
               {
                   TEXT_SetBkColor(hItem,GUI_RED); //背景颜色红色
                  TEXT_SetTextColor(hItem,GUI_BLACK);//文本颜色黑色
                  TEXT_SetFont(hItem,&GUI_FontHZ24);  //字体
                   }
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-18 13:54:38 | 显示全部楼层
if((temperature>=0)&&(temperature<=28)   1度到28度
if((temperature>=29)&&(temperature<=32)   29度到32度







回复

使用道具 举报

45

主题

45

回帖

45

积分

初级会员

积分
45
 楼主| 发表于 2016-8-18 21:26:40 | 显示全部楼层

回 eric2013 的帖子

这样写的  数据显示不出来     串口能打印数据也是正常的
捕获12.PNG 捕获13.PNG 捕获14.PNG
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-19 09:52:41 | 显示全部楼层

回 pengzisheng 的帖子

pengzisheng:这样写的  数据显示不出来     串口能打印数据也是正常的

 (2016-08-18 21:26) 
确认下你的WM_TIMER消息得到执行了没有,可以在这个消息里面做个串口打印
回复

使用道具 举报

45

主题

45

回帖

45

积分

初级会员

积分
45
 楼主| 发表于 2016-8-19 21:41:52 | 显示全部楼层

回 eric2013 的帖子

eric2013:确认下你的WM_TIMER消息得到执行了没有,可以在这个消息里面做个串口打印 (2016-08-19 09:52) 
WM_TIMER消息打印出来是
湿度为134295549 %RH ,温度为 134295549℃
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-20 09:32:17 | 显示全部楼层

回 pengzisheng 的帖子

pengzisheng:WM_TIMER消息打印出来是
湿度为134295549 %RH ,温度为 134295549℃
 (2016-08-19 21:41) 
你返回的这个温度是什么。
134295549 转换成是16进制是0x8012FFD, 这个应该是flash部分的地址。

1. 首先你确认你的定时器功能是不是周期执行的
2. 然后确定你的Text控件是否正常工作了,排查也简单,显示自增的数据看看。

3. 最后再解决你的DHT11。
回复

使用道具 举报

45

主题

45

回帖

45

积分

初级会员

积分
45
 楼主| 发表于 2016-8-21 10:04:04 | 显示全部楼层

回 eric2013 的帖子

eric2013:

你返回的这个温度是什么。
134295549 转换成是16进制是0x8012FFD, 这个应该是flash部分的地址。

1. 首先你确认你的定时器功能是不是周期执行的
.......
使用了自增数字方法正实了 ext控件正常工作 定时器功能是周期执行的
就是显示不了
  1. // USER START (Optionally insert additional includes)
  2. // USER END
  3. #include "iconviewdemo.h"
  4. #include "DIALOG.h"
  5. #include "rtc.h"
  6. #include <stdio.h>
  7. #include "ukbiov.h"
  8. #include "background.h"
  9. #include "DIALOG.h"
  10. #include "FRAMEWIN.h"
  11. #include "TestAPP.h"
  12. #include "stm32f10x.h"
  13. #include "rtc.h"
  14. #include "EmWinHZFont.h"
  15. #include "stm32f10x_it.h"
  16. #include "dht11.h"
  17. #include "listwheeldemoa.h"
  18. #include "led.h"
  19. #include "delay.h"
  20. /*
  21. *********************************************************************************************************
  22. *    函 数 名: _cbCallback1
  23. *    功能说明: 回调函数
  24. *    形    参:pMsg 指针参数            
  25. *    返 回 值: 无
  26. *********************************************************************************************************
  27. */
  28. WIN_PARA WinPara;            //用户使用的窗口额外数据
  29. WM_HWIN  hWinMais;  
  30. uint8_t    s_ucSelIconIndex = 0;    /* 选择的ICON,默认不选择任何 */
  31. DHT11_Data_TypeDef DHT11_Data;  //温湿度结构体
  32. //app图标描述结构体
  33. typedef struct{
  34.     const GUI_BITMAP     *pBitmap;   //app图标
  35.     const char            *pText;     //app图标名字
  36. }BITMAP_ITEM;
  37. //ICONVIEW显示的APP图标
  38. static const BITMAP_ITEM BitmapItemTab1[]={
  39.     {&bmGUI1,        "控制器"},
  40.     {&bmbook,        "Book"},
  41.     {&bmbookshelf,    "Booksh"},
  42.     {&bmbrowser,    "Brower"},
  43. };
  44. /*
  45. *********************************************************************************************************
  46. *                                     对话框GUI_WIDGET_CREATE_INFO类型数组
  47. *********************************************************************************************************
  48. */
  49. static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
  50. {
  51.   { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 320, 240, 0, 0x0, 0 },
  52.   { TEXT_CreateIndirect, "", ID_TEXT_0, 0, 0, 111, 25, 0, 0x0, 0 },
  53.   { TEXT_CreateIndirect, "", ID_TEXT_1, 0, 25, 72, 25, 0, 0x0, 0 },
  54.   { TEXT_CreateIndirect, "", ID_TEXT_2, 72, 0, 170, 50, 0, 0x0, 0 },
  55.   { TEXT_CreateIndirect, "", ID_TEXT_3, 239, 0, 80, 25, 0, 0x0, 0 },
  56.   { TEXT_CreateIndirect, "", ID_TEXT_4, 240, 25, 80, 25, 0, 0x0, 0 },
  57. //  { ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_0, 0, 32, 320, 210, 0, 0x0, 0 },
  58.   // USER START (Optionally insert additional widgets)
  59.   // USER END
  60. };
  61. /*
  62. *********************************************************************************************************
  63. *    函 数 名: Caculate_RTC
  64. *    功能说明: 显示RTC时间
  65. *    形    参:pMsg 指针参数            
  66. *    返 回 值: 无
  67. *********************************************************************************************************
  68. */
  69. static void Caculate_RTC(WM_MESSAGE * pMsg)
  70. {     
  71.   char buf[30];
  72.     char bufa[30];
  73.     char bufb[30];
  74.     char bufc[30];
  75.       WM_HWIN hWin = pMsg->hWin;
  76. /*显示年月日 */
  77.             sprintf(bufa,"%02d年%02d月%02d日",calendar.w_year,calendar.w_month,calendar.w_date);
  78.         TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_0), bufa);
  79. /*显示时间     */
  80.       sprintf(buf,"%02d:%02d:%02d",calendar.hour,calendar.min,calendar.sec);
  81.       TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_2), buf);
  82.         
  83. /*显示温度     */
  84.       sprintf(bufb,"%d.%d℃",DHT11_Data.temp_int,DHT11_Data.temp_deci);
  85.       TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_3),bufb);
  86.                     
  87.     /* 显示湿度 */                        
  88.         sprintf(bufc,"%d.%d %",DHT11_Data.humi_int,DHT11_Data.humi_deci);  
  89.         TEXT_SetText(WM_GetDialogItem(hWin,ID_TEXT_4),bufc);
  90. /* 串口显示 */   
  91. //        printf("\\r\\n读取DHT11成功!\\r\\n\\r\\n湿度为%d.%d %RH ,温度为 %d.%d℃ \\r\\n",\\
  92. //        DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);
  93. }
  94. /*
  95. *********************************************************************************************************
  96. *    函 数 名: _cbDialogInfo
  97. *    功能说明: 主窗口的回调函数
  98. *    形    参:pMsg   参数指针
  99. *    返 回 值: 无
  100. *********************************************************************************************************
  101. */
  102. static void _cbDialog(WM_MESSAGE * pMsg)
  103. {
  104.     WM_HWIN hItem;
  105.     int NCode, Id;
  106.     switch (pMsg->MsgId)
  107.     {
  108.         
  109.         case WM_TIMER:
  110.             /* 显示时间和日期 */
  111.             Caculate_RTC(pMsg);
  112.             /* 重启定时器 */
  113.             WM_RestartTimer(pMsg->Data.v, 1000);
  114.             break;
  115.         
  116.                     
  117. case WM_INIT_DIALOG:
  118.                hItem = pMsg->hWin;
  119.     /* 输出年月日 */
  120.                 hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
  121.                 TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
  122.                 TEXT_SetFont(hItem,&GUI_FontHZ12);  //字体
  123. /* 输出时间 */   
  124.           hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2);
  125.         TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
  126.                 TEXT_SetFont(hItem,&GUI_FontHZ24);  //字体
  127. /*显示温度     */
  128.             hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3);
  129.         TEXT_SetTextAlign(hItem, TEXT_CF_RIGHT | TEXT_CF_BOTTOM);
  130. //        TEXT_GetUserData(hItem,&temperature);
  131. //            if(*bufb>=1&&*bufb<=28)
  132. //                    {
  133.                         TEXT_SetBkColor(hItem,GUI_LIGHTBLUE); //背景颜色
  134.                         TEXT_SetTextColor(hItem,GUI_RED);//文本颜色黑色
  135.                         TEXT_SetFont(hItem,&GUI_FontHZ16);  //字体
  136. //        }
  137. //         else  if(*bufb>=29&&*bufb<=32)
  138. //                {
  139. //                    TEXT_SetBkColor(hItem,GUI_RED); //背景颜色红色
  140. //                    TEXT_SetTextColor(hItem,GUI_BLACK);//文本颜色黑色
  141. //                    TEXT_SetFont(hItem,&GUI_FontHZ24);  //字体
  142. //                    }
  143. ////                else //
  144. ////                {
  145. //                    TEXT_SetBkColor(hItem,GUI_LIGHTBLUE); //背景颜色红色
  146. //                    TEXT_SetTextColor(hItem,GUI_BLACK);//文本颜色黑色
  147. //                    TEXT_SetFont(hItem,&GUI_FontHZ24);  //字体
  148. ////                    }
  149.                                     hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_4);
  150.       TEXT_SetTextAlign(hItem, TEXT_CF_RIGHT | TEXT_CF_BOTTOM);
  151.                 TEXT_SetFont(hItem,&GUI_FontHZ16);  //字体
  152.                     
  153.                     
  154.             break;
  155.         
  156.         case WM_PAINT:
  157.             GUI_Clear();     //清除活动窗口  
  158. //           GUI_DrawBitmap(&bmguia1,0,0);  //绘制背景图片   
  159.             break;
  160.         
  161.    
  162. case WM_NOTIFY_PARENT:
  163.             Id=WM_GetId(pMsg->hWinSrc);
  164.             NCode=pMsg->Data.v;
  165.             switch(Id)
  166.             {        
  167.             case ID_ICONVIEW_0:    //ICONVIEW0控件
  168.                     switch(NCode)    //通知代码
  169.                     {                        
  170.                         case WM_NOTIFICATION_CLICKED:
  171.                             break;
  172.                         case WM_NOTIFICATION_RELEASED:
  173.                             s_ucSelIconIndex=ICONVIEW_GetSel(pMsg->hWinSrc);
  174.                         
  175.                 switch( ICONVIEW_GetSel(pMsg->hWinSrc))
  176.                             {
  177.                                 case 0:        //APP0
  178.                                     if(BagAPPWin==NULL)CreateBagAPP();      //创建BagAPP
  179.                                     break;
  180.                                 case 1:        //APP1
  181.                                     if(BookAPPWin==NULL)CreateBookAPP();    //创建BookAPP
  182.                                     break;
  183.                                    case 2:        //APP2
  184.                                     CreateWindow();    //创建BookshAPP
  185.                                     break;
  186.                                 case 3:        //APP3
  187. //                                    CreateListWheelDemo();    //创建BrowerAPP
  188.                                     break;
  189.                             }
  190.                             break;
  191.                         case WM_NOTIFICATION_SEL_CHANGED:
  192.                             break;   
  193.                     }
  194.             }        
  195.         default:
  196.             WM_DefaultProc(pMsg);
  197.         
  198.         
  199.     }
  200. }
  201. /*
  202. *********************************************************************************************************
  203. *    函 数 名: MainTask
  204. *    功能说明: 主函数
  205. *    形    参:无
  206. *    返 回 值: 无
  207. *********************************************************************************************************
  208. */
  209. void iconviewdemo(void)
  210. {
  211.    
  212.     uint8_t i;
  213.     /* 使能所有窗口使用emWin内存设备,包括桌面窗口 */
  214.     WM_SetCreateFlags(WM_CF_MEMDEV);   
  215.     /* 设置皮肤上 */
  216.     FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
  217.     PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
  218.     FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
  219.     PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
  220.     BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
  221.     CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
  222.     DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
  223.     SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
  224.     SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
  225.     HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
  226.     RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
  227.         
  228.     WinPara.hWinMain = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  229.     /*在指定位置创建指定尺寸的ICONVIEW 小工具*/
  230.     WinPara.hWinICON = ICONVIEW_CreateEx(0,                 /* 小工具的最左像素(在父坐标中)*/
  231.                              50,                     /* 小工具的最上像素(在父坐标中)*/
  232.                              320,                    /* 小工具的水平尺寸(单位:像素)*/
  233.                              190,     /* 小工具的垂直尺寸(单位:像素)*/
  234.                              WinPara.hWinMain,                         /* 父窗口的句柄。如果为0 ,则新小工具将成为桌面(顶级窗口)的子窗口 */
  235.                              WM_CF_SHOW | WM_CF_HASTRANS,       /* 窗口创建标记。为使小工具立即可见,通常使用 WM_CF_SHOW */
  236.                              0,//ICONVIEW_CF_AUTOSCROLLBAR_V,     /* 默认是0,如果不够现实可设置增减垂直滚动条 */
  237. //                             GUI_ID_ICONVIEW0,                     /* 小工具的窗口ID */
  238.               ID_ICONVIEW_0,
  239.                              82,                     /* 图标的水平尺寸 */
  240.                              80);/* 图标的垂直尺寸 */
  241.    
  242.     /* 向ICONVIEW 小工具添加新图标 */
  243.     for (i = 0; i < GUI_COUNTOF(BitmapItemTab1); i++)
  244.     {   
  245.         ICONVIEW_AddBitmapItem(WinPara.hWinICON, BitmapItemTab1[i].pBitmap, BitmapItemTab1[i].pText);
  246.     }
  247.    
  248.     /* 设置小工具的背景色 32 位颜色值的前8 位可用于alpha混合处理效果*/
  249.     ICONVIEW_SetBkColor(WinPara.hWinICON, ICONVIEW_CI_SEL, GUI_WHITE | 0x80000000);
  250.    
  251.     /* 设置字体 */
  252.     ICONVIEW_SetFont(WinPara.hWinICON, &GUI_FontHZ16);
  253.    
  254.     /* 设置图标在x 或y 方向上的间距。*/
  255.     ICONVIEW_SetSpace(WinPara.hWinICON, GUI_COORD_Y, 10);
  256.    
  257.     /* 设置对齐方式 在5.22版本中最新加入的 */
  258.     ICONVIEW_SetIconAlign(WinPara.hWinICON, ICONVIEW_IA_HCENTER|ICONVIEW_IA_TOP);
  259.    
  260.    
  261.     WM_CreateTimer(WM_GetClientWindow(WinPara.hWinMain), /* 接受信息的窗口的句柄 */
  262.                    0,                  /* 用户定义的Id。如果不对同一窗口使用多个定时器,此值可以设置为零。 */
  263.                    20,                           /* 周期,此周期过后指定窗口应收到消息*/
  264.                0);                             /* 留待将来使用,应为0 */
  265.     while(1)
  266.     {
  267.             GUI_Delay(100);
  268.    
  269.     }
  270. }
  271. /* 串口调用打印湿度 */   
  272. void PrintfLogo(void)
  273. {
  274.     int t=0;
  275.     if (t%10==0){
  276.         printf("\\r\\n读取DHT11成功!\\r\\n\\r\\n湿度为%d.%d %RH ,温度为 %d.%d℃ \\r\\n",\\
  277.         DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);
  278.         }
  279. //            else
  280.         printf("Read DHT11 ERROR!\\r\\n");
  281.         while(1);
  282.     }
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 16:30 , Processed in 0.049200 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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