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

📄 runkey.h

📁 该程序是基于PC104的工控板的多参数监护仪的源程序.监护内容包含:心电血氧呼吸无创血压等等.
💻 H
📖 第 1 页 / 共 5 页
字号:
#ifndef __RUNKEY_H
#define __RUNKEY_H
#ifndef __MENU_H
#include "menu.h"
#endif
#ifndef __DISCHAR_H
#include "dischar.h"
#endif
/***********************
#ifndef __PRINT_H
#include "print.h"
#endif
#ifndef __PRINTLST_H
#include "printlst.h"
#endif
/**********************/
#define  MENU_ITEM_Y	566
#define  MENU_HIGH	100

#define  GOTO_NEXTPAGE	1
#define  GOTO_BACKPAGE  0

void SaveSysSet(void)
{
  if(SaveCount>7&&SaveCount<0x3F){
     switch(SaveCount){
     	case	0x08:	*(NVmemmap+SaveCount)=HRPR_UP->value;		break;
     	case	0x09:	*(NVmemmap+SaveCount)=HRPR_LOW->value;		break;
     	case	0x0a:	*(NVmemmap+SaveCount)=ST_UP->value;		break;
     	case	0x0b:	*(NVmemmap+SaveCount)=ST_LOW->value;		break;
     	case	0x0c:	*(NVmemmap+SaveCount)=SPO2_UP->value;		break;
     	case	0x0d:	*(NVmemmap+SaveCount)=SPO2_LOW->value;		break;
     	case	0x0e:	*(NVmemmap+SaveCount)=SYST_UP->value;		break;
     	case	0x0f:	*(NVmemmap+SaveCount)=SYST_LOW->value;		break;

     	case	0x10:	*(NVmemmap+SaveCount)=DIAS_UP->value;		break;
     	case	0x11:	*(NVmemmap+SaveCount)=DIAS_LOW->value;		break;
     	case	0x12:	*(NVmemmap+SaveCount)=MEAN_UP->value;		break;
     	case	0x13:	*(NVmemmap+SaveCount)=MEAN_LOW->value;		break;
     	case	0x14:	*(NVmemmap+SaveCount)=RESP_UP->value;		break;
     	case	0x15:	*(NVmemmap+SaveCount)=RESP_LOW->value;		break;
     	case	0x16:	*(NVmemmap+SaveCount)=TEMP1_UP->value-200;	break;
     	case	0x17:	*(NVmemmap+SaveCount)=TEMP2_UP->value-200;	break;

     	case	0x18:	*(NVmemmap+SaveCount)=MAINLEAD->value|(ECGSCALE->value<<3)|(WORKSTA->value<<5)|(INTENSITY->value<<7); break;
     	case	0x19:	*(NVmemmap+SaveCount)=NIBPCRIT->value;		break;//成人 高...
     	case	0x1a:	*(NVmemmap+SaveCount)=ALARMTIME->value;		break;
     	case	0x1b:	*(NVmemmap+SaveCount)=GAPTIME->value;		break;
     	case	0x1c:	*(NVmemmap+SaveCount)=SPO2REVISE->value;	break;
     	case	0x1d:	*(NVmemmap+SaveCount)=TEMP1REVISE->value;	break;
     	case	0x1e:	*(NVmemmap+SaveCount)=SYSTREVISE->value;	break;
     	case	0x1f:	*(NVmemmap+SaveCount)=DIASREVISE->value;	break;

     	case	0x20:	*(NVmemmap+SaveCount)=MEANREVISE->value;	break;
     	//case	0x21:	*(NVmemmap+SaveCount)=STREVISE->value;		break;
     	case	0x22:	*(NVmemmap+SaveCount)=AUTOTIME->value;		break;
     	case	0x23:	*(NVmemmap+SaveCount)=RESPCHK->value;		break;
     	case	0x24:	*(NVmemmap+SaveCount)=TEMP1CHK->value|(TEMP2CHK->value<<1);	break;
     	case	0x25:	*(NVmemmap+SaveCount)=TEMP2REVISE->value;	break;
     	//case	0x26:	*(NVmemmap+SaveCount)=SYSTREVISE->value_BAK;	break;
     	//case	0x27:	*(NVmemmap+SaveCount)=DIASREVISE->value_BAK;	break;

     	//case	0x28:	*(NVmemmap+SaveCount)=MEANREVISE->value_BAK;	break;
     	//case	0x29:	*(NVmemmap+SaveCount)=STREVISE->value_BAK;	break;
     	case	0x2a:	*(NVmemmap+SaveCount)=NIBPUNIT->value;		break;
     	case	0x2b:	*(NVmemmap+SaveCount)=TEMP1UNIT->value|(TEMP2UNIT->value<<1);	break;
     	case	0x2c:	*(NVmemmap+SaveCount)=AUTOMANUAL->value;	break;
     	case	0x2d:	*(NVmemmap+SaveCount)=RESPSCALE->value;		break;
     	case	0x2e:	*(NVmemmap+SaveCount)=HRPRFIRST->value;		break;
     	case	0x2f:	*(NVmemmap+SaveCount)=WAVEFILL->value;		break;

     	case	0x30:	*(NVmemmap+SaveCount)=CLEARTIME->value;		break;
     	case	0x31:	*(NVmemmap+SaveCount)=LANGUAGE->value;		break;
     	case	0x32:	*(NVmemmap+SaveCount)=HRPR_ALLOW->value|(ST_ALLOW->value<<1)|(SPO2_ALLOW->value<<2)\
     					      |(NIBP_ALLOW->value<<3)|(RESP_ALLOW->value<<4)|(TEMP1_ALLOW->value<<5)\
     					      |(TEMP2_ALLOW->value<<6);	break;
     	case	0x33:	*(NVmemmap+SaveCount)=CHECKMODE->value;		break;
     	case	0x34:	*(NVmemmap+SaveCount)=ECGWREVISE->value;	break;
     	//case	0x35:	*(NVmemmap+SaveCount)=ECGWREVISE->value_BAK;	break;
     	case	0x36:	*(NVmemmap+SaveCount)=SECLEAD->value|(LEADDIS->value<<7);break;
     	case	0x37:	*(NVmemmap+SaveCount)=BACKCOLOR->value;		break;

     	case	0x38:	*(NVmemmap+SaveCount)=LeadColor[V_I]|(LeadColor[V_II]<<4);	break;
     	case	0x39:	*(NVmemmap+SaveCount)=LeadColor[V_III]|(LeadColor[V_aVR]<<4);	break;
     	case	0x3a:	*(NVmemmap+SaveCount)=LeadColor[V_aVL]|(LeadColor[V_aVF]<<4);	break;
     	case	0x3b:	*(NVmemmap+SaveCount)=LeadColor[V_V];				break;
     	case	0x3c:	*(NVmemmap+SaveCount)=PLETHWCOLOR->value|(RESPWCOLOR->value<<4);break;
     	case	0x3d:	*(NVmemmap+SaveCount)=ECGNUMCOLOR->value|(STNUMCOLOR->value<<4);break;
     	case	0x3e:	*(NVmemmap+SaveCount)=SPO2NUMCOLOR->value|(NIBPNUMCOLOR->value<<4);break;
     	case	0x3f:	*(NVmemmap+SaveCount)=RESPNUMCOLOR->value|(TEMPNUMCOLOR->value<<4);break;
     }//end swtich
     com1str[2]=0x05;//write NVmemery command;
     com1str[3]=SaveCount;//memery address;
     com1str[4]=*(NVmemmap+SaveCount);	//write content;
     com1str[5]=(0x05+com1str[3]+com1str[4])&255;
     com1count=0;
     while(com1count<6)
  	sendcom1();
  }//end if(SaveCount<0x38)
  SaveCount++;
}

void CheckLimit(void)
{
   if(HRPR_UP->value<=HRPR_LOW->value){
	HRPR_UP->value=160;	HRPR_LOW->value=50;
   }
   if(ST_UP->value<=ST_LOW->value){
	ST_UP->value=20;	ST_LOW->value=-20;
   }
   if(SPO2_UP->value<=SPO2_LOW->value){
	SPO2_UP->value=99;	SPO2_LOW->value=90;
   }
   if(SYST_UP->value<=SYST_LOW->value){
        SYST_UP->value=160;	SYST_LOW->value=90;
   }
   if(MEAN_UP->value<=MEAN_LOW->value){
	MEAN_UP->value=140;	MEAN_LOW->value=70;
   }
   if(DIAS_UP->value<=DIAS_LOW->value){
	DIAS_UP->value=120;	DIAS_LOW->value=50;
   }
   if(RESP_UP->value<=RESP_LOW->value){
	RESP_UP->value=60;	RESP_LOW->value=10;
   }
   return;
}

void DisFrzStaEnd(unsigned char page)
{//每秒采样100点波形,560点=5秒60毫秒,
 //8页=560*8=4480毫秒=44秒80毫秒
 //560*8=44.80;  560*7=39.20;  560*6=33.60;  560*5=28.00;
 //560*4=22.40;  560*3=16.80;  560*2=11.20;  560*1=05.60;
 
 //540*8=43.20;  540*7=37.80;  540*6=32.40;  540*5=27.00;
 //540*4=21.60;  540*3=16.20;  540*2=10.80;  540*1=05.40;
 
 //560点=560*0.30625mm=(171.5mm)/(25mm/s)=6.86s
 //6.86*8=54.88; 6.86*7=48.02; 6.86*6=41.16; 6.86*5=34.30;
 //6.86*4=27.44; 6.86*3=20.58; 6.86*2=13.72; 6.86*1=06.86
 if(page>0&&page<9){
 	char tempstr[20];
	char hour=0, min=0, sec=0, hund;
 	unsigned char SeaSec[9]={54,48,41,34,27,20,13,6,0};
	unsigned char SeaHund[9]={88,2,16,30,44,58,72,86,0};
 	if((hund=frztime.ti_hund-SeaHund[page-1])<0){
  		hund+=100;
  		--sec;
  	}
  	if((sec=sec+frztime.ti_sec-SeaSec[page-1])<0){
  		sec+=60;
  		--min;
  	}
  	if((min+=frztime.ti_min)<0){
  		--hour;
  		min+=60;
  	}
  	if((hour+=frztime.ti_hour)<0)
  		hour+=24;
  	sprintf(tempstr,"%02d:%02d:%02d.%02d",hour, min, sec, hund);
  	outtext(497, 96, tempstr, WHITE, BLACK, FONT10);//开始时间
  
  	hour=sec=min=0;
  	if((hund=frztime.ti_hund-SeaHund[page])<0){
  		hund+=100;
  		--sec;
  	}
  	if((sec=sec+frztime.ti_sec-SeaSec[page])<0){
  		sec+=60;
  		--min;
  	}
  	if((min+=frztime.ti_min)<0){
  		--hour;
  		min+=60;
  	}
  	if((hour+=frztime.ti_hour)<0)
  		hour+=24;
  	sprintf(tempstr,"%02d:%02d:%02d.%02d",hour, min, sec, hund);
  	outtext(520, 96, tempstr, WHITE, BLACK, FONT10);//结束时间
  }//end page is right
  return;
}

void DisFrzTime(void)
{
  char tempstr[20];
  char *ITEM_FRZTIME[]={"FREEZE TIME:","冻结时间:"};//ASCII FONT16
  char *ITEM_FRZDATE[]={"FREEZE DATE:","冻结日期:"};//ASCII FONT16
  char *ITEM_STARTTIME[]={"START TIME:","开始时间:"};//ASCII FONT16
  char *ITEM_ENDTIME[]={"END TIME:","结束时间:"};//ASCII FONT16
  outtext(495, 8, ITEM_STARTTIME[LANGUAGE->value], LIGHTBLUE, BLACK, FONT16);
  outtext(518, 8, ITEM_ENDTIME[LANGUAGE->value], LIGHTBLUE,  BLACK, FONT16);

  outtext(495, 344, ITEM_FRZTIME[LANGUAGE->value], LIGHTBLUE, BLACK, FONT16);
  sprintf(tempstr,"%02d:%02d:%02d.%02d", frztime.ti_hour,frztime.ti_min, frztime.ti_sec, frztime.ti_hund);
  outtext(497,  440, tempstr, WHITE, BLACK, FONT10);//冻结时间

  outtext(518, 344, ITEM_FRZDATE[LANGUAGE->value], LIGHTBLUE, BLACK, FONT16);
  sprintf(tempstr,"%04d-%02d-%02d", frzdate.da_year,frzdate.da_mon, frzdate.da_day);
  outtext(520,  440, tempstr, WHITE, BLACK, FONT10);//冻结日期
  return;
}

void SaveFile(void)
{
 char FileName[10], i_i;
 unsigned int filebytes;// file read write bytes;
 int FileHandle;
 ++FilePoint;
 if(FilePoint>8) FilePoint=1;

 sprintf(FileName, "F%02d", FilePoint);
 if(_dos_creat(FileName,O_WRONLY|O_CREAT|O_BINARY,&FileHandle)==0){
     for(i_i=0; i_i<7; i_i++){
	_dos_write(FileHandle, ECGcache2[i_i], EcacheL, &filebytes);
     }
     _dos_write(FileHandle, PLETHcache2, EcacheL, &filebytes);
     _dos_write(FileHandle, &frzdate, sizeof(struct date), &filebytes);
     _dos_write(FileHandle, &frztime, sizeof(struct time), &filebytes);
     _dos_write(FileHandle, &FrzData, sizeof(MonData), &filebytes);
     _dos_close(FileHandle);
     
     if(!SLTFILE->up){//从未保存文件
    	SLTFILE->value=SLTFILE->low=SLTFILE->up=1;
     }else{
     	if(SLTFILE->up<8)    	SLTFILE->up++;
     	SLTFILE->value=FilePoint;
     }
 }else{//文件未正确保存
     if(FilePoint>0) FilePoint--;
 }
 
 if(SLTFILE->up){
     SLTPAGE->value=SLTPAGE->low=1;
     SLTPAGE->up=8;
 }else{
     SLTPAGE->value=SLTPAGE->low=SLTPAGE->up=0;
 }

 return;
}

char OpenFile(unsigned char filenum)
{
 char FileName[10];
 char right=1, i_i;
 int FileHandle; //file handle
 unsigned int filebytes;// file read write bytes;
 sprintf(FileName, "F%02d", filenum);
 if(_dos_open(FileName, O_RDONLY|O_BINARY, &FileHandle)==0){
     for(i_i=0; i_i<7; i_i++){
	_dos_read(FileHandle, ECGcache2[i_i], EcacheL, &filebytes);
     }
     _dos_read(FileHandle, PLETHcache2, EcacheL, &filebytes);
     _dos_read(FileHandle, &frzdate, sizeof(struct date), &filebytes);
     _dos_read(FileHandle, &frztime, sizeof(struct time), &filebytes);
     _dos_read(FileHandle, &FrzData, sizeof(MonData), &filebytes);
     _dos_close(FileHandle);
 }else{//文件未正确保存
    right=0;
 }
 return right;
}



void DisSingleFrzECG(unsigned point, unsigned char lead)
{
   int max=point+FRZWAVELEN-2;
   int row1=*(ECGcache2[lead]+point);
   int x=1,  row2;
   if(ECGSCALE->value!=V_X4)
	row1>>=1;
   else
	row1-=64;
   if(row1<=0)	 row1=1;
   if(row1>=128) row1=127;

   SETCOLOR(LeadColor[lead]);
   for(; point<max; point++, x++){
  	row2=*(ECGcache2[lead]+point);
  	if(ECGSCALE->value!=V_X4)
		row2>>=1;
	else
	    	row2-=64;
	if(row2<=0)	row2=1;
	if(row2>=128)	row2=127;
	commline(ECG_IENDY-row1, x, ECG_IENDY-row2, x+1);
      	row1=row2;
   }
   return;
}



void DisSevenFrzECG(unsigned point)
{ int max=point+FRZWAVELEN-2, jj, x;
  int row1[7], row2[7], baserow[7]={I_ENDY, II_ENDY, III_ENDY, aVR_ENDY, aVL_ENDY, aVF_ENDY, V_ENDY};
  char i_i;
  for(i_i=0; i_i<7; i_i++){
      if(ECGSCALE->value!=V_X4)
	row1[i_i]=*(ECGcache2[i_i]+point)>>1;
      else
	row1[i_i]=*(ECGcache2[i_i]+point)-64;
      row1[i_i]=row1[i_i]*ECGW_SYNC_RATE/ECGW_RATE_BASE;
      if(row1[i_i]<=0)	row1[i_i]=1;
      if(row1[i_i]>=SEVENLEAD_HIGH)	row1[i_i]=SEVENLEAD_HIGH;
  }
  for(i_i=0; i_i<7; i_i++){
  	SETCOLOR(LeadColor[i_i]);
  	jj=point+1;	x=1;
  	for(; jj<max; jj++, x++){
  	   row2[i_i]=*(ECGcache2[i_i]+jj);
  	   if(ECGSCALE->value!=V_X4)
		row2[i_i]>>=1;
	   else
		row2[i_i]-=64;
	   row2[i_i]=row2[i_i]*ECGW_SYNC_RATE/ECGW_RATE_BASE;
	   if(row2[i_i]<=0)	row2[i_i]=1;
	   if(row2[i_i]>=SEVENLEAD_HIGH)  row2[i_i]=SEVENLEAD_HIGH;
	   commline(baserow[i_i]-row1[i_i], x, baserow[i_i]-row2[i_i], x+1);
	   row1[i_i]=row2[i_i];
	}
  }
  return;

⌨️ 快捷键说明

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