📄 dischar.h
字号:
#ifndef __DISCHAR_H
#define __DISCHAR_H
#ifndef __VIDEO_H
#include "video.h"
#endif
#ifndef __MENU_H
#include "menu.h"
#endif
#ifndef __INTERUPT_H
#include "interupt.h"
#endif
#ifndef __MENU_H
#include "menu.h"
#endif
#ifndef __STDIO_H
#include <stdio.h>
#endif
#ifndef __STRING_H
#include <string.h>
#endif
#define ITEMUL_COLOR DARKGRAY
#define ECG_ICOLOR GREEN
#define PLETH_ICOLOR 12
#define COMP_ICOLOR 16
#define MV_COLOR 15
#define ON_COLOR 4
#define OFF_COLOR 7
#define WORKSTA_COLOR 9
#define ECGSCL_COLOR LIGHTMAGENTA
#define WAVESPD_COLOR 14
#define VER_COLOR 19
#define ALARM_COLOR LIGHTRED
#define CUFF_COLOR YELLOW
#define MENUCOLOCK 60 //menu colock counter
void SetNIBPTime(void)
{
if(AUTOMANUAL->value==V_MANUAL){
//if(disSYST!=255||disMEAN!=255||disDIAS!=255){
NIBPmin=CLEARTIME->value-1;
NIBPsec=60;
//}else{
// NIBPmin=NIBPsec=0;
//}
}else{
NIBPmin=AUTOTIME->value-1;
NIBPsec=60;
}
return;
}
void DisListHd(int row)
{
//呼吸波形关时 ROW=448;
//开趋势列表时 ROW=304;
char *ITEM_TIME[]={"TIME","时 间"};//ASCII FONT12
char *ITEM_SMD[]={"(S,M,D)","(收,均,舒)"};
char font;
int i;
#define LISTHD_COLOR LIGHTMAGENTA
if(LANGUAGE->value==V_ENGLISH){
font=FONT10;
}else{
font=FONT12;
}
//列表头不用再擦除,因为之前该擦除的地方已经擦除
outtext(row, 16, ITEM_TIME[LANGUAGE->value], LISTHD_COLOR, BLACK, font);
outtext(row, 88, VAL_PARA[0+LANGUAGE->value], LISTHD_COLOR, BLACK, font);//HR
outtext(row, 136, VAL_PARA[2+LANGUAGE->value], LISTHD_COLOR, BLACK, font);//PR
outtext(row, 184, VAL_PARA[4+LANGUAGE->value], LISTHD_COLOR, BLACK, font);//ST
outtext(row, 224, VAL_PARA[6+LANGUAGE->value], LISTHD_COLOR, BLACK, font);//SPO2
outtext(row, 272, VAL_PARA[8+LANGUAGE->value], LISTHD_COLOR, BLACK, font);//TEMP1
outtext(row, 328, VAL_PARA[10+LANGUAGE->value], LISTHD_COLOR, BLACK, font);//TEMP2
outtext(row, 384, VAL_PARA[12+LANGUAGE->value], LISTHD_COLOR, BLACK, font);//RESP
outtext(row, 440, VAL_PARA[14+LANGUAGE->value], LISTHD_COLOR, BLACK, font);//NIBP
outtext(row, 480, ITEM_SMD[LANGUAGE->value], YELLOW, BLACK, font);
#undef LISTHD_COLOR
return;
}
void DisListData(int row, MonData * data)
{
#define LISTDA_COLOR WHITE
char tempstr[10];
if(data->HR!=255)//----HR 心率值
sprintf(tempstr, "%3d", data->HR);
else sprintf(tempstr, "---");
outtext(row, 88, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(data->PR!=255)//----PR 脉率值
sprintf(tempstr, "%3d", data->PR);
else sprintf(tempstr, "---");
outtext(row, 136, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(data->ST!=127)//----ST段值
sprintf(tempstr, "%5.2f", (float)data->ST/100.0);
else sprintf(tempstr, "-.-- ");
outtext(row, 176, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(data->SPO2!=255)//----SPO2值
sprintf(tempstr, "%2d", data->SPO2);
else sprintf(tempstr, "--");
outtext(row, 232, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(data->TEMP1<=450){//----TEMP1体温值
if(TEMP1UNIT->value==V_C_)
sprintf(tempstr, "%5.1f", (float)data->TEMP1/10.0);
else sprintf(tempstr, "%5.1f", (float)data->TEMP1*0.18+32.0);
}else{
sprintf(tempstr, "--.- ");
}
outtext(row, 272, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(data->TEMP2<=450){//----TEMP2体温值
if(TEMP2UNIT->value==V_C_)
sprintf(tempstr, "%5.1f", (float)data->TEMP2/10.0);
else sprintf(tempstr, "%5.1f", (float)data->TEMP2*0.18+32.0);
}else{
sprintf(tempstr, "--.- ");
}
outtext(row, 328, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(data->RESP!=255)//----呼吸值
sprintf(tempstr, "%2d", data->RESP);
else sprintf(tempstr, "--");
outtext(row, 392, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(NIBPUNIT->value==V_MMHG){
if(data->SYST!=255)
sprintf(tempstr, "%3d,", data->SYST);
else
sprintf(tempstr, "---,");
outtext(row, 432, tempstr, LISTDA_COLOR, BLACK, FONT10);//SYST
if(data->MEAN!=255)
sprintf(tempstr, "%3d,", data->MEAN);
else
sprintf(tempstr, "---,");
outtext(row, 472, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(data->DIAS!=255)
sprintf(tempstr, "%3d", data->DIAS);
else
sprintf(tempstr, "---");
outtext(row, 512, tempstr, LISTDA_COLOR, BLACK, FONT10);
}else{//NIBP unit is Kpa
if(data->SYST!=255)
sprintf(tempstr, "%4.1f,", (float)data->SYST/7.5);
else
sprintf(tempstr, "--.-,");
outtext(row, 432, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(data->MEAN!=255)
sprintf(tempstr, "%4.1f,", (float)data->MEAN/7.5);
else
sprintf(tempstr, "--.-,");
outtext(row, 472, tempstr, LISTDA_COLOR, BLACK, FONT10);
if(data->DIAS!=255)
sprintf(tempstr, "%4.1f", (float)data->DIAS/7.5);
else
sprintf(tempstr, "--.-");
outtext(row, 512, tempstr, LISTDA_COLOR, BLACK, FONT10);
}
return;
#undef LISTDA_COLOR
}
/////心电增益标尺-----------12.1寸液晶800*600分辨率---------
void drawECGScaleRule(void)
{
SETCOLOR(GREEN);
if((LEADDIS->value==V_SINGLE)||(LEADDIS->value==V_SEVEN&&WaveCont&0x04)){
commline(YSTART+69,XSTART,YSTART+69,XSTART+8);
commline(YSTART+69,XSTART+4,YSTART+101,XSTART+4);
commline(YSTART+101,XSTART,YSTART+101,XSTART+8);
}else{
#define MOVELINE 15
commline(YSTART+MOVELINE+40, XSTART, YSTART+MOVELINE+40, XSTART+8);
commline(YSTART+MOVELINE+40, XSTART+4, YSTART+MOVELINE+62, XSTART+4);
commline(YSTART+MOVELINE+62, XSTART, YSTART+MOVELINE+62, XSTART+8);
#undef MOVELINE
}
return;
}
void SetBackColor(unsigned rgb_val)
{RGB rgb;
#define RGBINDEX_RED 0
#define RGBINDEX_GREEN 1
#define RGBINDEX_BLUE 2
if(rgb_val<16){
unsigned char ColorIdx[16][3]=
{//R, G, B
{0x00, 0x00, 0x00},//0黑色背景
{0x05, 0x10, 0x18},//1
{0x10, 0x04, 0x20},//2
{0x04, 0x20, 0x07},//3
{0x0b, 0x24, 0x38},//4{0b,24,38}
{0x18, 0x18, 0x00},//5
{0x13, 0x00, 0x17},//6
{0x20, 0x08, 0x15},//7
{0x10, 0x05, 0x1f},//8
{0x1a, 0x01, 0x19},//9
{0x08, 0x0f, 0x10},//10
{0x17, 0x12, 0x0f},//11
{0x04, 0x16, 0x04},//12
{0x17, 0x00, 0x1f},//13
{0x17, 0x1f, 0x10},//14
{0x04, 0x10, 0x0d}//15
};
rgb.R=ColorIdx[rgb_val][RGBINDEX_RED];
rgb.G=ColorIdx[rgb_val][RGBINDEX_GREEN];
rgb.B=ColorIdx[rgb_val][RGBINDEX_BLUE];
SetRGBColor(0, &rgb);//SET BACK COLOR
}
#undef RGBINDEX_RED
#undef RGBINDEX_GREEN
#undef RGBINDEX_BLUE
return;
}
//---颜色的修正只能是0~5
void ReviseColor(void)
{
RGB rgb;
rgb.R=0x10;
rgb.G=0x20;
rgb.B=0x3f;
SetRGBColor(1, &rgb); //LIGHT BLUE
rgb.R=0x00;
rgb.G=0x3f;
rgb.B=0x00;
SetRGBColor(2, &rgb);//LIGHT GREEN
rgb.R=0x03;
rgb.G=0x1f;
rgb.B=0x1f;
SetRGBColor(3, &rgb);//LIGHT CYAN
rgb.R=0x3f;
rgb.G=0x00;
rgb.B=0x00;
SetRGBColor(4, &rgb);//LIGHT RED
rgb.R=0x3f;
rgb.G=0x08;
rgb.B=0x2f;
SetRGBColor(5, &rgb);//LIGHT MAGENTA
return;
}
void AlarmRingAllow(void)
{
#define HRPR_ARMRINGY 30
#define HRPR_ARMRINGX 776
#define ST_ARMRINGY 120
#define ST_ARMRINGX 776
#define NIBP_ARMRINGY 190
#define NIBP_ARMRINGX 776
#define SPO2_ARMRINGY 390
#define SPO2_ARMRINGX 568
#define RESP_ARMRINGY 390
#define RESP_ARMRINGX 776
#define TEMP1_ARMRINGY 496
#define TEMP1_ARMRINGX 648
#define TEMP2_ARMRINGY 541
#define TEMP2_ARMRINGX 648
//HRPR ALARM RING
if(HRPR_ALLOW->value==V_ON&&ARMALLOW->value==V_ON){
outtext(HRPR_ARMRINGY, HRPR_ARMRINGX, GRP_ARMRIGN, YELLOW, BLACK, FONT16);
}else{
outtext(HRPR_ARMRINGY, HRPR_ARMRINGX, GRP_ARMRIGN, BLACK, WHITE, FONT16);
//SETCOLOR(LIGHTRED);
//commline(HRPR_ARMRINGY+0,HRPR_ARMRINGX+4,HRPR_ARMRINGY+15,HRPR_ARMRINGX+11);
//commline(HRPR_ARMRINGY+0,HRPR_ARMRINGX+5,HRPR_ARMRINGY+15,HRPR_ARMRINGX+10);
//commline(HRPR_ARMRINGY+15,HRPR_ARMRINGX+5,HRPR_ARMRINGY+0,HRPR_ARMRINGX+10);
//commline(HRPR_ARMRINGY+15,HRPR_ARMRINGX+4,HRPR_ARMRINGY+0,HRPR_ARMRINGX+11);
}
//ST ALARM RING
if(ST_ALLOW->value==V_ON&&ARMALLOW->value==V_ON){
outtext(ST_ARMRINGY, ST_ARMRINGX, GRP_ARMRIGN, YELLOW, BLACK, FONT16);
}else{
outtext(ST_ARMRINGY, ST_ARMRINGX, GRP_ARMRIGN, BLACK, WHITE, FONT16);
//SETCOLOR(LIGHTRED);
//commline(ST_ARMRINGY+0,ST_ARMRINGX+4,ST_ARMRINGY+15,ST_ARMRINGX+11);
//commline(ST_ARMRINGY+15,ST_ARMRINGX+4,ST_ARMRINGY+0,ST_ARMRINGX+11);
}
//SPO2 ALARM RING
if(SPO2_ALLOW->value==V_ON&&ARMALLOW->value==V_ON){
outtext(SPO2_ARMRINGY, SPO2_ARMRINGX, GRP_ARMRIGN, YELLOW, BLACK, FONT16);
}else{
outtext(SPO2_ARMRINGY, SPO2_ARMRINGX, GRP_ARMRIGN, BLACK, WHITE, FONT16);
//SETCOLOR(LIGHTRED);
//commline(SPO2_ARMRINGY+0,SPO2_ARMRINGX+4,SPO2_ARMRINGY+15,SPO2_ARMRINGX+11);
//commline(SPO2_ARMRINGY+15,SPO2_ARMRINGX+4,SPO2_ARMRINGY+0,SPO2_ARMRINGX+11);
}
//NIBP ALARM RING
if(NIBP_ALLOW->value==V_ON&&ARMALLOW->value==V_ON){
outtext(NIBP_ARMRINGY, NIBP_ARMRINGX, GRP_ARMRIGN, YELLOW, BLACK, FONT16);
}else{
outtext(NIBP_ARMRINGY, NIBP_ARMRINGX, GRP_ARMRIGN, BLACK, WHITE, FONT16);
//SETCOLOR(LIGHTRED);
//commline(NIBP_ARMRINGY+0,NIBP_ARMRINGX+4,NIBP_ARMRINGY+15,NIBP_ARMRINGX+11);
//commline(NIBP_ARMRINGY+15,NIBP_ARMRINGX+4,NIBP_ARMRINGY+0,NIBP_ARMRINGX+11);
}
//RESP ALARM RING
if(RESP_ALLOW->value==V_ON&&ARMALLOW->value==V_ON){
outtext(RESP_ARMRINGY, RESP_ARMRINGX, GRP_ARMRIGN, YELLOW, BLACK, FONT16);
}else{
outtext(RESP_ARMRINGY, RESP_ARMRINGX, GRP_ARMRIGN, BLACK, WHITE, FONT16);
//SETCOLOR(LIGHTRED);
//commline(RESP_ARMRINGY+0,RESP_ARMRINGX+4,RESP_ARMRINGY+15,RESP_ARMRINGX+11);
//commline(RESP_ARMRINGY+15,RESP_ARMRINGX+4,RESP_ARMRINGY+0,RESP_ARMRINGX+11);
}
//TEMP1 ALARM RING
if(TEMP1_ALLOW->value==V_ON&&ARMALLOW->value==V_ON){
outtext(TEMP1_ARMRINGY, TEMP1_ARMRINGX, GRP_ARMRIGN, YELLOW, BLACK, FONT16);
}else{
outtext(TEMP1_ARMRINGY, TEMP1_ARMRINGX, GRP_ARMRIGN, BLACK, WHITE, FONT16);
//SETCOLOR(LIGHTRED);
//commline(TEMP1_ARMRINGY+0,TEMP1_ARMRINGX+4,TEMP1_ARMRINGY+15,TEMP1_ARMRINGX+11);
//commline(TEMP1_ARMRINGY+15,TEMP1_ARMRINGX+4,TEMP1_ARMRINGY+0,TEMP1_ARMRINGX+11);
}
//TEMP2 ALARM RING
if(TEMP2_ALLOW->value==V_ON&&ARMALLOW->value==V_ON){
outtext(TEMP2_ARMRINGY, TEMP2_ARMRINGX, GRP_ARMRIGN, YELLOW, BLACK, FONT16);
}else{
outtext(TEMP2_ARMRINGY, TEMP2_ARMRINGX, GRP_ARMRIGN, BLACK, WHITE, FONT16);
//SETCOLOR(LIGHTRED);
//commline(TEMP2_ARMRINGY+0,TEMP2_ARMRINGX+4,TEMP2_ARMRINGY+15,TEMP2_ARMRINGX+11);
//commline(TEMP2_ARMRINGY+15,TEMP2_ARMRINGX+4,TEMP2_ARMRINGY+0,TEMP2_ARMRINGX+11);
}
#undef HRPR_ARMRINGY
#undef HRPR_ARMRINGX
#undef ST_ARMRINGY
#undef ST_ARMRINGX
#undef NIBP_ARMRINGY
#undef NIBP_ARMRINGX
#undef SPO2_ARMRINGY
#undef SPO2_ARMRINGX
#undef RESP_ARMRINGY
#undef RESP_ARMRINGX
#undef TEMP1_ARMRINGY
#undef TEMP1_ARMRINGX
#undef TEMP2_ARMRINGY
#undef TEMP2_ARMRINGX
return;
}
void ExitMenu(void)
{
CUR_item=NULL; CUR_vmenu=NULL;
CUR_Icus=0; CUR_Vcus=0;
MenuTime=MENUCOLOCK; //退出菜单记时器
ItemValue=AT_ITEM; //在标题菜单的标题中
SETCOLOR(CYAN);
if(LEADDIS->value==V_SINGLE){//在单导联显示
ItemAllow=0x17;
WaveCont=0x0f; //所有波形显示(开呼吸开关控制RESP波形显示或者实时列表显示)
fillrect(WAVE_STARTY, 1, WAVE_ENDY, LEFTMAXX-1, BLACK);//擦除所有波形
gapbeeline(ECG_ENDY+1, 0, ECG_ENDY+1, LEFTMAXX); //ECG +I
gapbeeline(ECG_IENDY+1, 0, ECG_IENDY+1, LEFTMAXX); //PLETH
gapbeeline(PLETH_ENDY+1, 0, PLETH_ENDY+1, LEFTMAXX); //RESP
if(RESPCHK->value==V_OFF){
DisListHd(PLETH_ENDY+4);
ItemAllow=0x13; //"RESP"不允许刷新
}
ECGWavItstr=PLETHWavItstr=RESPWavItstr=NULL;
EwaveX=PwaveX=RwaveX=WAVXSTART;//ECG PLETH RESP wave x is return start point;
PLETHWave_row=PLETH_ENDY;
}else{//七导联显示
ItemAllow=0x0c;//I,II..V PLETH标题显示
WaveCont=0x0b;//I,II..V PLETH,RESP波形显示
fillrect(WAVE_STARTY, 1, WAVE_ENDY, LEFTMAXX-1, BLACK);
gapbeeline(PLETH_ENDY+1, 0, PLETH_ENDY+1, LEFTMAXX); //PLETH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -