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

📄 runkey.h

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

void DisFrzPLETH(unsigned point)
{
  int row1=*(PLETHcache2+point);
  int max=point+FRZWAVELEN-2;
  int x=1, row2;
  SETCOLOR(PLETHWCOLOR->value);
  for(; point<max; point++, x++){
      row2=*(PLETHcache2+point);
      if(WAVEFILL->value==V_ON){
      	commline(PLETH_ENDY, x, PLETH_ENDY-row2, x);
      }else{
      	commline(PLETH_ENDY-row1, x, PLETH_ENDY-row2, x+1);
      	row1=row2;
      }
  }
  return;
}

void DisFreWav(unsigned char page, unsigned char lead)
{
  
  if(page>=1&&page<=8){
  	int i;
  	page=8-page;
  	i=page*FRZWAVELEN;
  	if(LEADDIS->value==V_SINGLE){//单导联冻结
  		DisSingleFrzECG(i, lead);
  		DisFrzPLETH(i);
  	}else{
  		drawECGScaleRule();
  		DisSevenFrzECG(i);
  	}
  }//end if page is right
  return;
}

void DisValue(VMENU *vmenup, unsigned char color, unsigned char bakcolor)
{
 int tempvar;
 unsigned char tempstr[16];
 switch(vmenup->type){
     	case  TP_CHARE://字符类型,无中英文切换
		outtext(vmenup->vy, vmenup->vx, vmenup->content[vmenup->value], color, bakcolor, FONT12);
		break;
     	case  TP_CHAREC://字符类型,有中英文切换
     		{ char font;
     		tempvar=(vmenup->value<<1)+LANGUAGE->value;
		//if(LANGUAGE->value==V_ENGLISH){
 		  //  font=FONT10;
		//}else{
		  //  font=FONT12;
		//}
     		outtext(vmenup->vy, vmenup->vx, vmenup->content[tempvar], color, bakcolor, FONT12);
     		}
		break;
     	case  TP_INT2://数值为2位的整形类型
     	case  TP_INT3://数值为3位的整形类型
     		if(vmenup->type==TP_INT2){
     			sprintf(tempstr,"%02d",vmenup->value);
     		}else{
     			sprintf(tempstr,"%-3d",vmenup->value);
     		}
     		if(vmenup->content!=NULL)
     			strcat(tempstr,vmenup->content[0]);
     		outtext(vmenup->vy, vmenup->vx, tempstr, color, bakcolor, FONT12);
     		break;
     	case  TP_FLT4://数值为4.1型的浮点数
	case  TP_FLT5://数值为5.2型的浮点数
     		if(vmenup->type==TP_FLT4){
     			sprintf(tempstr,"%-4.1f",(float)(vmenup->value/10.0));
     		}else{
     			sprintf(tempstr,"%-5.2f",(float)(vmenup->value/100.0));
     		}
     		if(vmenup->content!=NULL)
			strcat(tempstr,vmenup->content[0]);
     		outtext(vmenup->vy, vmenup->vx, tempstr, color, bakcolor, FONT12);
     		break;
    	case  TP_KPA://压力千帕
     		sprintf(tempstr,"%-4.1f",(float)(vmenup->value/7.5));
     		outtext(vmenup->vy, vmenup->vx, tempstr, color, bakcolor, FONT12);
     		break;
     	case  TP__F://温度`F
		sprintf(tempstr,"%-5.1f",(float)(vmenup->value*0.18+32.0));
     		outtext(vmenup->vy, vmenup->vx, tempstr, color, bakcolor, FONT12);
     		break;
     	case  TP_COLOR:
     		fillrect(vmenup->vy+2, vmenup->vx+2, vmenup->vy+13, vmenup->vx+62, vmenup->value);
		SETCOLOR(color);
		Rectangle(vmenup->vy, vmenup->vx, vmenup->vy+15, vmenup->vx+64);
		break;
     	case  TP_MOVCUS://移动趋势图光标
     		
     		SETCOLOR(color);
		Rectangle(vmenup->vy-4, vmenup->vx-3, vmenup->vy+13, vmenup->vx+42);
		if(ItemValue!=AT_VALUE){//不在值选择中就画,否则不画
			outtext(vmenup->vy, vmenup->vx, "00:00", color, bakcolor, FONT10);
		}
		break;
	//case  TP_BKCOLOR:
     		//sprintf(tempstr,"%-5",(unsigned)(vmenup->value));
     		//outtext(vmenup->vy, vmenup->vx, tempstr, BLACK, bakcolor, FONT12);
     		//break;
     }
   return;
}

void DisVmenu(void)
{
  int i, temp;
  unsigned char color=MENU_COLOR, bkcolor=MENU_BCOLOR;
  unsigned char valcolor=VM_COLOR, valbkcolor=VM_BCOLOR;
  for(i=0; i<(CUR_item+CUR_Icus)->subnum; i++){
    if(ItemValue==AT_VITEM){
      if(i==CUR_Vcus){
  	  color=MENU_CCOLOR;
  	  bkcolor=MENU_CBCOLOR;
      }else{
	  color=MENU_COLOR;
	  bkcolor=MENU_BCOLOR;
      }
    }//if(ItemValue==AT_VITEM)
    if(ItemValue==AT_VALUE){
      if(i==CUR_Vcus){
	  valcolor=VM_CCOLOR;
	  valbkcolor=VM_CBCOLOR;
      }else{
      	  valcolor=VM_COLOR;
      	  valbkcolor=VM_BCOLOR;
      }
    }
    outtext((CUR_vmenu+i)->iy, (CUR_vmenu+i)->ix, (CUR_vmenu+i)->item[LANGUAGE->value], color, bkcolor, FONT16);
    if((CUR_vmenu+i)->up)
    	DisValue((CUR_vmenu+i), valcolor, valbkcolor);
  }//for(i=0...)
  return;
}

void DisItemHelp(ITEM *itempoint)
{
  int len=(strlen(itempoint->item[LANGUAGE->value])<<3)+2;
  if(itempoint->item!=NULL){
  	SETCOLOR(WHITE);
  	Rectangle(itempoint->t_y-3, itempoint->t_x-3, itempoint->t_y+18, itempoint->t_x+len);
    	outtext(itempoint->t_y, itempoint->t_x, itempoint->item[LANGUAGE->value], BLACK, WHITE, FONT16);
  }
  return;
}

void DisItem(void)
{
  int i, temp;
  unsigned char color=MENU_COLOR, bakcolor=MENU_BCOLOR;
  for(i=0; i<CUR_item->num; i++){
    if(ItemValue==AT_ITEM){
     	if(i==CUR_Icus){
      		color=MENU_CCOLOR;
      		bakcolor=MENU_CBCOLOR;
     	}else{
        	color=MENU_COLOR;
        	bakcolor=MENU_BCOLOR;
     	}
    }
    SETCOLOR(CYAN);
    gapbeeline(MENU_ITEM_Y+1, 0, MENU_ITEM_Y+1, LEFTMAXX);
    out2048(MENU_ITEM_Y+8, (CUR_item+i)->g_x, color, bakcolor, (CUR_item+i)->grpnum);
  }
  DisItemHelp(CUR_item+CUR_Icus);
  return;
}


void MainSecLeadPress(int L_R)
{
  if(L_R==LEFT_K){//从V,aVF,aVL,aVR,III,II,I
	if((CUR_vmenu+CUR_Vcus)==SECLEAD){//在副导联处理中
	    if(SECLEAD->value==MAINLEAD->value){
	    	if(MAINLEAD->value>0)
			MAINLEAD->value--;
		else	MAINLEAD->value=MAINLEAD->up;
		DisValue(MAINLEAD, VM_COLOR, VM_BCOLOR);
	    }
	}//END--在副导联处理中
	if((CUR_vmenu+CUR_Vcus)==MAINLEAD){//在主导联处理中
	    if(MAINLEAD->value==SECLEAD->value){
		if(SECLEAD->value>0)
			SECLEAD->value--;
		else	SECLEAD->value=SECLEAD->up;
	        DisValue(SECLEAD, VM_COLOR, VM_BCOLOR);
	        LeadStr2=VAL_LEAD[SECLEAD->value];
	    }
	}//END--在主导联处理中
  }else{//从I,II....V
	if((CUR_vmenu+CUR_Vcus)==SECLEAD){//在副导联处理中
	    if(SECLEAD->value==MAINLEAD->value){
	    	if(MAINLEAD->value<MAINLEAD->up)
			MAINLEAD->value++;
		else	MAINLEAD->value=0;
		DisValue(MAINLEAD, VM_COLOR, VM_BCOLOR);
	    }
	}//END--在副导联处理中
	if((CUR_vmenu+CUR_Vcus)==MAINLEAD){//在主导联处理中
	    if(MAINLEAD->value==SECLEAD->value){
		if(SECLEAD->value<SECLEAD->up)
			SECLEAD->value++;
		else	SECLEAD->value=0;
	        DisValue(SECLEAD, VM_COLOR, VM_BCOLOR);
	        LeadStr2=VAL_LEAD[SECLEAD->value];
	    }
	}//END--在主导联处理中
  }
  return;
}

void DisParaItem(char oldpara)
{
  #define  PARA_BKCOLOR		0
  //unsigned char row[]={15, 35, 55, 75, 95, 115, 140};//与实际行有300的偏移量
  unsigned char row[]={15, 33, 51, 69, 87, 105, 122, 142};//与实际行有300的偏移量
  unsigned char up_str[10], low_str[10];
  unsigned char color=LIGHTRED;
  unsigned char strpoint=LANGUAGE->value+(PARAMETER->value<<1);
  switch(PARAMETER->value){
  	case	0://HR
  		  fillrect(350,   16,   441,    51,  BLACK);//擦除SYST | MEAN | DIAS 标题
  	case	1://PR
  		  outtext(GRPPAGE_ENDY-GRPPAGE_HIGH,  8, "  300", WHITE,  PARA_BKCOLOR, FONT10);
  		  outtext(GRPPAGE_ENDY-10,  8, "  30 ", WHITE, PARA_BKCOLOR, FONT10);
  		  break;
	case	2://ST
  		  outtext(GRPPAGE_ENDY-GRPPAGE_HIGH,  8, "0.80 ", WHITE, BLACK, FONT10);
  		  outtext(GRPPAGE_ENDY-10,  8, "-0.80", WHITE, PARA_BKCOLOR, FONT10);
  		  break;
  	case	3://SPO2
  		  outtext(GRPPAGE_ENDY-GRPPAGE_HIGH,  8, "  100", WHITE, PARA_BKCOLOR,FONT10);
  		  outtext(GRPPAGE_ENDY-10,  8, "  1  ", WHITE, PARA_BKCOLOR, FONT10);
  		  break;
  	case	4://TEMP1
    		  if(TEMP1UNIT->value==V_C_){
        	    sprintf(up_str, " 45.0");   sprintf(low_str, " 25.0");
        	  }else{
        	    sprintf(up_str, "113.0");	sprintf(low_str, " 77.0");
        	  }
        	  outtext(GRPPAGE_ENDY-GRPPAGE_HIGH,  8, up_str, WHITE, PARA_BKCOLOR, FONT10);
  		  outtext(GRPPAGE_ENDY-10,  8, low_str, WHITE, PARA_BKCOLOR, FONT10);
  		  break;
  	case	5://TEMP2
  		  if(TEMP2UNIT->value==V_C_){
  		  	sprintf(up_str, " 45.0");	sprintf(low_str, " 25.0");
  		  }else{
  		  	sprintf(up_str, "113.0");	sprintf(low_str, " 77.0");
  		  }
  		  outtext(GRPPAGE_ENDY-GRPPAGE_HIGH,  8, up_str, WHITE, PARA_BKCOLOR, FONT10);
  		  outtext(GRPPAGE_ENDY-10,  8, low_str, WHITE,  PARA_BKCOLOR, FONT10);
  		  break;
  	case	6://RESP
  		  fillrect(350,   16,   441,    51,  BLACK);//擦除SYST | MEAN | DIAS 标题
  		  outtext(GRPPAGE_ENDY-GRPPAGE_HIGH,  8, "   99", WHITE, PARA_BKCOLOR, FONT10);
  		  outtext(GRPPAGE_ENDY-10,  8, "   1 ", WHITE, PARA_BKCOLOR, FONT10);
  		  break;
  	case	7://NIBP
  		  if(NIBPUNIT->value==V_MMHG){
  		  	sprintf(up_str, "  250");	sprintf(low_str, "  20 ");
  		  }else{
  		  	sprintf(up_str, " 33.2");	sprintf(low_str, "  2.7");
  		  }
  		  outtext(350, 16, ITEM_SYST[LANGUAGE->value], LIGHTMAGENTA, PARA_BKCOLOR, FONT12);
 		  SETCOLOR(LIGHTGREEN);
 		  commline(365, 32, 385, 32);
 		  outtext(390, 16, ITEM_MEAN[LANGUAGE->value], YELLOW, PARA_BKCOLOR, FONT12);
 		  SETCOLOR(LIGHTMAGENTA);
 		  commline(405, 32, 425, 32);
 		  outtext(430, 16, ITEM_DIAS[LANGUAGE->value], LIGHTRED, PARA_BKCOLOR, FONT12);
  		  outtext(GRPPAGE_ENDY-GRPPAGE_HIGH,  8, up_str, WHITE, PARA_BKCOLOR, FONT10);
  		  outtext(GRPPAGE_ENDY-10,  8, low_str, WHITE, PARA_BKCOLOR, FONT10);
  		  break;
  }//end switch
  //趋势左边的参数
  outtext(row[oldpara]+300, 448, VAL_PARA[LANGUAGE->value+(oldpara<<1)], WHITE, BLACK, FONT12);//HR,PR..NIBP
  outtext(row[PARAMETER->value]+300, 448, VAL_PARA[strpoint], color, BLACK, FONT12);//HR,PR..NIBP
  //趋势图最下面的参数
  outtext(495, 56,  VAL_PARA[strpoint], LIGHTGREEN, BLACK, FONT12);//参数[HR,PR...]
  return;
}

void DisGrpData(unsigned point)
{
  #define GRPDATA_COLOR	YELLOW
  char tempstr[10];
  float fvalue;
  if((DataHand+point)->HR!=255)//心率
     sprintf(tempstr, "%3d", (DataHand+point)->HR);
  else
     sprintf(tempstr, "---");
  outtext(315, 496, tempstr, GRPDATA_COLOR, BLACK, FONT10);

  if((DataHand+point)->PR!=255)//脉率
     sprintf(tempstr, "%3d", (DataHand+point)->PR);
  else
     sprintf(tempstr, "---");
  outtext(333, 496, tempstr, GRPDATA_COLOR, BLACK, FONT10);
  
  if((DataHand+point)->ST!=127)//ST段
     sprintf(tempstr, "%5.2f", (DataHand+point)->ST/100.0);
  else
     sprintf(tempstr, "-.-- ");
  outtext(351, 496, tempstr, GRPDATA_COLOR, BLACK, FONT10);
  
  if((DataHand+point)->SPO2!=255)//SPO2
     sprintf(tempstr, "%2d", (DataHand+point)->SPO2);
  else
     sprintf(tempstr, "--");
  outtext(369, 496, tempstr, GRPDATA_COLOR, BLACK, FONT10);

  if((DataHand+point)->TEMP1!=455){//体温1
     if(TEMP1UNIT->value==V_C_)//摄氏度
     	sprintf(tempstr, "%4.1f", (DataHand+point)->TEMP1/10.0);
     else
     	sprintf(tempstr, "%5.1f", (DataHand+point)->TEMP1*0.18+32.0);
  }else{
     sprintf(tempstr, "--.- ");
  }
  outtext(387, 496, tempstr, GRPDATA_COLOR, BLACK, FONT10);
  

⌨️ 快捷键说明

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