|
|
自己做了一个工程,移植了RTX5,和emwin;创建WM_CreateTimer后,无法触发回调函数中的case WM_TIMER:,麻烦大佬帮我看看哪里的问题
/* Includes ------------------------------------------------------------------*/
#include "DIALOG.h"
#include "main.h"
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_GRAPH_0 (GUI_ID_USER + 0x01)
#define FRAME_DIST_U 10 // 上边框距离
#define FRAME_DIST_D 11 // 下边框距离
#define FRAME_DIST_L 70 // 左边框距离
#define FRAME_DIST_R 7 // 右边框距离
#define GRID_DIST_X 90 // X轴网格线距离
#define GRID_DIST_Y 76 // Y轴网格线距离
#define SCALE_NUM_DECS 2 // 刻度小数部分位数
#define SCALE_TEXT_FONT GUI_FONT_16_ASCII // 刻度文本颜色
#define SCALE_TEXT_COLOR GUI_YELLOW // 刻度文本颜色
#define SCALE_TICK_DIST GRID_DIST_Y// 刻度编号距离
#define SCALE_Factor 1.0f // 刻度比例因子
/*********************************************************************
*
* _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 800, 480, 0, 0x0, 0 },
{ GRAPH_CreateIndirect, "Graph", ID_GRAPH_0, 0, 0, 800, 480, 0, 0x0, 0 },
};
static GRAPH_Handle hGraph; //Graph 控件
static GRAPH_DATA_Handle hData; //数据对象
static GRAPH_SCALE_Handle hScaleY; //刻度对象
static I16 Data1_rand[200] = {0}; //随机数组
static void win_init(WM_MESSAGE *pMsg)
{
uint32_t cnt = 0;
char str[32];
// 设置会话窗口背景颜色
WINDOW_SetBkColor(pMsg->hWin, GUI_BLACK);
// 设置GRAPH控件的基本属性
hGraph = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_0);
GRAPH_SetColor(hGraph, GUI_TRANSPARENT, GRAPH_CI_BK); // 设置背景色
GRAPH_SetColor(hGraph, GUI_BLACK, GRAPH_CI_BORDER); // 设置边框区域颜色
GRAPH_SetColor(hGraph, GUI_WHITE, GRAPH_CI_FRAME); // 设置细框架颜色
GRAPH_SetColor(hGraph, GUI_GRAY, GRAPH_CI_GRID); // 设置网格颜色
GRAPH_SetLineStyleH(hGraph, GUI_LS_DOT); // 设置水平网格线的线型,圆点样式
GRAPH_SetLineStyleV(hGraph, GUI_LS_DOT); // 设置垂直网格线的线型,圆点样式
GRAPH_SetBorder(hGraph, FRAME_DIST_L, FRAME_DIST_U, FRAME_DIST_R, FRAME_DIST_D); // 设置边框距离,左上右下
GRAPH_SetGridVis(hGraph, 1); // 设置网格可见性,显示网格
GRAPH_SetGridDistX(hGraph,GRID_DIST_X ); // 设置X轴网格间距
GRAPH_SetGridDistY(hGraph, GRID_DIST_Y); // 设置Y轴网格间距
// 设置Y轴刻度的基本属性
hScaleY = GRAPH_SCALE_Create(60, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, SCALE_TICK_DIST);
GRAPH_SCALE_SetFont(hScaleY, SCALE_TEXT_FONT); // 设置刻度的文本字体
GRAPH_SCALE_SetNumDecs(hScaleY, SCALE_NUM_DECS); // 设置小数部分位数
GRAPH_SCALE_SetTextColor(hScaleY, SCALE_TEXT_COLOR); // 设置刻度的文本颜色
GRAPH_SCALE_SetTickDist(hScaleY, SCALE_TICK_DIST); // 设置编号距离
GRAPH_SCALE_SetOff(hScaleY, SCALE_TICK_DIST * 3); // 刻度偏移,用于产生负刻度
GRAPH_SCALE_SetFactor(hScaleY, SCALE_Factor); // 设置刻度因子
// 将刻度附加到GRAPH
GRAPH_AttachScale(hGraph, hScaleY);
// 创建数据
hData = GRAPH_DATA_YT_Create(GUI_GREEN, 700, Data1_rand, 1);
GRAPH_AttachData(hGraph, hData); //附加 数据对象
GRAPH_DATA_YT_SetOffY(hData, 228); //将数据上移 50 个像素,与刻度对应
GRAPH_DATA_YT_SetAlign(hData, GRAPH_ALIGN_LEFT); //设置数据对齐方式
}
/*********************************************************************
*
* _cbDialog
*/
long dbg_timer;
static void _cbDialog(WM_MESSAGE *pMsg)
{
WM_HWIN hItem;
char str[128];
uint16_t i;
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
win_init(pMsg);
dbg_timer = WM_CreateTimer(pMsg->hWin, 0, 100, 0);
break;
case WM_PAINT:
break;
case WM_TIMER:
for(uint16_t i = 0; i < 200; i++)
{
GRAPH_DATA_YT_AddValue(hData, rand() % 50 + 25);
}
GUI_Exec();
WM_RestartTimer(pMsg->Data.v, 50);
break;
case WM_DELETE:
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* CreateWindow
*/
WM_HWIN Window_Test(void);
WM_HWIN Window_Test(void)
{
WM_HWIN hWin;
/* 创建一个对话框窗口 */
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
return hWin;
}
|
|