|
如题,下载到板子上出现几个问题- #include "DIALOG.h"
- #include "DIALOG.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include "CALENDAR.h"
- #include "DIALOG.h"
- #include "MESSAGEBOX.h"
- #include "EMWINGUI.h"
- #define ID_WINDOW_0 (GUI_ID_USER + 0x00)
- #define ID_TEXT_0 (GUI_ID_USER + 0x0B)
- #define ID_TEXT_1 (GUI_ID_USER + 0x0C)
- #define ID_SPINBOX_0 (GUI_ID_USER + 0x0D)
- #define ID_BUTTON_0 (GUI_ID_USER + 0x0E)
- #define ID_GRAPH_0 (GUI_ID_USER + 0x0F)
- #define ID_SPINBOX_1 (GUI_ID_USER + 0x10)
- #define ID_BUTTON_1 (GUI_ID_USER + 0x11)
- #define ID_BUTTON_2 (GUI_ID_USER + 0x12)
- #define ID_BUTTON_3 (GUI_ID_USER + 0x0A)
- static int temperature=20; //温度
- static int humidity =20; //湿度
- static int Atemperature = 5; //温度
- static int Ahumidity = 10; //湿度
- unsigned char w_year = 123;
- unsigned char w_month = 234;
- unsigned char w_date = 345;
- unsigned char chour = 456;
- unsigned char min = 567;
- unsigned char sec = 678; //年月日时分秒
- unsigned char week = 3; //星期
- #define FONT_GEAR24 GUI_FONT_24B_ASCII//字体
- #define FONT_GEAR16 GUI_FONT_13_ASCII
- #define FONT_GEAR12 &GUI_Font10_1
- /*********************************************************************/
- #define BORDER_BOTTOM_A 160 //距离下边框刻度的尺寸160
- #define BORDER_LEFT_A 15 //距离左边框的尺寸15
- static GRAPH_SCALE_Handle hScaleV; //垂直刻度句柄
- static GRAPH_SCALE_Handle hScaleH; //水平刻度句柄
- #define SCALE_FACTOR 10
- unsigned i;
- char bufa[2];
- enum SENSOR_TYPE{ DHT11, DS18B20 }; //DHT11传感器,DS18B20传感器,芯片内部温度检测
- static enum SENSOR_TYPE sensor_type ;//默认为内部温度传感器
- static GUI_COLOR _aColor[] = { GUI_RED, GUI_GREEN, GUI_LIGHTBLUE }; // Array of colors for the GRAPH_DATA objects
- static I16 _aValue[3];
- static GRAPH_DATA_Handle _ahData[3]; // Array of handles for the GRAPH_DATA objects
- static WM_HWIN _Font = 0;
- int t = 0;
- /*********************************************************************/
- // USER START (Optionally insert additional static data)
- // USER END
- /*********************************************************************
- *
- * _aDialogCreate
- */
- static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
- { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 320, 240, 0, 0x0, 0 },
- { TEXT_CreateIndirect, "Text", ID_TEXT_0, 0, 20, 116, 80, 0, 0x64, 0 },
- { TEXT_CreateIndirect, "Text", ID_TEXT_1, 0, 0, 317, 20, 0, 0x0, 0 },
- { SPINBOX_CreateIndirect, "Spinbox", ID_SPINBOX_0, 226, 35, 91, 44, 0, 0x0, 0 },
- { BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 234, 83, 80, 20, 0, 0x0, 0 },
- { GRAPH_CreateIndirect, "Graph", ID_GRAPH_0, 0, 105, 320, 135, 0, 0x0, 0 },
- { SPINBOX_CreateIndirect, "Spinbox", ID_SPINBOX_1, 123, 35, 91, 44, 0, 0x0, 0 },
- { BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 130, 83, 80, 20, 0, 0x0, 0 },
- { BUTTON_CreateIndirect, " DHT11", ID_BUTTON_2, 240, 108, 64, 20, 0, 0x0, 0 },
- { BUTTON_CreateIndirect, "Button", ID_BUTTON_3, 0, 0, 53, 20, 0, 0x0, 0 },
- // USER START (Optionally insert additional widgets)
- // USER END
- };
- /*********************************************************************/
- static void _AddValues(void) {
- switch (sensor_type)
- {
-
- case DHT11:
- _aValue[1] = humidity;
- _aValue[0] = temperature;
- GRAPH_DATA_YT_AddValue(_ahData[0], _aValue[0] *1.5);//数据对象的句柄, /增加到数据对象的值
- GRAPH_DATA_YT_AddValue(_ahData[1], _aValue[1] * 1.5);//数据对象的句柄, /增加到数据对象的值
- break;
- case DS18B20:
- _aValue[1] = Ahumidity;
- _aValue[0] = Atemperature;
- GRAPH_DATA_YT_AddValue(_ahData[0], _aValue[0] * 1.5);//数据对象的句柄, /增加到数据对象的值
- GRAPH_DATA_YT_AddValue(_ahData[1], _aValue[1] * 1.5);//数据对象的句柄, /增加到数据对象的值
- break;
- default:
- break;
- }
- }
- /**********************************************************************/
- static void Caculate_RTC(WM_MESSAGE * pMsg)
- {
- WM_HWIN hWin = pMsg->hWin;
- /*显示年月日 */
- sprintf(bufa, "%2d年%2d月%2d日 %2d:%2d:%2d ", w_year, w_month, w_date,chour, min, sec);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_1), bufa);
- switch (sensor_type){
- case DHT11:
- if ((temperature >= 0) && (temperature <= 10)) //1度到10度黄色防冻
- {
- sprintf(bufa, "%2d°C \n %2d %RH", temperature, humidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_YELLOW);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- if ((temperature >= 11) && (temperature <= 20)) //10度到20度绿注意保暖
- {
- sprintf(bufa, "%2d°C\n %2d %RH", temperature, humidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_CYAN);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- if ((temperature >= 21) && (_aValue[1] <= 25))//21度到25度红温暖
- {
- sprintf(bufa, "%2d°C\n %2d %RH", temperature, humidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_GREEN);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- if ((temperature >= 26) && (temperature <= 35))//21度到25度红炎热
- {
- sprintf(bufa, "%2d°C\n %2d %RH", temperature, humidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_MAGENTA);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- if ((temperature >= 36) && (temperature <= 50))//21度到25度红酷热
- {
- sprintf(bufa, "%2d°C\n %2d %RH", temperature, humidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_RED);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- break;
- case DS18B20:
- if ((Atemperature >= 0) && (Atemperature <= 10)) //1度到10度黄色防冻
- {
- sprintf(bufa, "%2d°C \n %2d %RH", Atemperature, Ahumidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_YELLOW);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- if ((Atemperature >= 11) && (Atemperature <= 20)) //10度到20度绿注意保暖
- {
- sprintf(bufa, "%2d°C\n %2d %RH", Atemperature, Ahumidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_CYAN);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- if ((Atemperature >= 21) && (Atemperature <= 25))//21度到25度红温暖
- {
- sprintf(bufa, "%2d°C\n %2d %RH", Atemperature, Ahumidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_GREEN);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- if ((Atemperature >= 26) && (Atemperature <= 35))//21度到25度红炎热
- {
- sprintf(bufa, "%2d°C\n %2d %RH", Atemperature, Ahumidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_MAGENTA);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- if ((Atemperature >= 36) && (Atemperature <= 50))//21度到25度红酷热
- {
- sprintf(bufa, "%2d°C\n %2d %RH", Atemperature, Ahumidity);
- TEXT_SetTextColor(WM_GetDialogItem(hWin, ID_TEXT_0), GUI_RED);
- TEXT_SetText(WM_GetDialogItem(hWin, ID_TEXT_0), bufa);
- }
- break;
- default:
- break;
- }
- }
- /*********************************************************************/
- static void _cbDialog(WM_MESSAGE * pMsg) {
- WM_HWIN hItem;
- int NCode;
- int Id;
- switch (pMsg->MsgId) {
- case WM_PAINT:
- GUI_SetBkColor(GUI_WHITE);
- GUI_SetColor(GUI_BLACK);
- GUI_SetFont(FONT_GEAR12);
- GUI_SetTextAlign(GUI_TA_HCENTER | GUI_TA_VCENTER);
- GUI_Clear();
- GUI_SetColor(GUI_BLUE);
- GUI_DispStringAt("DS18B20", 170, 24);
- GUI_DispStringAt("DS18B20", 250, 24);
- break;
- case WM_TIMER:
- /* 显示时间和日期 */
- Caculate_RTC(pMsg);
- /* 重启定时器 */
- WM_RestartTimer(pMsg->Data.v, 1000);
- break;
- case WM_INIT_DIALOG:
- hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
- TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
- TEXT_SetFont(hItem, &GUI_Font20F_ASCII);
- hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1);
- TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
- hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0);
- SPINBOX_SetFont(hItem, FONT_GEAR24);
- SPINBOX_SetRange(hItem,10, 40);
- SPINBOX_SetButtonSize(hItem, 27);
- SPINBOX_SetValue(hItem, temperature);
- SPINBOX_SetEdge(hItem, SPINBOX_EDGE_CENTER);
- hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1);
- SPINBOX_SetFont(hItem, FONT_GEAR24);
- SPINBOX_SetRange(hItem, 0, 99);
- SPINBOX_SetValue(hItem, temperature);
- SPINBOX_SetButtonSize(hItem, 27);
- SPINBOX_SetEdge(hItem, SPINBOX_EDGE_CENTER);
-
- hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
- BUTTON_SetText(hItem, "0");
- hItem = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_0);
- GRAPH_SetBorder(hItem, 15, 0, 0, 15);
- /* ****** 测试******************************************/
- /* 创建三个数据对象_ahData[i] */
- for (i = 0; i < GUI_COUNTOF(_aColor); i++) {
- _aValue[i] = rand() % 180;
- /* 创建成功的话,返回数据句柄 */
- /* 显示的曲线颜色,可以显示的最大数据个数,数据指针,要添加的数据个数 */
- _ahData[i] = GRAPH_DATA_YT_Create(_aColor[i], 300, 0, 0);
- //被添加的数据数量
- /* 为绘图控件添加数据对象 */
- GRAPH_AttachData(hItem, _ahData[i]);
- GRAPH_DATA_YT_SetOffY(_ahData[i], 0);//数据的垂直偏移。
- GRAPH_DATA_YT_SetAlign(_ahData[i], GRAPH_ALIGN_LEFT);//数据的对齐方式。
- }
- /* ****** 测试******************************************/
- /* 设置图形控件属性 */
- //GRAPH_SetUserDraw(hItem, _UserDraw);//设置用户回调函数
- GRAPH_SetGridDistX(hItem, 25); //设置水平网格间距
- GRAPH_SetGridDistY(hItem, 15); //设置垂直网格间距
- GRAPH_SetGridVis(hItem, 1); //设置网格可见
- hScaleV = GRAPH_SCALE_Create(BORDER_LEFT_A, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 15); //绘制垂直刻度
- GRAPH_SCALE_SetTextColor(hScaleV, GUI_YELLOW); //设置刻度的文本颜色
- GRAPH_SCALE_SetFactor(hScaleV, 0.6666);//设置用于计算从像素转换到所需单位的计算因子0.333
- GRAPH_AttachScale(hItem, hScaleV); //将刻度对象附加到图形小工具
- /* GRAPH_SetVSizeY(hItem, 150);*/
- hScaleH = GRAPH_SCALE_Create(BORDER_BOTTOM_A, GUI_TA_LEFT, GRAPH_SCALE_CF_HORIZONTAL, 25);
- GRAPH_SCALE_SetFactor(hScaleH, 0.2);//设置用于计算从像素转换到所需单位的计算因子
- GRAPH_SCALE_SetTextColor(hScaleH, GUI_DARKGREEN);
- GRAPH_AttachScale(hItem, hScaleH); //将刻度对象附加到图形小工具
- GRAPH_SCALE_SetPos(hScaleH, 125);//显示位置
-
- hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
- BUTTON_SetText(hItem, "1");
- hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
-
- break;
- case WM_NOTIFY_PARENT:
- Id = WM_GetId(pMsg->hWinSrc);
- NCode = pMsg->Data.v;
- switch (NCode) {
- case WM_NOTIFICATION_RELEASED:
- switch (Id) {
- case ID_BUTTON_0:
- temperature = SPINBOX_GetValue(WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0));
- break;
- case ID_BUTTON_1:
- chour = SPINBOX_GetValue(WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1));
- break;
- case ID_BUTTON_3:
- humidity = SPINBOX_GetValue(WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_1));
- break;
- case ID_BUTTON_2:
- if (_Font) { //未按
- t = 0;
- BUTTON_SetText(WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2), "DHT11");
- GRAPH_DATA_YT_Clear(_ahData[0]);
- GRAPH_DATA_YT_Clear(_ahData[1]);
- sensor_type = DHT11;
- }
- else {//按下
- t = 0;
- BUTTON_SetText(WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2), "DS18B20");
- GRAPH_DATA_YT_Clear(_ahData[0]);
- GRAPH_DATA_YT_Clear(_ahData[1]);
- sensor_type = DS18B20;
-
- }
- _Font ^= 1;
- break;
- }break;
- }
- break;
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
- /*********************************************************************
- *
- * Public code
- *
- **********************************************************************
- */
- /*********************************************************************
- *
- * CreateWindow
- */
- void MainTask(void)
- {
-
- GUI_Init();
- WM_HWIN hWin;
- hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
- WM_CreateTimer(WM_GetClientWindow(hWin), /* 接受信息的窗口的句柄 */
- 0, /* 用户定义的Id。如果不对同一窗口使用多个定时器,此值可以设置为零。 */
- 20, /* 周期,此周期过后指定窗口应收到消息*/
- 0); /* 留待将来使用,应为0 */
- while (1) {
- //if (t % 10 == 0)//每100ms读取一次
- //{
- // DHT11_Read_Data(&temperature, &humidity); //读取温湿度值
- //}
- _AddValues();
- if (t % 300 == 0)
- {
- GRAPH_DATA_YT_Clear(_ahData[0]);
- GRAPH_DATA_YT_Clear(_ahData[1]);
- t = 0;
- }
- t++;
- GUI_Delay(100);
- }
- }
复制代码
1:定时消息里窗口无效化,窗口会闪烁
2:按键无效
|
|