⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runkey.h

📁 该程序是基于PC104的工控板的多参数监护仪的源程序.监护内容包含:心电血氧呼吸无创血压等等.
💻 H
📖 第 1 页 / 共 5 页
字号:
     		     	if(LEADDIS->value==V_SINGLE){//单导联显示
     		     	    fillrect(ECG_ENDY+2,  1, TREDNGRP_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG+I PLETH波形
     		     	    ItemAllow=0x10;
     		     	    WaveCont=0x02;//ECG单行和PLETH在ECG+I上显示
     		     	    PwaveX=WAVXSTART;
     		     	}else{//7导联显示
     		     	    fillrect(WAVE_STARTY,  1, TREDNGRP_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG I~~V波形
     		     	    SETCOLOR(CYAN);
     		     	    gapbeeline(ECG_ENDY+1, 0, ECG_ENDY+1, LEFTMAXX);	//ECG +I
      			    ItemAllow=0x10;
     		     	    WaveCont=0x06;//ECG单行和PLETH在ECG+I上显示
     		     	    EwaveX=PwaveX=WAVXSTART;
     		     	    drawECGScaleRule();
		    	}
		    	SETCOLOR(CYAN);
		    	gapbeeline(ECG_IENDY+1, 0, ECG_IENDY+1, LEFTMAXX);	//PLETH
     		     	gapbeeline(TREDNGRP_ENDY,  0,  TREDNGRP_ENDY,  LEFTMAXX);

		    	ECGWavItstr=PLETHWavItstr=NULL;
		    	PLETHWave_row=ECG_IENDY;//血氧波形的起始行
     		     	
 			commline(GRPPAGE_ENDY-GRPPAGE_HIGH+7, GRPPAGE_ENDX-GRPPAGE_WIDTH-3, GRPPAGE_ENDY-GRPPAGE_HIGH+9, GRPPAGE_ENDX-GRPPAGE_WIDTH-3);
 			commline(GRPPAGE_ENDY-GRPPAGE_HIGH+4, GRPPAGE_ENDX-GRPPAGE_WIDTH-2, GRPPAGE_ENDY-GRPPAGE_HIGH+9, GRPPAGE_ENDX-GRPPAGE_WIDTH-2);
 			commline(GRPPAGE_ENDY-GRPPAGE_HIGH+2, GRPPAGE_ENDX-GRPPAGE_WIDTH-1, GRPPAGE_ENDY-GRPPAGE_HIGH+9, GRPPAGE_ENDX-GRPPAGE_WIDTH-1);
 			commline(GRPPAGE_ENDY-GRPPAGE_HIGH, GRPPAGE_ENDX-GRPPAGE_WIDTH, GRPPAGE_ENDY, GRPPAGE_ENDX-GRPPAGE_WIDTH);//垂直 line
			
 			commline(GRPPAGE_ENDY, GRPPAGE_ENDX-GRPPAGE_WIDTH, GRPPAGE_ENDY, GRPPAGE_ENDX);//水平 line
 			commline(GRPPAGE_ENDY+1, GRPPAGE_ENDX-8,GRPPAGE_ENDY+1, GRPPAGE_ENDX-2);
 			commline(GRPPAGE_ENDY+2, GRPPAGE_ENDX-8,GRPPAGE_ENDY+2, GRPPAGE_ENDX-4);
 			commline(GRPPAGE_ENDY+3, GRPPAGE_ENDX-8,GRPPAGE_ENDY+3, GRPPAGE_ENDX-6);
 			
 			for(i_i=1; i_i<8; i_i++){//显示参数标题
 			   if(i_i!=PARAMETER->value)
 			   	outtext(row[i_i]+300, 448, VAL_PARA[LANGUAGE->value+(i_i<<1)], WHITE, BLACK, FONT12);//HR,PR..NIBP
 			}
 			DisParaItem(0);//显示当前参数标题
 			outtext(460, 456, ITEM_SYST[LANGUAGE->value], LIGHTMAGENTA, BLACK, FONT12);// SYST
 			outtext(460, 496, "/", LIGHTCYAN, BLACK, FONT10);
 			outtext(460, 512, ITEM_DIAS[LANGUAGE->value], LIGHTMAGENTA, BLACK, FONT12);// DIAS
 			outtext(495, 456, ITEM_MEAN[LANGUAGE->value], LIGHTMAGENTA, BLACK, FONT12);//平均压
 			outtext(477, 496, "/", LIGHTCYAN, BLACK, FONT10);

 			outtext(495, 120, ITEM_STEP[LANGUAGE->value], LIGHTRED, BLACK, FONT12);
 			outtext(495, 168, VAL_GTIMESCAL[GTIMESCALE->value], WHITE, BLACK, FONT12);//时间标尺
 			outtext(495, 256, ITEM_PAGE[LANGUAGE->value], LIGHTBLUE, BLACK, FONT12);
 			 			
 			trdtime.ti_hour=timer.ti_hour;//进入趋势图时的时间
  			trdtime.ti_min=timer.ti_min;
  			
			DataEndPoint=(Datapoint+MONDATAL-1)%MONDATAL;//进入趋势图时的当前数据指针
  			if(Datafill){//如果数据填满了
  			    DataStaPoint=Datapoint;
			    GRPTURNPG->up=timescale[GTIMESCALE->up-GTIMESCALE->value];//翻页的上限(共多少页可翻)
			}else{//数据未满
			    DataStaPoint=0;
			    i_i=DataEndPoint/(timescale[GTIMESCALE->value]*GRPPAGE_LEN);//翻页的上限(共多少页可翻)
			    if(DataEndPoint%(timescale[GTIMESCALE->value]*GRPPAGE_LEN))
			    	++i_i;
			    GRPTURNPG->up=i_i;//翻页的上限(共多少页可翻)
			}
			GRPTURNPG->value=GRPTURNPG->up;//进入趋势图时的页号
            if(!GRPTURNPG->value)GRPTURNPG->value=GRPTURNPG->up=1;
			DisValue(GRPTURNPG, VM_COLOR, VM_BCOLOR);
			oldMovCus=-1;
			GrpTrdPage(GOTO_NEXTPAGE);
 		     }
     		     break;
     	case	ID_INTOTNDLST://进入趋势列表
     		     {  char timescale[]={1, 2, 5, 10, 30};
     		     	if(LEADDIS->value==V_SINGLE){//单导联显示
     		     	    fillrect(ECG_ENDY+2,  1, TREDNGRP_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG+I PLETH波形
     		     	    ItemAllow=0x10;
     		     	    WaveCont=0x02;//ECG单行和PLETH在ECG+I上显示
     		     	    PwaveX=WAVXSTART;
     		     	}else{//7导联显示
     		     	    fillrect(WAVE_STARTY,  1, TRENDLST_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG I~~V波形
     		     	    SETCOLOR(CYAN);
     		     	    gapbeeline(ECG_ENDY+1, 0, ECG_ENDY+1, LEFTMAXX);	//ECG +I
      			    ItemAllow=0x10;
     		     	    WaveCont=0x06;//ECG单行和PLETH在ECG+I上显示
     		     	    EwaveX=PwaveX=WAVXSTART;
     		     	    drawECGScaleRule();
		    	}
		    	SETCOLOR(CYAN);
		    	gapbeeline(ECG_IENDY+1, 0, ECG_IENDY+1, LEFTMAXX);	//PLETH
     		     	gapbeeline(TRENDLST_ENDY,  0,  TRENDLST_ENDY,  LEFTMAXX);
		    	ECGWavItstr=PLETHWavItstr=NULL;
		    	PLETHWave_row=ECG_IENDY;//血氧波形的起始行
     		     	
     		     	DisListHd(ECG_IENDY+5);//显示列表头(时间  心率  脉率 ...)
			//DisListHd(III_IENDY+5);//显示列表头(时间  心率  脉率 ...)
     		     	trdtime.ti_hour=timer.ti_hour;//进入趋势列表时的时间
  			trdtime.ti_min=timer.ti_min;
  			
  			DataEndPoint=(Datapoint+MONDATAL-1)%MONDATAL;//进入趋势列表时的当前数据指针
			
			if(Datafill){//如果数据填满了
			    DataStaPoint=Datapoint;
			    LSTTURNPG->up=120/timescale[LTIMESCALE->value];//翻页的上限(共多少页可翻)
			}else{//数据未满
			    DataStaPoint=0;
			    LSTTURNPG->up=DataEndPoint/(timescale[LTIMESCALE->value]*PRTLSTLEN);//翻页的上限(共多少页可翻)
			    if(DataEndPoint%(timescale[LTIMESCALE->value]*PRTLSTLEN)>0)
			    	++LSTTURNPG->up;
			}
			if(!LSTTURNPG->up)
			    LSTTURNPG->up=1;
			LSTTURNPG->value=LSTTURNPG->up;
			DisValue(LSTTURNPG, VM_COLOR, VM_BCOLOR);
     		     	DisLstPage();//显示一页趋势列表(每页12个数据项)
     		     }
     		     break;
     	case	ID_INTONIBPLST://进入血压数据列表
     		     if(LEADDIS->value==V_SINGLE){//单导联显示
     		     	    fillrect(ECG_ENDY+2,  1, TREDNGRP_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG+I PLETH波形
     		     	    ItemAllow=0x10;
     		     	    WaveCont=0x02;//ECG单行和PLETH在ECG+I上显示
     		     	    PwaveX=WAVXSTART;
     		     }else{//7导联显示
     		     	    fillrect(WAVE_STARTY,  1, TRENDLST_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG I~~V波形
     		     	    SETCOLOR(CYAN);
     		     	    gapbeeline(ECG_ENDY+1, 0, ECG_ENDY+1, LEFTMAXX);	//ECG +I
      			    ItemAllow=0x10;
     		     	    WaveCont=0x06;//ECG单行和PLETH在ECG+I上显示
     		     	    EwaveX=PwaveX=WAVXSTART;
     		     	    drawECGScaleRule();
		     }
		     SETCOLOR(CYAN);
		     gapbeeline(ECG_IENDY+1, 0, ECG_IENDY+1, LEFTMAXX);	//PLETH
     		     gapbeeline(TRENDLST_ENDY,  0,  TRENDLST_ENDY,  LEFTMAXX);
		     ECGWavItstr=PLETHWavItstr=NULL;
		     PLETHWave_row=ECG_IENDY;//血氧波形的起始行
     		     	
     		     DisListHd(ECG_IENDY+5);//显示列表头(时间  心率  脉率 ...)
     		     InListCount=RealTimeCount;
     		     trdtime.ti_hour=timer.ti_hour;//进入趋势列表时的时间
  		     trdtime.ti_min=timer.ti_min;
  		     trdtime.ti_sec=timer.ti_sec;
  		     //DataEndPoint=(Datapoint+MONDATAL-1)%MONDATAL;//进入趋势列表时的当前数据指针
		     NIBPLSTPAGE->value=NIBPLSTPAGE->up;
		     DisValue(NIBPLSTPAGE, VM_COLOR, VM_BCOLOR);
     		     DisNIBPList();//显示一页血压数据列表(每页12个数据项)
     		     break;
     }//end switch(CMD_ID)
 }//end if(CMD_ID!=ID_NOCMD)
 
 if(CMD_VID!=VID_NOCMD){
     switch(CMD_VID){
     	case  VID_SECLEAD://SECOND LEAD CMD
     		LeadStr2=VAL_LEAD[SECLEAD->value];
     		break;
      	case	VID_LEADDIS:
		fillrect(WAVE_STARTY, 1, PLETH_ENDY, LEFTMAXX-1, BLACK);
		EwaveX=PwaveX=WAVXSTART;
		if(LEADDIS->value==V_SINGLE){//单导联处理
		    WaveCont=0x07;	//RESP波形不显示
    		    ItemAllow=0x13;
		    SETCOLOR(CYAN);
		    gapbeeline(ECG_ENDY+1,  0,  ECG_ENDY+1, LEFTMAXX-1);
		    gapbeeline(ECG_IENDY+1,  0,  ECG_IENDY+1, LEFTMAXX-1);
		    ECGWavItstr=PLETHWavItstr=RESPWavItstr=NULL;
		    PLETHWave_row=PLETH_ENDY;
		}else{//7导联处理
		    //SETCOLOR(CYAN);
		    ItemAllow=0x08;
		    WaveCont=0x01;	//PLETH,RESP波不允许
		    PLETHWave_row=WAVE_ENDY;
		}
		drawECGScaleRule();
		break;
	case  VID_NIBPUNIT://NIBP UNIT CHANGE
     		    if(NIBPUNIT->value==V_MMHG)
     		    	var=TP_INT3;
     		    else
     		    	var=TP_KPA;
     		    SYST_UP->type=SYST_LOW->type=
     		    MEAN_UP->type=MEAN_LOW->type=
     		    DIAS_UP->type=DIAS_LOW->type=var;
 		    break;
     	case  VID_AUTOMANUAL://NIBP AUTO OR MANUAL CHECK
		    if(disSYST!=255||disMEAN!=255||disDIAS!=255){
			com1str[2]=0x0a;	//清除血压数据
			com1str[3]=0;
			com1str[4]=0;
		    	com1str[5]=com1str[2];
		    	com1count=0;
		    	while(com1count<6)
				sendcom1();
        	    }
 		    SetNIBPTime();
 		    break;
 	case  VID_AUTOTIME://NIBP AUTO CHECK TIME
 		    if(AUTOMANUAL->value==V_AUTO){
 		    	NIBPmin=AUTOTIME->value-1;
 		    	NIBPsec=60;
 		    }
 		    break;
     	case  VID_TEMP1UNIT://TEMP1 UNIT CHANGE
     		    if(TEMP1UNIT->value==V_C_)//摄氏度
     		    	TEMP1_UP->type=TP_FLT4;
     		    else
			TEMP1_UP->type=TP__F;
     		    break;
     	case  VID_TEMP2UNIT:
     		    if(TEMP2UNIT->value==V_C_)//摄氏度
     		    	TEMP2_UP->type=TP_FLT4;
     		    else
			TEMP2_UP->type=TP__F;
     		    break;
     	case  VID_SYSDEF://SYSTEM DEFAULT SET
     		    if(!disdelay){//如果不在显示延迟中
     		    	ItemValue=AT_VITEM;
     			if(LANGUAGE->value!=V_CHINESE){
     			    	LANGUAGE->value=V_CHINESE;
     			    	HRPRFIRST->value=V_HR;
     			    	WAVEFILL->value=V_OFF;
     			    	fillrect(PLETH_ENDY+2, 1, WAVE_ENDY, LEFTMAXX-1, BLACK);
     		    		DisItem();	DisVmenu();
     		    	}else{
     		    		fillrect((CUR_vmenu+CUR_Vcus)->vy, (CUR_vmenu+CUR_Vcus)->vx, (CUR_vmenu+CUR_Vcus)->vy+11, (CUR_vmenu+CUR_Vcus)->vx+47, BLACK);
  		     	   	outtext((CUR_vmenu+CUR_Vcus)->iy, (CUR_vmenu+CUR_Vcus)->ix, (CUR_vmenu+CUR_Vcus)->item[LANGUAGE->value], MENU_CCOLOR, MENU_CBCOLOR, FONT16);//显示选中值菜单的标题
     		    	    	var=HRPRFIRST->value;
     		    	    	if(var!=V_HR){
     		    	    	    HRPRFIRST->value=V_HR;
     		    	    	    DisValue(HRPRFIRST, VM_COLOR, VM_BCOLOR);
     		    	    	}
     		    	    	var=WAVEFILL->value;
     		    	    	if(var!=V_OFF){
     		    	    	    WAVEFILL->value=V_OFF;
     		    	    	    DisValue(WAVEFILL,  VM_COLOR, VM_BCOLOR);
     		    	    	}
     		    	}
     		    	MAINLEAD->value=V_II;    SECLEAD->value=V_III; 	ECGSCALE->value=V_X1;    WORKSTA->value=V_MON;
     		    	WAVESPD->value=V_25MM;   INTENSITY->value=0;	LeadStr2=VAL_LEAD[SECLEAD->value];
     		    	    
     		    	NIBPCRIT->value=V_ADULT_MID;//血压标准 成人高
     		    	CHECKMODE->value=V_DIRECT;
     		    	var=NIBPUNIT->value;
     		    	if(var!=V_MMHG){
     		    	    	NIBPUNIT->value=V_MMHG;
     		    	    	SYST_UP->type=SYST_LOW->type=
     		    		MEAN_UP->type=MEAN_LOW->type=
     		    		DIAS_UP->type=DIAS_LOW->type=TP_INT3;
     		    	}
     		    	var=AUTOMANUAL->value;
     		    	if(var!=V_MANUAL){
     		    	 	AUTOMANUAL->value=V_MANUAL;
     		    	    	SetNIBPTime();
                            NIBPCheckTure=0;
     		    	}
     		    	AUTOTIME->value=30;
			RESPCHK->value=V_ON;
     		    	TEMP1CHK->value=TEMP2CHK->value=V_ON;
     		    	var=TEMP1UNIT->value;
     		    	if(var!=V_C_){
     		    	    	TEMP1UNIT->value=V_C_;
     		    	    	TEMP1_UP->type=TP_FLT4;
     		    	}
     		    	var=TEMP2UNIT->value;
     		    	if(var!=V_C_){
     		    	   	TEMP2UNIT->value=V_C_;
     		    	    	TEMP2_UP->type=TP_FLT4;
     		    	}
     		    	RESPSCALE->value=V_X1;
     		    	LeadColor[V_I]=L_I_COLOR; 	   LeadColor[V_II]=L_II_COLOR;	LeadColor[V_III]=L_III_COLOR;
     		    	LeadColor[V_aVR]=L_aVR_COLOR;  LeadColor[V_aVL]=L_aVL_COLOR;LeadColor[V_aVF]=L_aVF_COLOR;
     		    	LeadColor[V_V]=L_V_COLOR;	   PLETHWCOLOR->value=PLETHWAV_COLOR;
     		    	RESPWCOLOR->value=RESPWAV_COLOR;
     		    	    
     		    	ECGNUMCOLOR->value=ECG_COLOR;	STNUMCOLOR->value=ST_COLOR;		SPO2NUMCOLOR->value=SPO2_COLOR;
     		    	NIBPNUMCOLOR->value=NIBP_COLOR;	RESPNUMCOLOR->value=RESP_COLOR;	TEMPNUMCOLOR->value=TEMP_COLOR;
     		    }
     		    break;
     	case  VID_MONDEMO://MONITOR / DEMO
     		    if(MONDEMO->value==V_DEMO){
     		    	disSYST=120;
     		    	disMEAN=90;
     		    	disDIAS=75;
     		    	if(NIBPStatus&0x01){
     		    	    com1str[2]=0x02;	//取消血压测量
	   		    com1str[3]=0;
     		    	    com1str[4]=0;//alaways manual
			    com1str[5]=com1str[2];
			    com1count=0;
			    while(com1count<6)
				sendcom1();
			}
			InitINT8();//时钟中断加速
     		    }else{
     		    	RecINT8();
     		    	SetBackColor(BACKCOLOR->value);
     		    	nosound();
     		    	HRrate=PRrate=SPO2value=\
     		    	disMEAN=disSYST=disDIAS=RESPvalue=255;
     		    	STvalue=127;	TEMP1value=TEMP2value=455;
			ECGStatus=0x0f;	SPO2Status=1;	NIBPStatus&=0xfe;
            	    SetNIBPTime();
     		    }
     		    break;
     	case  VID_MODDATE://ADJUST DATE
     		    { struct date	newdate;
     		      newdate.da_year=DATE_YEAR->value; newdate.da_mon=DATE_MON->value;
     		      newdate.da_day=DATE_DAY->value;   setdate(&newdate);
     		    };
     		    break;
     	case  VID_MODTIME://ADJUST TIME
     		    {struct time	newtime;
     		     newtime.ti_hour=TIME_HOUR->value;	newtime.ti_min=TIME_MIN->value;
     		     newtime.ti_sec=timer.ti_sec;	newtime.ti_hund=0;
     		     settime(&newtime);
     		    }
     		    break;
     	case  VID_LANGUAGE://language change
     		    fillrect(PLETH_ENDY+2, 1, WAVE_ENDY, LEFTMAXX-1, BLACK);//菜单栏(RESP or PLETH)
     		    DisItem();	DisVmenu();//重新显示所有菜单标题和菜单值
     		    break;
	case  VID_PRTTIME://print time
     		    PRINTmin=PRTTIME->value-1; PRINTsec=60;
     		    break;
	case  VID_ARMTIME://alarm time(sec)
     		    AlarmTime=ALARMTIME->value;
     		    break;
	case  VID_GAPTIME://gap   time
     		    GAPmin=GAPTIME->value;  GAPsec=60;
     		    break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -