|

楼主 |
发表于 2025-9-18 16:21:55
|
显示全部楼层
static void Draw_Picture(WM_MESSAGE * pMsg,u8 old,u8 now)
{
WM_HWIN hItem;
u8 index = 0;
u8 i = 0,j=0;
GUI_RECT t;
if(old > 7)
{
old = 7;
}
if(now > 7)
{
now = 7;
}
if(now == 0 && old == 0)
{
return;
}
if(now >= old)
{
u8 quality = Spo2_Para.signal_quality;
index = now;
for(i=0;i<index;i++)
{
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE1+i);
if(quality > 60)
{
BUTTON_SetBitmap(hItem,0,&bmvalue_green);
}
else if(quality >= 31&&quality<=60)
{
BUTTON_SetBitmap(hItem,0,&bmvalue_yellow);
}
else
{
BUTTON_SetBitmap(hItem,0,&bmvalue_red);
}
}
for(j=i;j<7;j++)
{
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE1+j);
BUTTON_SetBitmap(hItem,0,&bmvalue_black);
}
t.x0=430;
t.y0=95;
t.x1=507;
t.y1=323;
WM_InvalidateArea(&t);
}
else
{
index = 7 - now;
for(i=0;i<index;i++)
{
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE1+7-i);
BUTTON_SetBitmap(hItem,0,&bmvalue_black);
}
}
}
void Clear_Value(WM_MESSAGE * pMsg)
{
WM_HWIN hItem;
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE1);
BUTTON_SetBitmap(hItem,0,&bmvalue_black);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE2);
BUTTON_SetBitmap(hItem,0,&bmvalue_black);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE3);
BUTTON_SetBitmap(hItem,0,&bmvalue_black);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE4);
BUTTON_SetBitmap(hItem,0,&bmvalue_black);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE5);
BUTTON_SetBitmap(hItem,0,&bmvalue_black);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE6);
BUTTON_SetBitmap(hItem,0,&bmvalue_black);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VALUE7);
BUTTON_SetBitmap(hItem,0,&bmvalue_black);
}
void Value_Refrash(WM_MESSAGE * pMsg)
{
//WM_HWIN hItem;
u8 now = 0;
u16 now_picture = 0;
static u8 clear_flag = 0;
static u16 old_picture;
static u8 speak_flag = 0;
static u8 min_record = 0;
if(display_ok == 1)
{
clear_flag = 0;
/***********************************************************************/
// now_picture = Value_now/30;
// Draw_Picture(pMsg,old_picture,now_picture);
/***********************************************************************/
if(Spo2_Para.Pi <= 10)
{
now_picture = Value_now/50;
if(now_picture > 3)
{
now_picture = 3;
}
}
else
{
now_picture = Value_now/30;
}
Draw_Picture(pMsg,old_picture,now_picture);
/***********************************************************************/
now = Value_now/30;
if(now < old_picture)
{
speak_flag++;
min_record = now;
}
else
{
if(now >= 4 && min_record <= 2)
{
min_record = 0;
if(speak_flag >= 1)
{
if(Spo2_Para.spo2_status == Normal || Spo2_Para.spo2_status == Searching_for_pulse)
{
Sys_Status.speak_on = 2;
}
}
speak_flag = 0;
}
}
old_picture = Value_now/30;
if(old_picture >= 8)
{
old_picture = 0;
}
}
else
{
if(clear_flag == 0)
{
Clear_Value(pMsg);
}
clear_flag = 1;
}
}
主要是Value_Refrash函数,放在WM_TIMER里面150ms调用一次 |
|