初级会员
- 积分
- 75
- 金钱
- 75
- 注册时间
- 2018-7-19
- 在线时间
- 19 小时
|
楼主 |
发表于 2018-9-28 09:44:31
|
显示全部楼层
*********************************************************************************************************
* 函 数 名: _cbDialogInfo
* 功能说明: 主窗口的回调函数
* 形 参:pMsg 参数指针
* 返 回 值: 无
*********************************************************************************************************
*/
static void _cbDialog(WM_MESSAGE * pMsg)
{
WM_HWIN hItem;
char buf[10];
static char Index = 0;
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
/* 创建曲线 */
hItem = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_0);
GRAPH_SetBorder(hItem, 0, 0, 0, 0);
ahData[0] = GRAPH_DATA_YT_Create(_aColor[0], 700, 0, 0);
ahData[1] = GRAPH_DATA_YT_Create(_aColor[1], 700, 0, 0);
ahData[2] = GRAPH_DATA_YT_Create(_aColor[2], 700, 0, 0);
/* 为绘图控件添加数据对象 */
GRAPH_AttachData(hItem, ahData[0]);
GRAPH_AttachData(hItem, ahData[1]);
GRAPH_AttachData(hItem, ahData[2]);
WIDGET_SetEffect(hItem, &WIDGET_Effect_None);
/* 创建文本 */
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
TEXT_SetTextColor(hItem, 0x000000FF);
TEXT_SetFont(hItem, &GUI_FontHZ16);
TEXT_SetText(hItem, "心率");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1);
TEXT_SetTextColor(hItem, 0x0000FF00);
TEXT_SetFont(hItem, &GUI_FontHZ16);
TEXT_SetText(hItem, "呼吸率");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2);
TEXT_SetTextColor(hItem, 0x0000FFFF);
TEXT_SetFont(hItem, &GUI_FontHZ16);
TEXT_SetText(hItem, "脉搏率");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3);
TEXT_SetFont(hItem, GUI_FONT_D48);
TEXT_SetTextColor(hItem, 0x000000FF);
TEXT_SetText(hItem, "50");
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_4);
TEXT_SetFont(hItem, GUI_FONT_D48);
TEXT_SetText(hItem, "60");
TEXT_SetTextColor(hItem, 0x0000FF00);
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_5);
TEXT_SetTextColor(hItem, 0x0000FFFF);
TEXT_SetFont(hItem, GUI_FONT_D48);
TEXT_SetText(hItem, "70");
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_6);
TEXT_SetFont(hItem, GUI_FONT_13B_ASCII);
TEXT_SetTextColor(hItem, 0x000000FF);
TEXT_SetText(hItem, "bmp");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_7);
TEXT_SetFont(hItem, GUI_FONT_13B_ASCII);
TEXT_SetTextColor(hItem, 0x0000FF00);
TEXT_SetText(hItem, "BrPM");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_8);
TEXT_SetFont(hItem, GUI_FONT_13B_ASCII);
TEXT_SetText(hItem, "bmp");
TEXT_SetTextColor(hItem, 0x0000FFFF);
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_9);
TEXT_SetFont(hItem, GUI_FONT_16B_ASCII);
TEXT_SetTextColor(hItem, 0x00FFFFFF);
TEXT_SetText(hItem, "2014-06-17");
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_10);
TEXT_SetFont(hItem, GUI_FONT_16B_ASCII);
TEXT_SetTextColor(hItem, 0x00FFFFFF);
TEXT_SetText(hItem, "00:00:00");
break;
case WM_PAINT:
/* 显示标题并重绘背景色 */
GUI_SetBkColor(0x00408000);
GUI_ClearRect(0,0,800, 24);
GUI_SetFont(&GUI_FontHZ16);
GUI_DispStringAt("床号 1 姓名: 张三", 5, 3);
GUI_SetBkColor(GUI_BLACK);
GUI_ClearRect(0,25,LCD_GetXSize()-1, LCD_GetYSize()-1);
/* 用于绘制三个白色的圆角方框 */
GUI_SetColor(GUI_WHITE);
GUI_AA_DrawRoundedRect(680, 25, 799, 108, 6);
GUI_AA_DrawRoundedRect(680, 110, 799, 193, 6);
GUI_AA_DrawRoundedRect(680, 195, 799, 276, 6);
break;
case WM_TIMER:
if(WM_GetTimerId(pMsg->Data.v) == ID_TimerGraph)
{
GRAPH_DATA_YT_AddValue(ahData[0], (_HeartBeat[Index]/5)+20);
GRAPH_DATA_YT_AddValue(ahData[1], (_HeartBeat1[Index]/2)+100);
GRAPH_DATA_YT_AddValue(ahData[2],(_HeartBeat2[Index]/2)+190);
if (++Index == GUI_COUNTOF(_HeartBeat))
{
Index = 0;
}
/* 重启定时器 */
WM_RestartTimer(pMsg->Data.v, 100);
}
else if(WM_GetTimerId(pMsg->Data.v) == ID_TimerTime)
{
/* 显示文本ID_TEXT_5的动态数据 */
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_5);
sprintf(buf, "%d", rand()%100);
TEXT_SetText(hItem, buf);
/* 显示文本ID_TEXT_4的动态数据 */
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_4);
sprintf(buf, "%d", rand()%100);
TEXT_SetText(hItem, buf);
/* 显示文本ID_TEXT_3的动态数据 */
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3);
sprintf(buf, "%d", rand()%100);
TEXT_SetText(hItem, buf);
/* 显示时间和日期 */
// Caculate_RTC(pMsg);
/* 重启定时器 */
WM_RestartTimer(pMsg->Data.v, 1000);
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*
*********************************************************************************************************
* 函 数 名: MainTask
* 功能说明: GUI主函数
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void MainTaskh(void)
{
/* 初始化 */
GUI_Init();
/*
关于多缓冲和窗口内存设备的设置说明
1. 使能多缓冲是调用的如下函数,用户要在LCDConf_Lin_Template.c文件中配置了多缓冲,调用此函数才有效:
WM_MULTIBUF_Enable(1);
2. 窗口使能使用内存设备是调用函数:WM_SetCreateFlags(WM_CF_MEMDEV);
3. 如果emWin的配置多缓冲和窗口内存设备都支持,二选一即可,且务必优先选择使用多缓冲,实际使用
STM32F429BIT6 + 32位SDRAM + RGB565/RGB888平台测试,多缓冲可以有效的降低窗口移动或者滑动时的撕裂
感,并有效的提高流畅性,通过使能窗口使用内存设备是做不到的。
4. 所有emWin例子默认是开启三缓冲。
*/
WM_MULTIBUF_Enable(1);
#if GUI_SUPPORT_MEMDEV
WM_SetCreateFlags(WM_CF_MEMDEV);
#endif
/*
触摸校准函数默认是注释掉的,电阻屏需要校准,电容屏无需校准。如果用户需要校准电阻屏的话,执行
此函数即可,会将触摸校准参数保存到EEPROM里面,以后系统上电会自动从EEPROM里面加载。
*/
//TOUCH_Calibration();
hWinMain = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
/* 使能UTF-8解码用于汉字显示 */
// GUI_UC_SetEncodeUTF8();
/* 创建两个定时器 */
WM_CreateTimer(WM_GetClientWindow(hWinMain), /* 接受信息的窗口的句柄 */
ID_TimerGraph, /* 用户定义的Id。如果不对同一窗口使用多个定时器,此值可以设置为零。 */
10, /* 周期,此周期过后指定窗口应收到消息*/
0); /* 留待将来使用,应为0 */
WM_CreateTimer(WM_GetClientWindow(hWinMain), /* 接受信息的窗口的句柄 */
ID_TimerTime, /* 用户定义的Id。如果不对同一窗口使用多个定时器,此值可以设置为零。 */
10, /* 周期,此周期过后指定窗口应收到消息*/
0); /* 留待将来使用,应为0 */
while (1)
{
GUI_Delay(1);
}
} |
|