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

📄 runkey.h

📁 该程序是基于PC104的工控板的多参数监护仪的源程序.监护内容包含:心电血氧呼吸无创血压等等.
💻 H
📖 第 1 页 / 共 5 页
字号:
	case  VID_ARMDEF://报警菜单和校正中的缺剩设置
		    {static char noprocess=1;
     		     if(disdelay){//如果在显示延迟中
     			if(noprocess){//如果没有处理
			    var=ARMALLOW->value;//报警打开
			    if(var!=V_ON){
			    	ARMALLOW->value=V_ON;
			    	DisValue(ARMALLOW, VM_COLOR, VM_BCOLOR);
			    }
			    var=GAPALARM->value;//间断报警打开
			    if(var!=V_ON){
			    	GAPALARM->value=V_ON;
			    	DisValue(GAPALARM, VM_COLOR, VM_BCOLOR);
			    }
			    var=ALARMTIME->value;//报警时间10秒
			    if(var!=10){
			    	ALARMTIME->value=10;
			    	DisValue(ALARMTIME, VM_COLOR, VM_BCOLOR);
			    }
			    var=GAPTIME->value;//间断时间1分钟
			    if(var!=1){
			    	GAPTIME->value=1;
			        DisValue(GAPTIME,   VM_COLOR, VM_BCOLOR);
			    }
			    var=ALARMTONE->value;//报警音调(中音)
			    if(var!=1){
			    	ALARMTONE->value=1;
			    	DisValue(ALARMTONE, VM_COLOR, VM_BCOLOR);
			    }
			    
			    AUTOPRT->value=ALARMPRT->value=V_OFF;//定时打印与警报打印关闭
			    PRTTIME->value=30;
			    HRPR_UP->value=160;		HRPR_LOW->value=50;
			    ST_UP->value=20;		ST_LOW->value=-20;
			    SPO2_UP->value=99;		SPO2_LOW->value=90;
			    SYST_UP->value=160;		SYST_LOW->value=90;
			    MEAN_UP->value=140;		MEAN_LOW->value=70;
			    DIAS_UP->value=120;		DIAS_LOW->value=50;
			    RESP_UP->value=60;		RESP_LOW->value=10;
			    TEMP2_UP->value=TEMP1_UP->value=400;
			    HRPR_ALLOW->value=SPO2_ALLOW->value=NIBP_ALLOW->value=V_ON;
			    ST_ALLOW->value=RESP_ALLOW->value=TEMP1_ALLOW->value=TEMP2_ALLOW->value=V_OFF;
			    AlarmRingAllow();
			    noprocess=0;
			}
		     }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);
     		     	ItemValue=AT_VITEM;
     		     	outtext((CUR_vmenu+CUR_Vcus)->iy, (CUR_vmenu+CUR_Vcus)->ix, (CUR_vmenu+CUR_Vcus)->item[LANGUAGE->value], MENU_CCOLOR, MENU_CBCOLOR, FONT16);//显示选中值菜单的标题
     		        noprocess=1;
     		     }
     		    }//end static
		    break;
	case  VID_TURNPAGE://冻结菜单 翻叶处理
		    DisFrzStaEnd(FRZTURNPG->value);//冻结起始截止时间
		    if(LEADDIS->value==V_SINGLE){//单导联冻结显示位置
		    	fillrect(ECG_IENDY-ECG_HIGH, 1, ECG_IENDY, LEFTMAXX-1, BLACK);//擦除ECG+I波形
 		    	fillrect(PLETH_ENDY-PLETH_HIGH, 1, PLETH_ENDY, LEFTMAXX-1, BLACK);//擦除PLETH wave
		    }else{
		    	fillrect(WAVE_STARTY,  1, PLETH_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG I~~V波形
		    	drawECGScaleRule();//画心电增益
		    }
		    DisFreWav(FRZTURNPG->value, FRZLEADSLT->value);
		    break;
	case  VID_PRTPAGE://冻结菜单 打印冻结波形
		    {static char noprocess=1;
     		     if(disdelay){//如果在显示延迟中
     			if(noprocess){//如果没有处理
     			    if(PrtWavCount<PRTWAV_COUNTER){
    				PrtWavCount=255;
    			    }else{
		    	    	PrtWavCount=0;
			    	PWavPrtHd=EWavPrtHd=(8-FRZTURNPG->value)*FRZWAVELEN;//打印数据头指针
				PrtECG_Lead=FRZLEADSLT->value;
			    }
			    noprocess=0;
		    	}
		     }else{//显示延迟到时间
     		     	fillrect((CUR_vmenu+CUR_Vcus)->vy, (CUR_vmenu+CUR_Vcus)->vx, (CUR_vmenu+CUR_Vcus)->vy+11, (CUR_vmenu+CUR_Vcus)->vx+39, BLACK);
     		     	ItemValue=AT_VITEM;
     		     	outtext((CUR_vmenu+CUR_Vcus)->iy, (CUR_vmenu+CUR_Vcus)->ix, (CUR_vmenu+CUR_Vcus)->item[LANGUAGE->value], MENU_CCOLOR, MENU_CBCOLOR, FONT16);//显示选中值菜单的标题
     		        noprocess=1;
     		     }
     		    }//end static
		    break;
	case  VID_SAVEWAV://保存冻结波形
		    {static char noprocess=1;
		     char tempstr[10];
		     if(disdelay){//在显示延迟中
		     	if(noprocess){//如果没有处理
		     	    SaveFile();
		     	    noprocess=0;
		     	}
		     }else{//显示延时时间到
		     	if(SLTFILE->up)
		     	    sprintf(tempstr,"F%02d ", SLTFILE->value);//显示保存的文件号
		     	else
		     	    sprintf(tempstr,"ERR");
		     	fillrect((CUR_vmenu+CUR_Vcus)->vy, (CUR_vmenu+CUR_Vcus)->vx, (CUR_vmenu+CUR_Vcus)->vy+11, (CUR_vmenu+CUR_Vcus)->vx+39, BLACK);
		     	outtext((CUR_vmenu+CUR_Vcus)->vy, (CUR_vmenu+CUR_Vcus)->vx, tempstr, MENU_COLOR, MENU_BCOLOR, FONT10);
		     	ItemValue=AT_VITEM;
     		     	outtext((CUR_vmenu+CUR_Vcus)->iy, (CUR_vmenu+CUR_Vcus)->ix, (CUR_vmenu+CUR_Vcus)->item[LANGUAGE->value], MENU_CCOLOR, MENU_CBCOLOR, FONT16);//显示选中值菜单的标题
     		        noprocess=1;
     		     }
     		    }//end static
     		    break;
     case  VID_FRZLEADSLT://冻结翻导联
     		    if(LEADDIS->value==V_SINGLE){
     		    	LeadStr2=VAL_LEAD[FRZLEADSLT->value];//当前为冻结选择导联
     		    	fillrect(ECG_IENDY-ECG_HIGH, 1, ECG_IENDY, LEFTMAXX-1, BLACK);//擦除ECG+I波形
     		    	DisSingleFrzECG((8-FRZTURNPG->value)*FRZWAVELEN, FRZLEADSLT->value);
     		    }
     		    break;
     case  VID_MENUEXIT://退出冻结菜单或者校正菜单
     		    ExitMenu();
     		    break;
     case  VID_SLTFILE://选择文件
     		    if(SLTFILE->up){//如果有供选择的文件
     		     	SLTPAGE->low=SLTPAGE->value=1;
     		     	SLTPAGE->up=8;
     		     	DisValue(SLTPAGE,  VM_COLOR,  VM_BCOLOR);//更新文件的页码为1
     		     	if(OpenFile(SLTFILE->value)){//如果文件打开正确
     		     	    if(LEADDIS->value==V_SINGLE){
		    	    	fillrect(PLETH_ENDY-PLETH_HIGH, 1, PLETH_ENDY, LEFTMAXX-1,BLACK);//擦除 PLETH 波形
		    	    	fillrect(ECG_IENDY-ECG_HIGH,  1,  ECG_IENDY,  LEFTMAXX-1,BLACK);//擦除ECG+I 波形
		    	    }else{
		    	    	fillrect(WAVE_STARTY, 1, PLETH_ENDY, LEFTMAXX-1, BLACK);
		    	    }
		    	    DisFreWav(SLTPAGE->value, FILLEADSLT->value);
		    	    DisFrzTime();//显示冻结时间日期
     		     	    DisFrzStaEnd(SLTPAGE->value);//冻结起始截止时间
		    	}else{
		    	    SLTPAGE->value=SLTPAGE->low=SLTPAGE->up=0;
		    	    outtext(ECG_ENDY-100, 200, "OPEN FILE ERROR", LIGHTRED, BLACK, FONT10);
		    	}
     		     }else{//没有文件
     		     	static char noprocess=1;
     		     	SLTPAGE->value=SLTPAGE->low=SLTPAGE->up=0;
     		     	if(disdelay){
     		     	   if(noprocess){//如果没有处理
		     	       outtext(SLTFILE->vy, SLTFILE->vx, "NULL", MENU_CCOLOR, MENU_CBCOLOR, FONT12);
		     	       noprocess=0;
		     	   }
		     	}else{
		     	       fillrect(SLTFILE->vy, SLTFILE->vx, SLTFILE->vy+9, SLTFILE->vx+31, BLACK);
		     	       ItemValue=AT_VITEM;
     		     	       outtext((CUR_vmenu+CUR_Vcus)->iy, (CUR_vmenu+CUR_Vcus)->ix, (CUR_vmenu+CUR_Vcus)->item[LANGUAGE->value], MENU_CCOLOR, MENU_CBCOLOR, FONT16);//显示选中值菜单的标题
		     	       noprocess=1;
		     	}//end if(disdelay)
		     }//end no file
		     break;
	case	VID_SLTPAGE://选择文件页码
		     if(SLTPAGE->up){//如果有供选择的文件
     		     	if(LEADDIS->value==V_SINGLE){//单导联处理
		    		fillrect(ECG_IENDY-ECG_HIGH, 1, ECG_IENDY, LEFTMAXX-1, BLACK);//擦除ECG+I波形
 		    		fillrect(PLETH_ENDY-PLETH_HIGH, 1, PLETH_ENDY, LEFTMAXX-1, BLACK);//擦除PLETH wave
    		    		FILLEADSLT->value=SECLEAD->value;
		    	}else{
		    		fillrect(WAVE_STARTY,  1, PLETH_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG I~~V波形
		    		drawECGScaleRule();//画心电增益
		    		FILLEADSLT->value=FILLEADSLT->up=FILLEADSLT->low=SECLEAD->value;
		    	}
		    	DisFreWav(SLTPAGE->value, FILLEADSLT->value);
     		     	DisFrzStaEnd(SLTPAGE->value);//冻结起始截止时间
     		     }else{//没有可选择的冻结页
     		     	static  noprocess=1;
     		     	if(disdelay){
     		     	   if(noprocess){
     		     	   	fillrect(SLTPAGE->vy, SLTPAGE->vx, SLTPAGE->vy+9, SLTPAGE->vx+15, BLACK);
     		     		outtext(SLTPAGE->vy, SLTPAGE->vx, "NULL", MENU_CCOLOR, MENU_CBCOLOR, FONT12);
     		     		noprocess=0;
     		     	   }
     		     	}else{
     		     		fillrect(SLTPAGE->vy, SLTPAGE->vx, SLTPAGE->vy+9, SLTPAGE->vx+31, BLACK);
     		     		ItemValue=AT_VITEM;
     		     		outtext((CUR_vmenu+CUR_Vcus)->iy, (CUR_vmenu+CUR_Vcus)->ix, (CUR_vmenu+CUR_Vcus)->item[LANGUAGE->value], MENU_CCOLOR, MENU_CBCOLOR, FONT16);//显示选中值菜单的标题
		     	        noprocess=1;
		     	}
		     }
		     break;
	case	VID_PRTFILE://打印文件
		    {static char noprocess=1;
     		     if(disdelay){//如果在显示延迟中
     			if(noprocess){//如果没有处理
		    	    if(SLTPAGE->up){//已经有内容进入
		    	        if(PrtWavCount<PRTWAV_COUNTER){
    				    PrtWavCount=255;
    				}else{
	    		    	    PrtWavCount=0;
		    		    PWavPrtHd=EWavPrtHd=(8-SLTPAGE->value)*FRZWAVELEN;//打印数据头指针
				    PrtECG_Lead=FILLEADSLT->value;
				}
		    	    }else{
		    	    	fillrect((CUR_vmenu+CUR_Vcus)->vy, (CUR_vmenu+CUR_Vcus)->vx, (CUR_vmenu+CUR_Vcus)->vy+11, (CUR_vmenu+CUR_Vcus)->vx+39, BLACK);
		    	    	outtext((CUR_vmenu+CUR_Vcus)->vy, (CUR_vmenu+CUR_Vcus)->vx,"NULL",MENU_CCOLOR, MENU_CBCOLOR, FONT12);
		    	    }
		    	    noprocess=0;
		    	}
		     }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);
     		     	ItemValue=AT_VITEM;
     		     	outtext((CUR_vmenu+CUR_Vcus)->iy, (CUR_vmenu+CUR_Vcus)->ix, (CUR_vmenu+CUR_Vcus)->item[LANGUAGE->value], MENU_CCOLOR, MENU_CBCOLOR, FONT16);//显示选中值菜单的标题
     		        noprocess=1;
     		     }
     		    }//end static
		    break;
	case  VID_FILLEADSLT://文件翻导联
     		    if(LEADDIS->value==V_SINGLE){
     		    	if(SLTPAGE->up){//已经有内容进入
     		    		LeadStr2=VAL_LEAD[FILLEADSLT->value];//当前为冻结选择导联
     		    		fillrect(ECG_IENDY-ECG_HIGH, 1, ECG_IENDY, LEFTMAXX-1, BLACK);//擦除ECG+I波形
     		    		DisSingleFrzECG((8-SLTPAGE->value)*FRZWAVELEN, FILLEADSLT->value);
     		    	}
     		    }
     		    break;
	case	VID_EXITFILE://退出文件回放菜单
		    ItemValue=AT_ITEM;	//在标题菜单中
		    CUR_Vcus=0;//回到文件选择的默认菜单
		    LeadStr2=VAL_LEAD[SECLEAD->value];//当前为副导联
		    FILLPRTWAV->iy=SLTPAGE->iy=SLTFILE->iy=520;	FILLPRTWAV->vy=SLTPAGE->vy=SLTFILE->vy=522;
     		    FILLEADSLT->iy=FILLEXIT->iy=540;		FILLEADSLT->vy=FILLEXIT->vy=542;
     		    fillrect(PLETH_ENDY+2, 1, WAVE_ENDY, LEFTMAXX-1, BLACK);//菜单栏(RESP or PLETH)
     		    DisItem();//重新显示趋势主菜单
     		    DisVmenu();//显示文件回放菜单
		    if(LEADDIS->value==V_SINGLE){
    		    	ECGWavItstr=PLETHWavItstr=NULL;
    		    	WaveCont=0x07;	//RESP波形不显示
    		    	ItemAllow=0x13;
		    	EwaveX=PwaveX=WAVXSTART;//ECG PLETH RESP wave x is return start point;
 		    	fillrect(ECG_ENDY-ECG_HIGH,  WAVXSTART, ECG_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG波形
 		    	fillrect(ECG_IENDY-ECG_HIGH, 1, ECG_IENDY, LEFTMAXX-1, BLACK);//擦除ECG+I wave
 		    	fillrect(PLETH_ENDY-PLETH_HIGH, 1, PLETH_ENDY, LEFTMAXX-1, BLACK);//擦除PLETH wave
 		    	PLETHWave_row=PLETH_ENDY;
 		    }else{
 		    	ItemAllow=0x08;
 		    	WaveCont=0x01;	//I~V波形显示
 		    	PLETHWave_row=WAVE_ENDY;//血氧波形的起始行
 		    	EwaveX=WAVXSTART;//ECG wave x is return start point;
 		    	fillrect(WAVE_STARTY,  1, PLETH_ENDY,  LEFTMAXX-1, BLACK);//擦除ECG I~~V波形
		    	drawECGScaleRule();//画心电增益
		    }
		    break;
	case	VID_PARAMETER://参数转换
		{ static unsigned char oldpara=0x00;
		  DisParaItem(oldpara);
		  fillrect(GRPPAGE_ENDY-GRPPAGE_HIGH, GRPPAGE_ENDX-GRPPAGE_WIDTH+1, GRPPAGE_ENDY-1, GRPPAGE_ENDX, BLACK);
		  oldMovCus=-1;
		  GrpTrdPage(GOTO_NEXTPAGE);//显示当前趋势图形
		  oldpara=PARAMETER->value;
		}
		break;
	case	VID_GTIMESTEP://时间标尺
		{ char timescale[]={1, 2, 3, 4, 6, 12};
		  outtext(495, 168, VAL_GTIMESCAL[GTIMESCALE->value], WHITE, BLACK, FONT12);//时间标尺
		  fillrect(GRPPAGE_ENDY-GRPPAGE_HIGH, GRPPAGE_ENDX-GRPPAGE_WIDTH+1, GRPPAGE_ENDY-1, GRPPAGE_ENDX, BLACK);
		  outtext(GRPTURNPG->vy, GRPTURNPG->vx, "01", MENU_COLOR, MENU_BCOLOR, FONT10);
		  if(Datafill){//如果数据填满了
		      GRPTURNPG->up=timescale[GTIMESCALE->up-GTIMESCALE->value];//翻页的上限(共多少页可翻)
		  }else{//数据未满
		      i_i=DataEndPoint/(timescale[GTIMESCALE->value]*GRPPAGE_LEN);//翻页的上限(共多少页可翻)
		      if(DataEndPoint%(timescale[GTIMESCALE->value]*GRPPAGE_LEN))
		    	  ++i_i;
		      GRPTURNPG->up=i_i;//翻页的上限(共多少页可翻)
		  }
		  if(!GRPTURNPG->up)
		      GRPTURNPG->up=1;
		  GRPTURNPG->value=GRPTURNPG->up;
		  oldMovCus=-1;
		  GrpTrdPage(GOTO_NEXTPAGE);//显示当前趋势图形
		}
		break;
	case	VID_GTNDPAGE://趋势图翻页
		    fillrect(GRPPAGE_ENDY-GRPPAGE_HIGH, GRPPAGE_ENDX-GRPPAGE_WIDTH+1, GRPPAGE_ENDY-1, GRPPAGE_ENDX, BLACK);
		    oldMovCus=-1;
		    GrpTrdPage(GOTO_NEXTPAGE);//显示当前趋势图形
		break;
	case	VID_MOVECUS://趋势图移动光标
		{ 
		  unsigned step;
		  char hour, min;
		  char timescale[]={1, 2, 3, 4, 6, 12};
		  disdelay=0;
		  if(MOVECURS->value==1&&oldMovCus==1){//光标翻页
		     if(GRPTURNPG->value+1<=GRPTURNPG->up){//还有下页显示
		      	++GRPTURNPG->value;
		      	sprintf(tempstr, "%02d", GRPTURNPG->value );
			outtext(GRPTURNPG->vy, GRPTURNPG->vx, tempstr, VM_COLOR, VM_BCOLOR, FONT12);
			fillrect(GRPPAGE_ENDY-GRPPAGE_HIGH, GRPPAGE_ENDX-GRPPAGE_WIDTH+1, GRPPAGE_ENDY-1, GRPPAGE_ENDX, BLACK);
			oldMovCus=-1;
			GrpTrdPage(GOTO_NEXTPAGE);//显示当前趋势图形
			
		     }
		  }else if(MOVECURS->value==MOVECURS->up&&oldMovCus==MOVECURS->up){//光标到上页的终点
		     if(GRPTURNPG->value-1>=1){
		      	--GRPTURNPG->value;
		      	sprintf(tempstr, "%02d", GRPTURNPG->value);
			outtext(GRPTURNPG->vy, GRPTURNPG->vx, tempstr, VM_COLOR, VM_BCOLOR, FONT12);
			oldMovCus=-1;
			fillrect(GRPPAGE_ENDY-GRPPAGE_HIGH, GRPPAGE_ENDX-GRPPAGE_WIDTH+1, GRPPAGE_ENDY-1, GRPPAGE_ENDX, BLACK);
			GrpTrdPage(GOTO_BACKPAGE);//来到上页的终点位置
		     }
		  }else{
		     step=(DataEndPoint+MONDATAL-DataCurPoint+(GRPPAGE_LEN-MOVECURS->value)*timescale[GTIMESCALE->value])%MONDATAL;
		     hour=trdtime.ti_hour;
		     min=trdtime.ti_min-(step%60);
		     if(min<0){
		     	 --hour;  min+=60;
		     }
		     hour=(hour+24-step/60)%24;
		     DisGrpData((DataCurPoint+MONDATAL-(GRPPAGE_LEN-MOVECURS->value)*timescale[GTIMESCALE->value])%MONDATAL);//显示当前趋势数据
		     sprintf(tempstr,"%02d:%02d", hour, min);
		     outtext(495, 360, tempstr, WHITE, BLACK, FONT10);//显示时间
		     outtext(MOVECURS->vy, MOVECURS->vx, tempstr, VM_COLOR, VM_BCOLOR, FONT10);//移动光标的时间显示
		     SETCOLOR(BLACK);
		     if(oldMovCus<0){
		     	oldMovCus=MOVECURS->up;
		     	commline(GRPPAGE_ENDY-GRPPAGE_HIGH, GRPPAGE_ENDX, GRPPAGE_ENDY-1, GRPPAGE_ENDX);//起点的光标线
		     	commline(GRPPAGE_ENDY-GRPPAGE_HIGH, GRPPAGE_ENDX-GRPPAGE_WIDTH+3, GRPPAGE_ENDY-1, GRPPAGE_ENDX-GRPPAGE_WIDTH+3);//终点的光标线
		     }

		     commline(GRPPAGE

⌨️ 快捷键说明

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