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

📄 dischar.h

📁 该程序是基于PC104的工控板的多参数监护仪的源程序.监护内容包含:心电血氧呼吸无创血压等等.
💻 H
📖 第 1 页 / 共 5 页
字号:
		    		alarmsound&=0xffdf;
		    		color=NIBPNUMCOLOR->value;
		    	    }
		    	}//END 测量完毕,平均压力值
		    }else{//no data
		    	alarmstatus&=0xffdf;	//set alarmstatus bit5=0;
		    	alarmsound&=0xffdf;
		        if(NIBPUNIT->value==V_MMHG){
		    		sprintf(tempstr," ---");
		    	}else{
		    		sprintf(tempstr,"--.-");
		    	}
		    	color=NIBPNUMCOLOR->value;
		    }
		    col=632;	//step point every number
		    for(i=0; i<4; i++, col+=24){
		    	if(tempstr[i]!=oldValstr[i]||color!=oldcolor){
			    out3024(295, col, color, BLACK, tempstr[i]);
			    oldValstr[i]=tempstr[i];
			 }
		    }
		    oldcolor=color;
		  }
		  break;
    case  0x06: //RESP value
    		 {static unsigned char oldValstr[2], oldcolor=0xff;
    		    if(RESPvalue!=255){
		    	sprintf(tempstr,"%2d", RESPvalue);
		    	if(RESPvalue>RESP_UP->value||RESPvalue<RESP_LOW->value){//alarm
		    		alarmstatus|=0x0040;	//set alarmstatus bit6=1;
		    		if(RESP_ALLOW->value==V_ON) alarmsound|=0x0040;
		    		else	alarmsound&=0xffbf;
		    		////if(timer.ti_hund<50)
		    		    ////sprintf(tempstr,"  ");
		    		color=ALARM_COLOR;
		    	}else{	//don't alarm
		    		alarmstatus&=0xffbf;	//set alarmstatus bit6=0;
		    		alarmsound&=0xffbf;
		    		color=RESPNUMCOLOR->value;
		    	}
		    }else{//no data
		    	alarmstatus&=0xffbf;	//set alarmstatus bit6=0;
		    	alarmsound&=0xffbf;
		    	sprintf(tempstr,"--");
		    	color=RESPNUMCOLOR->value;
		    }
		    col=696;	//24 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  0x07: //TEMP1 value
    		{static unsigned char oldValstr[5], oldcolor=0xff;
    		 float value;
    		 if(TEMP1value!=455){
    		    	if(TEMP1UNIT->value==V_C_){
    		    	    value=TEMP1value/10.0;
		    	}else{
		    	    value=TEMP1value*0.18+32.0;
		    	}
		    	sprintf(tempstr, "%5.1f", value);
			if(TEMP1value>TEMP1_UP->value){//||TEMP1value<TEMP1_UP->low){//alarm
		    		alarmstatus|=0x0080;	//set alarmstatus bit7=1;
		    		if(TEMP1_ALLOW->value==V_ON)
		    			alarmsound|=0x0080;
		    		else	alarmsound&=0xff7f;
		    		////if(timer.ti_hund<50)
		    		    ////sprintf(tempstr,"     ");
		    		color=ALARM_COLOR;
		    	}else{	//don't alarm
		    		alarmstatus&=0xff7f;	//set alarmstatus bit7=0;
		    		alarmsound&=0xff7f;
		    		color=TEMPNUMCOLOR->value;
		    	}
		    }else{//no data
		    	alarmstatus&=0xff7f;	//set alarmstatus bit7=0;
		    	alarmsound&=0xff7f;
		    	sprintf(tempstr," --.-");
		    	color=TEMPNUMCOLOR->value;
		    }
		    col=672;	//24 point every number
		    for(i=0; i<5; i++, col+=24){
			if(tempstr[i]!=oldValstr[i]||color!=oldcolor){
			    out3024(500, col, color, BLACK, tempstr[i]);
			    oldValstr[i]=tempstr[i];
			 }
		    }
		    oldcolor=color;
		  }
		  break;
    case  0x08: //TEMP2 value
    		{static unsigned char oldValstr[5], oldcolor=0xff;
    		 float value;
    		 if(TEMP2value!=455){
    		    	if(TEMP2UNIT->value==V_C_){
    		    	    value=TEMP2value/10.0;
		    	}else{
		    	    value=TEMP2value*0.18+32.0;
		    	}
		    	sprintf(tempstr, "%5.1f", value);
			if(TEMP2value>TEMP2_UP->value){//||TEMP2value<TEMP2_UP->low){//alarm
		    		alarmstatus|=0x0100;	//set alarmstatus bit7=1;
		    		if(TEMP2_ALLOW->value==V_ON)
		    			alarmsound|=0x0100;
		    		else	alarmsound&=0xfeff;
		    		////if(timer.ti_hund<50)
		    		    ////sprintf(tempstr,"     ");
		    		color=ALARM_COLOR;
		    	}else{	//don't alarm
		    		alarmstatus&=0xfeff;	//set alarmstatus bit7=0;
		    		alarmsound&=0xfeff;
		    		color=TEMPNUMCOLOR->value;
		    	}
		    }else{//no data
		    	alarmstatus&=0xfeff;	//set alarmstatus bit7=0;
		    	alarmsound&=0xfeff;
		    	sprintf(tempstr," --.-");
		    	color=TEMPNUMCOLOR->value;
		    }
		    col=672;	//24 point every number
		    for(i=0; i<5; i++, col+=24){
			if(tempstr[i]!=oldValstr[i]||color!=oldcolor){
			    out3024(545, col, color, BLACK, tempstr[i]);
			    oldValstr[i]=tempstr[i];
			 }
		    }
		    oldcolor=color;
		  }
		  break;
    default:	  DisNumCount=255;
    		  break;
  }//end switch;
  DisNumCount++;
  return;
}

//波形数据取样函数
int  sampling(int data1,int data2,int data3)
{
   if((data1-data2)*(data2-data3)>=0)
	  return data3;
   else
	  return data2;
}


void ECGwav2(int *Epointy)//只处理单导联
{
 static int main_row1=64, sec_row1=64;
 int col=EwaveX+8, temp1, temp2;
 SETCOLOR(BLACK);
 if(col>=LEFTMAXX){
	commline(ECG_ENDY-ECG_HIGH,  col-LEFTMAXX+WAVXSTART, ECG_ENDY,  col-LEFTMAXX+WAVXSTART);
	if(WaveCont&0x01)
	    commline(ECG_IENDY-ECG_HIGH,  col-LEFTMAXX+WAVXSTART, ECG_IENDY,  col-LEFTMAXX+WAVXSTART);
 }else{
	commline(ECG_ENDY-ECG_HIGH,  col, ECG_ENDY, col);
	if(WaveCont&0x01)
	    commline(ECG_IENDY-ECG_HIGH,  col, ECG_IENDY,  col);
 }
 if(ECGSCALE->value!=V_X4){
	*(Epointy+MAINLEAD->value)>>=1;
	*(Epointy+SECLEAD->value)>>=1;
 }else{
	*(Epointy+MAINLEAD->value)-=64;
	*(Epointy+SECLEAD->value)-=64;
 }
 if(*(Epointy+MAINLEAD->value)<=0)	*(Epointy+MAINLEAD->value)=1;
 if(*(Epointy+MAINLEAD->value)>=128)	*(Epointy+MAINLEAD->value)=127;
 if(*(Epointy+SECLEAD->value)<=0)	*(Epointy+SECLEAD->value)=1;
 if(*(Epointy+SECLEAD->value)>=128)	*(Epointy+SECLEAD->value)=127;
 
 if(EwaveX==WAVXSTART){
     main_row1=*(Epointy+MAINLEAD->value);
     sec_row1=*(Epointy+SECLEAD->value);
 }
 temp1=EwaveX%LEFTMAXX;	temp2=(EwaveX+1)%LEFTMAXX;
 if(temp1<temp2){
     SETCOLOR(LeadColor[MAINLEAD->value]);
     commline(ECG_ENDY-main_row1, temp1, ECG_ENDY-*(Epointy+MAINLEAD->value), temp2);
     //vertline(temp1, ECG_ENDY-main_row1,ECG_ENDY-*(Epointy+MAINLEAD->value),LeadColor[MAINLEAD->value]);
     if(WaveCont&0x01){
     	SETCOLOR(LeadColor[SECLEAD->value]);
	commline(ECG_IENDY-sec_row1, temp1, ECG_IENDY-*(Epointy+SECLEAD->value), temp2);
	//vertline(temp1, ECG_IENDY-sec_row1,ECG_IENDY-*(Epointy+SECLEAD->value),LeadColor[SECLEAD->value]);
     }
 }
 EwaveX++;
 if(EwaveX==LEFTMAXX)
 	EwaveX=WAVXSTART;
 main_row1=*(Epointy+MAINLEAD->value);
 sec_row1=*(Epointy+SECLEAD->value);
 return;
}

void ECGwav7(int *Epointy)
{
 static int row1[7]={64,64,64,64,64,64,64};
 static const baserow[7]={I_ENDY, II_ENDY, III_ENDY, aVR_ENDY, aVL_ENDY, aVF_ENDY, V_ENDY};
 int col=EwaveX+8, temp1, temp2, i_i;
 
 if(WaveCont&0x01){
 	SETCOLOR(BLACK);
 	if(col>=LEFTMAXX){
		commline(WAVE_STARTY,  col-LEFTMAXX+WAVXSTART, PLETH_ENDY,  col-LEFTMAXX+WAVXSTART);
 	}else{
		commline(WAVE_STARTY,  col, PLETH_ENDY, col);
 	}
 	for(i_i=0; i_i<7; i_i++){
    	    if(ECGSCALE->value!=V_X4)
		Epointy[i_i]=(Epointy[i_i]>>1)*ECGW_SYNC_RATE/ECGW_RATE_BASE;
	    else
	    	Epointy[i_i]=(Epointy[i_i]-64)*ECGW_SYNC_RATE/ECGW_RATE_BASE;
	    if(Epointy[i_i]<=0)			Epointy[i_i]=1;
	    if(Epointy[i_i]>SEVENLEAD_HIGH)	Epointy[i_i]=SEVENLEAD_HIGH;
	}
 	if(EwaveX==WAVXSTART){
    		for(i_i=0; i_i<7; i_i++){
			row1[i_i]=Epointy[i_i];
	    	}
 	}
 	temp1=EwaveX%LEFTMAXX;	temp2=(EwaveX+1)%LEFTMAXX;
 	if(temp1<temp2){
     		for(i_i=0; i_i<7; i_i++){
     			SETCOLOR(LeadColor[i_i]);
     			commline(baserow[i_i]-*(row1+i_i), temp1, baserow[i_i]-*(Epointy+i_i), temp2);
     		}
 	}
 }
 
 if(WaveCont&0x04){//进入趋势列表和图形一个导联显示
 	SETCOLOR(BLACK);
 	if(col>=LEFTMAXX){
		commline(ECG_ENDY-ECG_HIGH,  col-LEFTMAXX+WAVXSTART, ECG_ENDY,  col-LEFTMAXX+WAVXSTART);
	}else{
		commline(ECG_ENDY-ECG_HIGH,  col, ECG_ENDY, col);
	}
	if(ECGSCALE->value!=V_X4){
		*(Epointy+MAINLEAD->value)>>=1;
	}else{
		*(Epointy+MAINLEAD->value)-=64;
	}
	if(*(Epointy+MAINLEAD->value)<=0)	*(Epointy+MAINLEAD->value)=1;
	if(*(Epointy+MAINLEAD->value)>=128)	*(Epointy+MAINLEAD->value)=127;
	if(EwaveX==WAVXSTART){
	   row1[MAINLEAD->value]=*(Epointy+MAINLEAD->value);
	}
	temp1=EwaveX%LEFTMAXX;	temp2=(EwaveX+1)%LEFTMAXX;
	if(temp1<temp2){
	   SETCOLOR(LeadColor[MAINLEAD->value]);
	   commline(ECG_ENDY-row1[MAINLEAD->value], temp1, ECG_ENDY-*(Epointy+MAINLEAD->value), temp2);
	}
 }

 EwaveX++;
 if(EwaveX==LEFTMAXX)
 	EwaveX=WAVXSTART;
 for(i_i=0; i_i<7; i_i++)
 	row1[i_i]=*(Epointy+i_i);
 return;
}
/*--------------------------------/
void PLETHwav(int row2)
{
   static int row1=0;
   int col=PwaveX+8;
   SETCOLOR(BLACK);
   if(col<LEFTMAXX)
	commline(PLETHWave_row-PLETH_HIGH, col, PLETHWave_row, col);
   else
	commline(PLETHWave_row-PLETH_HIGH, col-LEFTMAXX+WAVXSTART, PLETHWave_row, col-LEFTMAXX+WAVXSTART);
   SETCOLOR(PLETHWCOLOR->value);
   if(PwaveX==WAVXSTART)
       row1=row2;
   if(PwaveX%LEFTMAXX<(PwaveX+1)%LEFTMAXX){
	if(WAVEFILL->value==V_OFF)
	    commline(PLETHWave_row-row1, PwaveX, PLETHWave_row-row2, PwaveX);
	else
	    commline(PLETHWave_row,      PwaveX, PLETHWave_row-row2, PwaveX);
   }
   row1=row2;
   PwaveX++;
   if(PwaveX==LEFTMAXX)
   	PwaveX=WAVXSTART;
   return;
}
/*--------------------------------*/
void PLETHwav(int row2, int high)
{
   static int row1=0;
   int col=PwaveX+8;
   SETCOLOR(BLACK);
   if(col<LEFTMAXX)
	commline(PLETHWave_row-high, col, PLETHWave_row, col);
   else
	commline(PLETHWave_row-high, col-LEFTMAXX+WAVXSTART, PLETHWave_row, col-LEFTMAXX+WAVXSTART);
   SETCOLOR(PLETHWCOLOR->value);
   if(PwaveX==WAVXSTART)
       row1=row2;
   if(WAVEFILL->value==V_OFF)
	commline(PLETHWave_row-row1, PwaveX, PLETHWave_row-row2, PwaveX);
   else
	commline(PLETHWave_row,      PwaveX, PLETHWave_row-row2, PwaveX);
   row1=row2;
   PwaveX++;
   if(PwaveX==LEFTMAXX)
   	PwaveX=WAVXSTART;
   return;
}


//RESP画点函数
/*----------------------------------/
void RESPwav(int row2)
{  static row1=0;
   int col=RwaveX+8;
   SETCOLOR(BLACK);
   if(col<LEFTMAXX)
	commline(RESP_ENDY-RESP_HIGH, col, RESP_ENDY, col);
   else
	commline(RESP_ENDY-RESP_HIGH, col-LEFTMAXX+1, RESP_ENDY, col-LEFTMAXX+1);
   if(RwaveX==1)
   	row1=row2;
   SETCOLOR(RESPWCOLOR->value);
   commline(RESP_ENDY-row1, RwaveX, RESP_ENDY-row2, RwaveX);
   row1=row2;
   RwaveX++;
   if(RwaveX==LEFTMAXX)
   	RwaveX=1;
   return;
}
/*---------------------------------*/

void RESPwav(int row2)
{
   static row1=0;
   SETCOLOR(BLACK);
   if(RwaveX==LEFTMAXX-1){
   	commline(RESP_ENDY-RESP_HIGH, 1, RESP_ENDY, 1);
   }else{
   	commline(RESP_ENDY-RESP_HIGH, RwaveX+1, RESP_ENDY, RwaveX+1);
   }
   if(RwaveX==WAVXSTART)
 	row1=row2;
   SETCOLOR(RESPWCOLOR->value);
   commline(RESP_ENDY-row1, RwaveX, RESP_ENDY-row2, RwaveX);
   row1=row2;
   RwaveX++;
   if(RwaveX==LEFTMAXX)
   	RwaveX=1;
   return;
}

void RESPsmallwav(int row2)
{
   static row1=0;
   SETCOLOR(BLACK);
   if(RwaveX==LEFTMAXX-1){
   	commline(RESP_SMALL_ENDY-RESP_SMALL_HIGH, 1, RESP_SMALL_ENDY, 1);
   }else{
   	commline(RESP_SMALL_ENDY-RESP_SMALL_HIGH, RwaveX+1, RESP_SMALL_ENDY, RwaveX+1);
   }
   if(RwaveX==WAVXSTART)
 	row1=row2;
   SETCOLOR(RESPWCOLOR->value);
   commline(RESP_SMALL_ENDY-row1, RwaveX, RESP_SMALL_ENDY-row2, RwaveX);
   row1=row2;
   RwaveX++;
   if(RwaveX==LEFTMAXX)
   	RwaveX=1;
   return;
}
#endif

⌨️ 快捷键说明

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