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

📄 dischar.h

📁 该程序是基于PC104的工控板的多参数监护仪的源程序.监护内容包含:心电血氧呼吸无创血压等等.
💻 H
📖 第 1 页 / 共 5 页
字号:
				}
			     }
			}else{
			       RESPWavItstr=NULL;
			}//呼吸波形标题
			break;
	case	0x17:	{static char *spo2str=NULL;
			 if(spo2str!=ITEM_SPO2[LANGUAGE->value]){
			     spo2str=ITEM_SPO2[LANGUAGE->value];
			     outtext(390, 592, spo2str, LIGHTRED, BLACK, FONT16);
			 }
			}//SPO2 Item
			break;
	case	0x18:	{static char *respstr=NULL;
			 if(respstr!=ITEM_RESP[LANGUAGE->value]){
			     respstr=ITEM_RESP[LANGUAGE->value];
			     outtext(390, 696, respstr, YELLOW, BLACK, FONT16);
			 }
			}//RESP value Item
			break;
	case	0x19:	{static char *spo2stastr=NULL;
			 if(spo2stastr!=ITEM_LEADSTAS[(SPO2Status<<1)+LANGUAGE->value]){
			     spo2stastr=ITEM_LEADSTAS[(SPO2Status<<1)+LANGUAGE->value];
			     if(SPO2Status==V_ON)    color=LIGHTGREEN;
			     else	color=LIGHTRED;
			     outtext(414, 640, spo2stastr, color, BLACK, FONT12);
			 }
			}//SPO2 status
			break;
	case	0x1a:	{static unsigned char *responoff=NULL;
			 if(responoff!=VAL_ONOFF[(RESPCHK->value<<1)+LANGUAGE->value]){
			     responoff=VAL_ONOFF[(RESPCHK->value<<1)+LANGUAGE->value];
			     if(RESPCHK->value==V_OFF)	color=LIGHTRED;
			     else	color=LIGHTGREEN;
			     outtext(414, 696, responoff, color, BLACK, FONT12);
			     com1str[2]=0x09;
			     com1str[3]=0xff;
			     com1str[4]=!RESPCHK->value;	//命令字0关1开
			     com1str[5]=(unsigned char)((com1str[2]+com1str[3]+com1str[4])&255);//sum, &255==%256
			     com1count=0;
			     while(com1count<6)
				sendcom1();
			 }
			 //RESPWavItstr==NULL;//重新写RESPW
			}
			break;
	case	0x1b:	if(RE_RESPSCALE!=RESPSCALE->value){
			     RE_RESPSCALE=RESPSCALE->value;
			     outtext(414, 736, VAL_SCALE[RESPSCALE->value], LIGHTRED, BLACK, FONT10);
			     com1str[2]=0x09;		//RESP scale
			     com1str[3]=RESPSCALE->value;
			     com1str[4]=0;
			     com1str[5]=(unsigned char)( (com1str[2]+com1str[3])&255);//sum, &255==%256
			     com1count=0;
			     while(com1count<6)
				sendcom1();
			}//RESP scale
			break;
	case	0x1c:	{static char *temp1str=NULL;
			 if(temp1str!=ITEM_TEMP1[LANGUAGE->value]){
			     temp1str=ITEM_TEMP1[LANGUAGE->value];
			     outtext(498, 568, temp1str, LIGHTBLUE, BLACK, FONT16);
			 }
			}//TEMP1 Item
			break;
	case	0x1d:	{static char *temp2str=NULL;
			 if(temp2str!=ITEM_TEMP2[LANGUAGE->value]){
			     temp2str=ITEM_TEMP2[LANGUAGE->value];
			     outtext(542, 568, temp2str, LIGHTBLUE, BLACK, FONT16);
			 }
			}//TEMP2 Item
			break;
	case	0x1e:	{static char temp1unit=0xff, temp2unit=0xff;
			 if(temp1unit!=TEMP1UNIT->value){
			     temp1unit=TEMP1UNIT->value;
			     outtext(518, 608, VAL_TEMPUNIT[temp1unit], YELLOW, BLACK, FONT10);
			 }
			 if(temp2unit!=TEMP2UNIT->value){
			     temp2unit=TEMP2UNIT->value;
			     outtext(562,  608, VAL_TEMPUNIT[temp2unit], YELLOW, BLACK, FONT10);
			 }
			}//TEMP1 and TEMP2 unit
			break;
	case	0x1f:   {static char *temp1onoffstr=NULL, *temp2onoffstr=NULL;
			 if(temp1onoffstr!=VAL_ONOFF[(TEMP1CHK->value<<1)+LANGUAGE->value]){
			     temp1onoffstr=VAL_ONOFF[(TEMP1CHK->value<<1)+LANGUAGE->value];
			     if(TEMP1CHK->value==V_ON)	color=LIGHTGREEN;
			     else	color=LIGHTRED;
			     outtext(518, 568, temp1onoffstr, color, BLACK, FONT12);
			 }
			 if(temp2onoffstr!=VAL_ONOFF[(TEMP2CHK->value<<1)+LANGUAGE->value]){
			     temp2onoffstr=VAL_ONOFF[(TEMP2CHK->value<<1)+LANGUAGE->value];
			     if(TEMP2CHK->value==V_ON)	color=LIGHTGREEN;
			     else	color=LIGHTRED;
			     outtext(562, 568, temp2onoffstr, color, BLACK, FONT12);
			 }
			}
		        break;
	case	0x20:	if(MONDEMO->value==V_DEMO){//模拟显示
			    //static char old_sec=0;
			    outtext(ECG_IENDY-115, 264, VAL_MONDEMO[(MONDEMO->value<<1)+LANGUAGE->value], YELLOW, BLACK, FONT12);
			    //if(old_sec!=timer.ti_sec){
			    	//static unsigned index=0;
			    	//if(ECGSCALE->value==V_X4){
			    		//RGB rgb;
			    		//old_sec=timer.ti_sec;
			    		//index++;
			    		//rgb.R=timer.ti_sec&0x1f;
   					//rgb.G=timer.ti_min&0x0f;
   					//rgb.B=timer.ti_hund&0x1f;
   					//SetRGBColor(0, &rgb);//SET BACK COLOR
			    	//}else{
			    		//if(index) SetBackColor(BACKCOLOR->value);
			    		//index=0;
			    	//}//end ECGSCALE->value!=V_X4
			    //}//end if(oldsec!=ti..)
			}//END if(MONDEMO..)
			break;
	#define LEAD_ITEM_COL	8		//536	//264
	#define LEAD_ROW_MOVE	10
	case	0x21:	if(ItemAllow&0x08){//&&EwaveX==WAVXSTART){
				outtext(I_ENDY-SEVENLEAD_HIGH+LEAD_ROW_MOVE, LEAD_ITEM_COL, "I", LeadColor[V_I], BLACK, FONT10);
				//drawECGScaleRule();
			}
			break;
	case	0x22:if(ItemAllow&0x08){
			outtext(II_ENDY-SEVENLEAD_HIGH+LEAD_ROW_MOVE, LEAD_ITEM_COL, "II", LeadColor[V_II], BLACK, FONT10);
			outtext(III_ENDY-SEVENLEAD_HIGH+LEAD_ROW_MOVE, LEAD_ITEM_COL, VAL_LEAD[V_III], LeadColor[V_III], BLACK, FONT10);
            		}
			break;
	case	0x23: if(ItemAllow&0x08){
			outtext(aVR_ENDY-SEVENLEAD_HIGH+LEAD_ROW_MOVE, LEAD_ITEM_COL, VAL_LEAD[V_aVR], LeadColor[V_aVR], BLACK, FONT10);
			outtext(aVL_ENDY-SEVENLEAD_HIGH+LEAD_ROW_MOVE, LEAD_ITEM_COL, VAL_LEAD[V_aVL], LeadColor[V_aVL], BLACK, FONT10);
			}
			break;
	case	0x24: if(ItemAllow&0x08){
	        	outtext(aVF_ENDY-SEVENLEAD_HIGH+LEAD_ROW_MOVE, LEAD_ITEM_COL, VAL_LEAD[V_aVF], LeadColor[V_aVF], BLACK, FONT10);
			outtext(V_ENDY-SEVENLEAD_HIGH+LEAD_ROW_MOVE, LEAD_ITEM_COL, "V", LeadColor[V_V], BLACK, FONT10);
            		}
			break;
	#undef LEAD_ROW_MOVE
	#undef LEAD_ITEM_COL
   }//end switch(DisNo)
   DisNo=(DisNo+1)&63;
   return;
}

#define ALARM_BKCOLOR	LIGHTBLUE
void DisNum(void)
{
  static unsigned char DisNumCount=0;
  unsigned char tempstr[10], color;
  int i, col;
  switch(DisNumCount){
      case   0x00: //HR PR rate
      		  {static unsigned char oldValstr[3], oldcolor=0xff;
      		    unsigned int HPval=255;
      		    if(HRPRFIRST->value==V_HR){//HR优先
			if(HRrate!=255)
				HPval=HRrate;
			else if(PRrate!=255)
				HPval=PRrate;
			else 	HPval=NIBPrate;
		    }else{//PR优先
			if(PRrate!=255)
				HPval=PRrate;
			else if(HRrate!=255)
				HPval=HRrate;
			else	HPval=NIBPrate;
		    }
		    if(HPval!=255){
		    	sprintf(tempstr,"%-3d", HPval);
		    	if(HPval>HRPR_UP->value||HPval<HRPR_LOW->value){//alarm
		    		alarmstatus|=0x0001;	//set alarmstatus bit0=1;
		    		if(HRPR_ALLOW->value==V_ON)
		    			alarmsound|=0x0001;
		    		else	alarmsound&=0xfffe;
		    		////if(timer.ti_hund<50)
		    		    ////sprintf(tempstr,"   ");
		    		color=ALARM_COLOR;
		    	}else{	//don't alarm
		    		alarmstatus&=0xfffe;	//set alarmstatus bit0=0;
		    		alarmsound&=0xfffe;
		    		color=ECGNUMCOLOR->value;
		    	}
		    }else{//no data
		    	alarmstatus&=0xfffe;
		    	alarmsound&=0xfffe;
		    	sprintf(tempstr,"---");
		    	color=ECGNUMCOLOR->value;
		    }
		    col=640;	//56 point every number
		    for(i=0; i<3; i++, col+=40){
		    	if(tempstr[i]!=oldValstr[i]||color!=oldcolor){
			    out5040(55, col, color, BLACK, tempstr[i]);
			    oldValstr[i]=tempstr[i];
			 }
		    }
		    oldcolor=color;
		  }
		  break;
    case  0x01:	//ST value
		 {static unsigned char oldValstr[5], oldcolor=0xff;
      		    if(STvalue!=127){
		    	sprintf(tempstr,"%-5.2f", (float)STvalue/100.0);
		    	if(STvalue>ST_UP->value||STvalue<ST_LOW->value){//alarm
		    		alarmstatus|=0x0002;	//set alarmstatus bit1=1;
		    		if(ST_ALLOW->value==V_ON)
		    			alarmsound|=0x0002;
		    		else	alarmsound&=0xfffd;
		    		////if(timer.ti_hund<50)
		    		    ////sprintf(tempstr,"     ");
		    		color=ALARM_COLOR;
		    	}else{	//don't alarm
		    		alarmstatus&=0xfffd;	//set alarmstatus bit1=0;
		    		alarmsound&=0xfffd;
		    		color=STNUMCOLOR->value;
		    	}
		    }else{//no data
		    	alarmstatus&=0xfffd;	//set alarmstatus bit1=0;
		    	alarmsound&=0xfffd;
		    	sprintf(tempstr," -.--");
		    	color=STNUMCOLOR->value;
		    }
		    col=616;	//32 point every number
		    for(i=0; i<5; i++, col+=24){
		    	if(tempstr[i]!=oldValstr[i]||color!=oldcolor){
			    out3024(140, col, color, BLACK, tempstr[i]);
			    oldValstr[i]=tempstr[i];
			 }
		    }
		    oldcolor=color;
		 }
		 break;
    case  0x02:	//SPO2 value
    		 {static unsigned char oldValstr[2], oldcolor=0xff;
    		    if(SPO2value!=255){
		    	sprintf(tempstr,"%2d", SPO2value);
		    	if(SPO2value>SPO2_UP->value||SPO2value<SPO2_LOW->value){//alarm
		    		alarmstatus|=0x0004;	//set alarmstatus bit2=1;
		    		if(SPO2_ALLOW->value==V_ON)
		    			alarmsound|=0x0004;
		    		else	alarmsound&=0xfffb;
		    		////if(timer.ti_hund<50)
		    		    ////sprintf(tempstr,"  ");
		    		color=ALARM_COLOR;
		    	}else{	//don't alarm
		    		alarmstatus&=0xfffb;	//set alarmstatus bit2=0;
		    		alarmsound&=0xfffb;
		    		color=SPO2NUMCOLOR->value;
		    	}
		    }else{//no data
		    	alarmstatus&=0xfffb;	//set alarmstatus bit2=0;
		    	alarmsound&=0xfffb;
		    	sprintf(tempstr,"--");
		    	color=SPO2NUMCOLOR->value;
		    }
		    col=592;	//64 point every number
		    for(i=0; i<2; i++, col+=40){
		    	if(tempstr[i]!=oldValstr[i]||color!=oldcolor){
			    out5040(430, col, color, BLACK, tempstr[i]);
			    oldValstr[i]=tempstr[i];
			 }
		    }
		    oldcolor=color;
		 }
		 break;
    case  0x03:	//SYST value
		{static unsigned char oldValstr[4], oldcolor=0xff;
    		    if(disSYST!=255){
    		    	if(NIBPUNIT->value==V_MMHG){
		    	    sprintf(tempstr,"%4d", disSYST);
		    	}else{
		    	    sprintf(tempstr,"%4.1f", (float)disSYST/7.5);
		    	}
		    	if(disSYST>SYST_UP->value||disSYST<SYST_LOW->value){//alarm
				alarmstatus|=0x0008;	//set alarmstatus bit3=1;
				if(NIBP_ALLOW->value==V_ON) alarmsound|=0x0008;
		    		else	alarmsound&=0xfff7;
		    		////if(timer.ti_hund<50)
		    		    ////sprintf(tempstr,"    ");
		    		color=ALARM_COLOR;
		    	}else{	//don't alarm
		    		alarmstatus&=0xfff7;	//set alarmstatus bit3=0;
		    		alarmsound&=0xfff7;
		    		color=NIBPNUMCOLOR->value;
		    	}
		    }else{//no data
		    	alarmstatus&=0xfff7;	//set alarmstatus bit3=0;
		    	alarmsound&=0xfff7;
		        if(NIBPUNIT->value==V_MMHG){
		    		sprintf(tempstr," ---");
		    	}else{
		    		sprintf(tempstr,"--.-");
		    	}
		    	color=NIBPNUMCOLOR->value;
		    }
		    col=568;	//step point every number
		    for(i=0; i<4; i++, col+=24){
		    	if(tempstr[i]!=oldValstr[i]||color!=oldcolor){
			    out3024(235, col, color, BLACK, tempstr[i]);
			    oldValstr[i]=tempstr[i];
			 }
		    }
		    oldcolor=color;
		  }
		  break;
    case  0x04: //DIAS value
		{static unsigned char oldValstr[4], oldcolor=0xff;
    		    if(disDIAS!=255){
    		    	if(NIBPUNIT->value==V_MMHG){
		    	    sprintf(tempstr,"%-4d", disDIAS);
		    	}else{
		    	    sprintf(tempstr,"%-4.1f", (float)disDIAS/7.5);
		    	}
		    	if(disDIAS>DIAS_UP->value||disDIAS<DIAS_LOW->value){//alarm
		    		alarmstatus|=0x0010;	//set alarmstatus bit4=1;
		    		if(NIBP_ALLOW->value==V_ON) alarmsound|=0x0010;
		    		else	alarmsound&=0xffef;
		    		////if(timer.ti_hund<50)
		    		    ////sprintf(tempstr,"    ");
		    		color=ALARM_COLOR;
		    	}else{	//don't alarm
		    		alarmstatus&=0xffef;	//set alarmstatus bit4=0;
		    		alarmsound&=0xffef;
		    		color=NIBPNUMCOLOR->value;
		    	}
		    }else{//no data
		    	alarmstatus&=0xffef;	//set alarmstatus bit4=0;
		    	alarmsound&=0xffef;
		        if(NIBPUNIT->value==V_MMHG){
		    		sprintf(tempstr,"--- ");
		    	}else{
		    		sprintf(tempstr,"--.-");
		    	}
		    	color=NIBPNUMCOLOR->value;
		    }
		    col=696;	//step point every number
		    for(i=0; i<4; i++, col+=24){
		    	if(tempstr[i]!=oldValstr[i]||color!=oldcolor){
			    out3024(235, col, color, BLACK, tempstr[i]);
			    oldValstr[i]=tempstr[i];
			 }
		    }
		    oldcolor=color;
		  }
		  break;
    case  0x05: //MEAN or[REAL] value
		{static unsigned char oldValstr[4], oldcolor=0xff, oldNIBPsave=0;
    		 unsigned value;
    		 if(NIBPStatus&0x01){
    		 	value=CUFFvalue;
    		 	oldNIBPsave=1;
    		 }else{	value=disMEAN;
    		 	if(oldNIBPsave){
    		 	   NIBPsave=0x07;//bit0=1 LIST save, bit1=1 NIBP LIST save, bit2=1 RESP off list save;
                   	//SaveRealData();
    		 	   oldNIBPsave=0;
    		 	}
    		 }
    		 if(value!=255){
    		    	if(NIBPUNIT->value==V_MMHG){
		    	    sprintf(tempstr,"%3d ", value);
		    	}else{
		    	    sprintf(tempstr,"%4.1f", (float)value/7.5);
		    	}
		    	if(NIBPStatus&0x01){//正在测量,袖带实时压力
			    if(NIBPNUMCOLOR->value==YELLOW) color=LIGHTMAGENTA;
			    else	color=YELLOW;
		        }else{//测量完毕,平均压力值
		    	    if(disMEAN>MEAN_UP->value||disMEAN<MEAN_LOW->value){//alarm
		    		alarmstatus|=0x0020;	//set alarmstatus bit5=1;
		    		if(NIBP_ALLOW->value==V_ON) alarmsound|=0x0020;
		    		else	alarmsound&=0xffdf;
		    		////if(timer.ti_hund<50)
		    		    ////sprintf(tempstr,"    ");
		    		color=ALARM_COLOR;
		    	    }else{	//don't alarm
		    		alarmstatus&=0xffdf;	//set alarmstatus bit5=0;

⌨️ 快捷键说明

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