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

📄 dischar.h

📁 该程序是基于PC104的工控板的多参数监护仪的源程序.监护内容包含:心电血氧呼吸无创血压等等.
💻 H
📖 第 1 页 / 共 5 页
字号:
  }

  if(oldmin!=timer.ti_min){	//--min counter and display
     oldmin=timer.ti_min;	TIME_MIN->value=timer.ti_min;
     sprintf(tempstr,"%02d",timer.ti_min);
     outtext(584, 744, tempstr, WHITE, ITEMUL_COLOR, FONT10);

     if(CUR_vmenu==VM_DATETIME){//在时间日期设置菜单
     	unsigned char bkcolor;
	if((CUR_vmenu+CUR_Vcus)==TIME_MIN&&ItemValue==AT_VALUE){
	    color=VM_CCOLOR;	bkcolor=VM_CBCOLOR;
	}else{
	    color=VM_COLOR;	bkcolor=VM_BCOLOR;
	}
	outtext(TIME_MIN->vy, TIME_MIN->vx, tempstr, color, bkcolor, FONT12);
     }//END时间日期菜单
  }

  if(oldhour!=timer.ti_hour){	//--hour counter and display
     oldhour=timer.ti_hour;	TIME_HOUR->value=timer.ti_hour;
     sprintf(tempstr,"%02d",timer.ti_hour);
     outtext(584, 720, tempstr, WHITE, ITEMUL_COLOR, FONT10);
     if(CUR_vmenu==VM_DATETIME){
     	unsigned char bkcolor;
     	if((CUR_vmenu+CUR_Vcus)==TIME_HOUR&&ItemValue==AT_VALUE){
     	    color=VM_CCOLOR;	bkcolor=VM_CBCOLOR;
     	}else{
     	    color=VM_COLOR;	bkcolor=VM_BCOLOR;
     	}
     	outtext(TIME_HOUR->vy, TIME_HOUR->vx, tempstr, color, bkcolor, FONT12);
     }
  }
  
  if(oldday!=dater.da_day){	//--day counter and display
     oldday=dater.da_day;	DATE_DAY->value=dater.da_day;
     sprintf(tempstr,"%02d",dater.da_day);
     outtext(584, 632, tempstr, WHITE, ITEMUL_COLOR, FONT10);
     if(CUR_vmenu==VM_DATETIME){
     	unsigned char bkcolor;
     	if((CUR_vmenu+CUR_Vcus)==DATE_DAY&&ItemValue==AT_VALUE){
     	    color=VM_CCOLOR;	bkcolor=VM_CBCOLOR;
     	}else{
     	    color=VM_COLOR;	bkcolor=VM_BCOLOR;
        }
     	outtext(DATE_DAY->vy, DATE_DAY->vx, tempstr, color, bkcolor, FONT12);
     }
  }
  
  if(oldmon!=dater.da_mon){	//--month counter and display
     oldmon=dater.da_mon;	DATE_MON->value=dater.da_mon;
     sprintf(tempstr,"%02d",dater.da_mon);
     outtext(584, 608, tempstr, WHITE, ITEMUL_COLOR, FONT10);
     if(CUR_vmenu==VM_DATETIME){
     	unsigned char bkcolor;
     	if((CUR_vmenu+CUR_Vcus)==DATE_MON&&ItemValue==AT_VALUE){
     	    color=VM_CCOLOR;	bkcolor=VM_CBCOLOR;
     	}else{
     	    color=VM_COLOR;	bkcolor=VM_BCOLOR;
     	}
     	outtext(DATE_MON->vy, DATE_MON->vx, tempstr, color, bkcolor, FONT12);
     }
  }
  
  if(oldyear!=dater.da_year){	//--year counter and display
     oldyear=dater.da_year;	DATE_YEAR->value=dater.da_year;
     sprintf(tempstr,"%04d",dater.da_year);
     outtext(584, 568, tempstr, WHITE, ITEMUL_COLOR, FONT10);

     if(CUR_vmenu==VM_DATETIME){
     	unsigned char bkcolor;
     	if((CUR_vmenu+CUR_Vcus)==DATE_YEAR&&ItemValue==AT_VALUE){//年修改中
     	    color=VM_CCOLOR;	bkcolor=VM_CBCOLOR;
     	}else{
     	    color=VM_COLOR;	bkcolor=VM_BCOLOR;
     	}
     	outtext(DATE_YEAR->vy, DATE_YEAR->vx, tempstr, color, bkcolor, FONT12);
     }
  }

 switch(DisNo){
	case	0x00:   {static char *mainecgstr=NULL;
			 if(ITEM_ECG[LANGUAGE->value]!=mainecgstr){
			    outtext(4, 8, ITEM_ECG[LANGUAGE->value], ECG_ICOLOR, BLACK, FONT16);
			    mainecgstr=ITEM_ECG[LANGUAGE->value];
		 	 }
		 	}//ECG ITEM (48*16)
		 	break;
	case	0x01:   if(RE_ECGSCALE!=ECGSCALE->value){
			    RE_ECGSCALE=ECGSCALE->value;
			    sprintf(tempstr,"%4.2f",(float)2/(1<<ECGSCALE->value));
			    outtext(7, 160, tempstr, WHITE, BLACK, FONT10); //2.00[mV] 1.00mv..
			    outtext(7, 400, VAL_SCALE[ECGSCALE->value], ECGSCL_COLOR, BLACK, FONT10);//ECG sacle
			    switch(ECGSCALE->value){///增益大小
				case 0:	ScaleAndWave=4;	break;//与模拟波形控制有关系
				case 1:	ScaleAndWave=2;	break;
				case 2:
				case 3:	ScaleAndWave=1;	break;
			    }
			    if(RE_ECGSCALE==V_X2&&ECGSCALE->value==V_X4)
			    	break;
			    if(ECGSCALE->value>2)	var=0x02;
			    else	var=ECGSCALE->value;
			    var=MAINLEAD->value|(var<<3)|(WORKSTA->value<<5)|(INTENSITY->value<<7);
			    com1str[2]=0x08;		//ECG control CMD
			    com1str[3]=var;		//parameter=com1str[3],com1str[4]=0
			    com1str[4]=0;
			    com1str[5]=(unsigned char)( (com1str[2]+com1str[3]+com1str[4])&255);//sum, &255==%256
			    com1count=0;
			    while(com1count<6)
				sendcom1();
			 }
		        break;//1.00mV and  X 1
	case	0x02:	if(RE_MAINLEAD!=MAINLEAD->value||RE_INTENSITY!=INTENSITY->value){
			    RE_MAINLEAD=MAINLEAD->value; RE_INTENSITY=INTENSITY->value;
			    outtext(7, 72, VAL_LEAD[MAINLEAD->value], LIGHTGREEN, BLACK, FONT10); //I,II,III
			    if(ECGSCALE->value>2)	var=0x02;
			    else	var=ECGSCALE->value;
			    var=MAINLEAD->value|(var<<3)|(WORKSTA->value<<5)|(INTENSITY->value<<7);
			    com1str[2]=0x08;		//ECG control CMD
			    com1str[3]=var;		//parameter=com1str[3],com1str[4]=0
			    com1str[4]=0;
			    com1str[5]=(unsigned char)( (com1str[2]+com1str[3]+com1str[4])&255);//sum, &255==%256
			    com1count=0;
			    while(com1count<6)
				sendcom1();
			}
	        break;//Main Lead
	case	0x03:	{static char *leadstastr=NULL;
			 if(ECGStatus&0x0e)	var=V_OFF;
			 else	var=V_ON;
			 if(leadstastr!=ITEM_LEADSTAS[(var<<1)+LANGUAGE->value]){
			     leadstastr=ITEM_LEADSTAS[(var<<1)+LANGUAGE->value];
			     if(var)  color=LIGHTRED;
			     else	color=LIGHTGREEN;
			     outtext(7, 256, leadstastr, color, BLACK, FONT12);
			 }
			}//LEAD status [ON/OFF]
			break;
	case	0x04:	{static char *workstastr=NULL;
			 if(RE_WORKSTA!=WORKSTA->value||workstastr!=VAL_WORKSTA[(WORKSTA->value<<1)+LANGUAGE->value]){
			    workstastr=VAL_WORKSTA[(WORKSTA->value<<1)+LANGUAGE->value];
			    RE_WORKSTA=WORKSTA->value;
			    outtext(7, 336, workstastr, LIGHTCYAN, BLACK, FONT12);
			    if(ECGSCALE->value>2)	var=0x02;
			    else	var=ECGSCALE->value;
			    var=MAINLEAD->value|(var<<3)|(WORKSTA->value<<5)|(INTENSITY->value<<7);
			    com1str[2]=0x08;		//ECG control CMD
			    com1str[3]=var;		//parameter=com1str[3],com1str[4]=0
			    com1str[4]=0;
			    com1str[5]=(unsigned char)( (com1str[2]+com1str[3]+com1str[4])&255);//sum, &255==%256
			    com1count=0;
			    while(com1count<6)
				sendcom1();
			 }
			}//Work mode
		        break;
	case	0x05:   {static char wavespd=0xff;
			 if(wavespd!=WAVESPD->value){
			     wavespd=WAVESPD->value;
			     outtext(7, 488, VAL_WAVESPD[WAVESPD->value], WAVESPD_COLOR, BLACK, FONT10);
			     switch(WAVESPD->value){
				case  0:   WavSpdCount=1; SamplingCount=3; break;//12.5mm/s;
				case  1:   WavSpdCount=2; SamplingCount=1; break;//25mm/s;
				case  2:   WavSpdCount=4; SamplingCount=0; break;//50mm/s;
				default:   WavSpdCount=2; SamplingCount=1; break;//DrawWavCount=3/WavSpdCount
			     }
			 }
		        }
		        break;	//Wave Speed
	case	0x06:  {static char oldgaparm=0xff;//间断报警开关
		        if(oldgaparm!=GAPALARM->value){
			   oldgaparm=GAPALARM->value;
			   if(ARMALLOW->value==V_ON){//报警(打开)
				if(GAPALARM->value==V_ON){//间断报警开
					SETCOLOR(LIGHTRED);
					commline(ARINGYSTART+22,ARINGXSTART+3, ARINGYSTART+1, ARINGXSTART+21);
					commline(ARINGYSTART+22,ARINGXSTART+2, ARINGYSTART+1, ARINGXSTART+22);
				}else{//间断报警 关
					fillrect(ARINGYSTART+1, ARINGXSTART, ARINGYSTART+22, ARINGXSTART+23, ITEMUL_COLOR);
					alarmring();
				}
			   }//end if(ARMALLOW->value==V_ON)
		        }
		       }//end static char
		       break;
	case	0x07:  {static char oldarmsta=0xff;//报警开关
		        if(oldarmsta!=ARMALLOW->value){
			   oldarmsta=ARMALLOW->value;
			   if(ARMALLOW->value==V_ON){//报警(打开)
				alarmsound|=0x8000;//set alarmstatus's alarm allow bit=1;
				fillrect(ARINGYSTART+1, ARINGXSTART, ARINGYSTART+22, ARINGXSTART+23, ITEMUL_COLOR);
				alarmring();
				if(GAPALARM->value==V_ON){//间断报警关
				    SETCOLOR(LIGHTRED);
				    commline(ARINGYSTART+22,ARINGXSTART+3, ARINGYSTART+1, ARINGXSTART+21);
				    commline(ARINGYSTART+22,ARINGXSTART+2, ARINGYSTART+1, ARINGXSTART+22);
				}
			   }else{//报警(关闭)
				alarmsound&=0x7fff;//set alarmstatus's alarm allow bit=0;
				SETCOLOR(LIGHTRED);
				commline(ARINGYSTART+1, ARINGXSTART+2, ARINGYSTART+22, ARINGXSTART+22);
				commline(ARINGYSTART+1, ARINGXSTART+3, ARINGYSTART+22, ARINGXSTART+21);
				if(GAPALARM->value==V_OFF){//间断报警关
				    commline(ARINGYSTART+22,ARINGXSTART+3, ARINGYSTART+1, ARINGXSTART+21);
				    commline(ARINGYSTART+22,ARINGXSTART+2, ARINGYSTART+1, ARINGXSTART+22);
				}
			   }//end else(alarm==off)
			   AlarmRingAllow();
		        }//end if(oldarmsta!=ARMALLOW->value)
		       }//end static char oldarmsta=0xff;
		       break;
	case	0x08:  {static char *verstr=NULL;
			 if(verstr!=VER_STR[LANGUAGE->value]){
			     verstr=VER_STR[LANGUAGE->value];
			     outtext(7, 728, verstr, WHITE, ITEMUL_COLOR, FONT12);
			 }
		       }//VERSION ITEM
		       break;
	case	0x09:  {static  char  *oldhrpr_cus=NULL;
			unsigned char *hrpr_cus;
			if(HRPRFIRST->value==V_HR){
			    if(HRrate!=255||(PRrate==255&&NIBPrate==255)){
				hrpr_cus=ITEM_HR[LANGUAGE->value];
				hrpr_sound=V_HR;
			    }else{
			     	hrpr_cus=ITEM_PR[LANGUAGE->value];
				hrpr_sound=V_PR;
			    }
		     	}else{
			    if((PRrate!=255)||(PRrate==255&&HRrate==255)){
				hrpr_cus=ITEM_PR[LANGUAGE->value];
				hrpr_sound=V_PR;
			    }else{
				hrpr_cus=ITEM_HR[LANGUAGE->value];
				hrpr_sound=V_HR;
			    }
			}
		         if(oldhrpr_cus!=hrpr_cus){
			    oldhrpr_cus=hrpr_cus;
			    outtext(30,568, oldhrpr_cus, ECG_ICOLOR, BLACK, FONT16);  //心率HR(脉率PR)
		        }
		       }
		       break;
	case	0x0a:  {static char *ststr=NULL;
			 if(ststr!=ITEM_ST[LANGUAGE->value]){
			 	ststr=ITEM_ST[LANGUAGE->value];
			 	outtext(120, 568, ststr, WHITE, BLACK, FONT16);//ST value item
			 }
		       }
		       break;
	case	0x0b:  {static char *secleadstr=NULL;
			 if(ItemAllow&0x10){
			   if(ItemAllow&0x01){//ECG+I(II,III,aVR..) or PLETH wave item display
				if(ECGWavItstr!=ITEM_ECG[LANGUAGE->value]){
					ECGWavItstr=ITEM_ECG[LANGUAGE->value];
 					outtext(ECG_ENDY+2, 8, ECGWavItstr, ECG_ICOLOR, BLACK, FONT16);//ECG ...I(II,III,aVR..)
 					fillrect(ECG_ENDY+2, 48+8, ECG_ENDY+2+15, 48+16, BLACK);
 					secleadstr=LeadStr2;
 					outtext(ECG_ENDY+2, 56+8, secleadstr, ECG_ICOLOR, BLACK, FONT16);//ECG I(II,III,aVR..)
 				}
 				if(secleadstr!=LeadStr2){
 					secleadstr=LeadStr2;
 					outtext(ECG_ENDY+2, 56+8, secleadstr, ECG_ICOLOR, BLACK, FONT16);//ECG I(II,III,aVR..)
 				}
			   }else{
			 	if(ECGWavItstr!=ITEM_PLETH[LANGUAGE->value]){
			 		ECGWavItstr=ITEM_PLETH[LANGUAGE->value];
					outtext(ECG_ENDY+2, 8, ECGWavItstr, PLETH_ICOLOR, BLACK, FONT16);//PLETH
				}
			   }//end if(ItemAllow&0x01)
			 }//end if(ItemAllow&0x10)
			}//end static
			break;
	case	0x0c:   {static char *nibpstr=NULL;
			 if(nibpstr!=ITEM_NIBP[LANGUAGE->value]){
			     nibpstr=ITEM_NIBP[LANGUAGE->value];
 			     outtext(190, 568, nibpstr, LIGHTMAGENTA, BLACK, FONT16);
 			 }
 			}
 			break;
 	case	0x0d:   {static char *syststr=NULL;
 			 if(syststr!=ITEM_SYST[LANGUAGE->value]){
 			     syststr=ITEM_SYST[LANGUAGE->value];
 			     outtext(215, 592, syststr, 6, BLACK, FONT12);
 			 }
 			}//SYST ITEM
 			break;
 	case	0x0e:	{static char *diasstr=NULL;
 			 if(diasstr!=ITEM_DIAS[LANGUAGE->value]){
 			     diasstr=ITEM_DIAS[LANGUAGE->value];
 			     outtext(215, 720, diasstr, 6, BLACK, FONT12);
 			 }
 			}//DIAS ITEM
 			break;
 	case	0x0f:	{static char *meanstr=NULL;
 			 if(meanstr!=ITEM_MEAN[LANGUAGE->value]){
 			 	meanstr=ITEM_MEAN[LANGUAGE->value];
 			 	outtext(275, 664, meanstr, 6, BLACK, FONT12);
 			 }
 			}//MEAN ITEM
 			break;
 	case	0x10:	{static char *criterionstr=NULL;
 			 if(criterionstr!=ITEM_CRITERION[LANGUAGE->value]){
 			      criterionstr=ITEM_CRITERION[LANGUAGE->value];
 			      outtext(340, 584, criterionstr, LIGHTMAGENTA, BLACK, FONT12);
 			 }
 			}//ITEM 血压标准
 			break;
 	case	0x11:	{static char *crivaluestr=NULL;
 			 if(crivaluestr!=VAL_NIBPCRIT[(NIBPCRIT->value<<1)+LANGUAGE->value]){
 			     crivaluestr=VAL_NIBPCRIT[(NIBPCRIT->value<<1)+LANGUAGE->value];
 			     outtext(340, 664, crivaluestr, LIGHTMAGENTA, BLACK, FONT12);
 			 }
 			}//(adult high, adult mid ... child high ... baby low)
			break;
 	case	0x12:   {static char *automan=NULL, oldnibpchkture=0xff;
		         if(automan!=VAL_AUTOMAN[(AUTOMANUAL->value<<1)+LANGUAGE->value]||oldnibpchkture!=NIBPCheckTure){
		             char *clyclr;
		             automan=VAL_AUTOMAN[(AUTOMANUAL->value<<1)+LANGUAGE->value];
                     	     oldnibpchkture=NIBPCheckTure;
			     if(AUTOMANUAL->value==V_AUTO){
				clyclr=ITEM_CYCLE[LANGUAGE->value];
                	     	if(NIBPCheckTure==0)
                			color=WHITE;
                	     	else color=LIGHTGREEN;
			     }else{
			     	clyclr=ITEM_CLEAR[LANGUAGE->value];
                    		//NIBPCheckTure=0;
                    		color=LIGHTGREEN;
			     }
                 	     outtext(360, 600, automan, color, BLACK, FONT12);//自动手动
			     outtext(360, 712, clyclr, LIGHTRED, BLACK, FONT12);
			 }
			}//AUTO[MANUAL] CLY[CLR]
			break;
	case	0x13:	{static char oldnibpunit=0xff;
			 if(oldnibpunit!=NIBPUNIT->value){
			     oldnibpunit=NIBPUNIT->value;
			     outtext(360, 760, VAL_BPUNIT[NIBPUNIT->value], YELLOW, BLACK, FONT10);
			 }
			}
			break;
	case	0x14:	{static char *oldchkmodestr=NULL, *oldchkstr=NULL;
			 if(oldchkmodestr!=VAL_CHKMODE[(CHECKMODE->value<<1)+LANGUAGE->value]){
			 	oldchkmodestr=VAL_CHKMODE[(CHECKMODE->value<<1)+LANGUAGE->value];
			 	outtext(194, 664, oldchkmodestr, LIGHTBLUE, BLACK, FONT12);
			 }//正向测量
			 if(oldchkstr!=ITEM_NIBPCHK[LANGUAGE->value]){
			 	oldchkstr=ITEM_NIBPCHK[LANGUAGE->value];
			 	outtext(194, 728, oldchkstr, LIGHTBLUE, BLACK, FONT12);
			 }
			}
			break;
	case	0x15:	if(LEADDIS->value==V_SINGLE){//single lead display
			   if(ItemAllow&0x02){//PLETH wave item display
			       if(PLETHWavItstr!=ITEM_PLETH[LANGUAGE->value]){
				   PLETHWavItstr=ITEM_PLETH[LANGUAGE->value];
				   outtext(ECG_IENDY+3, 8, PLETHWavItstr, PLETH_ICOLOR, BLACK, FONT16);
			       }
			   }else{//PLETH wave item don't display
			       PLETHWavItstr=NULL;
			   }
			}else{
			   PLETHWavItstr=NULL;
			}
			break;
	case	0x16:	if(ItemAllow&0x04){//RESP wave item display
			     char *varstr;
			     if(LEADDIS->value==V_SINGLE){//单导联
			     	varstr=ITEM_RESP[LANGUAGE->value];
			     	if(RESPWavItstr!=varstr){
			     	    RESPWavItstr=varstr;
			     	    outtext(PLETH_ENDY+2, 8, varstr, YELLOW, BLACK, FONT16);
			     	}
			     }else{//七导联
			     	if(RESPCHK->value==V_OFF){
			     	    varstr=ITEM_PLETH[LANGUAGE->value];
				    RESPWavItstr=varstr;
				    outtext(PLETH_ENDY+2, 8, varstr, PLETH_ICOLOR, BLACK, FONT16);

⌨️ 快捷键说明

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