|
进入一子窗口,窗口中“进度条”的显示正常。CAN的收发也正常,想把CAN口接收到的信息显示出来,程序中红色的几句。
刚建窗口时,如果(Rec_ERR_Cnt == 2)成立,是有显示的。否则,就没有。在分步调试时有执行到红色的几句,但窗口显示内容不更新,
无法将警示的内容显示出来。请版主和各位帮帮忙,万分感谢!
#include "DIALOG.h"
#include "stm32f4xx.h"
#include "stdio.h"
#include "GUI.h"
#include "APP.h"
///////////////////////////////////////////////////////////////////////////////////////
// Defines
///////////////////////////////////////////////////////////////////////////////////////
#define ID_BUTTON_18 (GUI_ID_USER + 0x18)
#define ID_BUTTON_19 (GUI_ID_USER + 0x19)
///////////////////////////////////////////////////////////////////////////////////////
// Static data
///////////////////////////////////////////////////////////////////////////////////////
uint8_t Autostain_state= 0;
uint8_t bar_cnt= 0;
extern uint8_t Rec_MainBoard_state; //接收到主板的工况
extern uint8_t Rec_ERR_Cnt; //接收到主板的出错信息
extern uint8_t SSH_PowerOn; //CAN控制开机信号
extern uint8_t SSH_PowerOff; //CAN控制停机信号
extern GUI_FONT GUI_FontHZ_YouYuan_24;
extern GUI_FONT GUI_FontHZ_YouYuan_29;
///////////////////////////////////////////////////////////////////////////////////////
static const GUI_WIDGET_CREATE_INFO _aDialogCreateAutoStain[] =
{
{ WINDOW_CreateIndirect, "AutoStain", 0, 0, 0, 800, 480, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "退出", ID_BUTTON_18, 685, 70, 85, 60, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "自动", ID_BUTTON_19, 335, 120, 130, 60, 0, 0x0, 0 },
};
///////////////////////////////////////////////////////////////////////////////////////
static void _cbDialogAutoStain(WM_MESSAGE * pMsg)
{
WM_HWIN hItem;
int NCode;
int Id;
if (Autostain_state == 1) {GUI_SetColor(0x000000FF);} else {GUI_SetColor(0x00FFFF00);}
GUI_DrawRoundedFrame(298,108,500,190,10,5);
GUI_SetBkColor(0x00888888); //背景颜色
if (Rec_ERR_Cnt == 2)
{
GUI_SetFont(&GUI_FontHZ_YouYuan_29);
GUI_DispStringAt("警示:",30,25);
GUI_DispStringAt("传感器出错",30,75);
}
///////////////////////////////////////////////////////////////////////////////////////
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
hItem = pMsg->hWin; //背景颜色
WINDOW_SetBkColor(hItem, 0x00888888);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_18); //初始化"退出"按键
BUTTON_SetFont(hItem, &GUI_FontHZ_YouYuan_24); //字体
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_19); //初始化"自动"按键
BUTTON_SetFont(hItem, &GUI_FontHZ_YouYuan_24); //字体
break;
//////////////////////////////////
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id)
{
//////////////////////////////////
case ID_BUTTON_18: //"退出"按键
switch(NCode)
{
case WM_NOTIFICATION_RELEASED:
Autostain_state = 0;
SSH_PowerOn = 0; //CAN控制开机信号
SSH_PowerOff = 1; //CAN控制停机信号
WM_DeleteWindow(pMsg->hWin);
}
break;
//////////////////////////////////
case ID_BUTTON_19: //"自动"按键
switch(NCode)
{
case WM_NOTIFICATION_RELEASED:
if (Autostain_state == 0)
{
hItem = pMsg->hWin;
PROGBAR_CreateEx(20,400,760,50,hItem,WM_CF_SHOW,PROGBAR_CF_HORIZONTAL,GUI_ID_PROGBAR0);//进度条
hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_PROGBAR0);
PROGBAR_SetFont(hItem, &GUI_Font32_ASCII);
PROGBAR_SetMinMax(hItem, 0, 255); // 设置进度条的大小范围
PROGBAR_SetValue(hItem, bar_cnt); //进度条的数值
Autostain_state = 1;
SSH_PowerOn = 1; //CAN控制开机信号
SSH_PowerOff = 0; //CAN控制停机信号
}
break;
}
break;
}
break;
/////////////////////////////////
default:
WM_DefaultProc(pMsg);
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
static void _cbBkWindow(WM_MESSAGE * pMsg)
{
WM_HWIN hItem;
switch (pMsg->MsgId)
{
case WM_TIMER:
hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_PROGBAR0); //读取进度条的句柄
PROGBAR_SetValue(hItem, bar_cnt); //进度条的数值
WM_RestartTimer(pMsg->Data.v, 100);
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////
void Auto_Stain_Proc(void)
{
GUI_CreateDialogBox(_aDialogCreateAutoStain, GUI_COUNTOF(_aDialogCreateAutoStain),_cbDialogAutoStain, WM_HBKWIN,0,0);
WM_SetCallback(WM_HBKWIN, _cbBkWindow);
WM_CreateTimer(WM_HBKWIN, 0, 100, 0);
}
/////////////////////////////////////////////////////////////////////////////////////// |
|