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

📄 menu.h

📁 该程序是基于PC104的工控板的多参数监护仪的源程序.监护内容包含:心电血氧呼吸无创血压等等.
💻 H
📖 第 1 页 / 共 3 页
字号:
{//ix,	iy,	vx,	vy,	low	up    value	**content	**item		VID		type
{ 8,	545,	120,	547,	1,	1,	1,	NULL,		MENU_TURNPAGE,	VID_LTNDPAGE,	TP_INT3,	1},//0前后翻页
{ 160,	545,	272,	547,	0,	4,	0,	VAL_LTIMESCAL,	MENU_TIMESCAL,	VID_LTIMESTEP,	TP_CHARE,	1},//1时间标尺
{ 328,	545,	432,	547,	0,	0,	0,	VAL_PRINT,	MENU_PRINTLST,	VID_PRINTLST,	TP_CHAREC,	0},//2打印列表
{ 480,	545,	480,	547,	0,	0,	0,	NULL,		MENU_EXIT,	VID_EXITLIST,	TP_CHARE,	0}
};
VMENU VM_NIBPLIST[]=
{//ix,	iy,	vx,	vy,	low	up    value	**content	**item		VID		type
{ 8,	545,	120,	547,	1,	1,	1,	NULL,		MENU_TURNPAGE,	VID_NIBPPAGE,	TP_INT3,	1},//0前后翻页
{ 160,	545,	272,	547,	0,	0,	0,	VAL_PRINT,	MENU_PRINTLST,	VID_PRINTLST,	TP_CHAREC,	0},//2打印列表224,545,328,
{ 328,	545,	432,	547,	0,	0,	0,	VAL_CLEAR,	MENU_CLEAR,	VID_CLEARDATA,	TP_CHAREC,	0},//3清除数据
{ 480,	545,	480,	547,	0,	0,	0,	NULL,		MENU_EXIT,	VID_EXITLIST,	TP_CHARE,	0}
};

VMENU VM_REVISE[]=
{//ix,	iy,	vx,	vy,	low	up    value	**content	**item		VID		type
{ 8,	513,	120,	515,	80,	120,	100,	UNIT_HUN,	MENU_SYSREV,	VID_NOCMD,	TP_INT3,	1},//0SYST校准
{ 192,	513,	304,	515,	80,	120,	100,	UNIT_HUN,	MENU_MEAREV,	VID_NOCMD,	TP_INT3,	1},//1MEAN校准
{ 376,	513,	488,	515,	80,	120,	100,	UNIT_HUN,	MENU_DIAREV,	VID_NOCMD,	TP_INT3,	1},//2DIAS校准
{ 8,	533,	120,	535,	80,	120,	100,	UNIT_HUN,	MENU_ECGWREV,	VID_NOCMD,	TP_INT3,	1},//3ECGW校准
{ 192,	533,	304,	535,	-5,	5,	0,	VAL_TEMPUNIT,MENU_TEMP1REV,	VID_NOCMD,	TP_FLT4,	1},//4体温1校准
{ 376,  533,	488,	535,	-5,	5,	0,	VAL_TEMPUNIT,MENU_TEMP2REV,	VID_NOCMD,	TP_FLT4,	1},//5体温2校准
{ 8,	553,	120,	555,	-2,	2,	0,	NULL,		MENU_SPO2REV,	VID_NOCMD,	TP_INT2,	1},//6SPO2校准
{ 192,	553,	304,	555,	0,	0,	0,	VAL_ONOFF,	MENU_NIBPREV,	VID_NIBPREV,	TP_CHAREC,	0},//7血压校准
{ 376,	553,	488,	555,	0,	1,	1,	VAL_ONOFF,	MENU_LEACHWAVE,	VID_LEACHWAVE,	TP_CHAREC,	1},//8滤波通断
{ 8,	573,	80,	577,	0,	0,	0,	NULL,		MENU_EXIT,	VID_MENUEXIT,	TP_CHARE,	0}
};

ITEM  IM_MAIN[]=
{//g_x	t_x	t_y	subnum	num	grpnum		**item		*vmenu		autoexit	ID
{ 8,	224,	480,	7,	9,	GRP_ECGSET,	ITEM_ECGSET,	VM_ECG,		1,		ID_NOCMD},
{ 64,	224,	480,	6,	9,	GRP_NIBPSET,	ITEM_NIBPSET,	VM_NIBP,	1,		ID_NOCMD},
{ 128,	224,	480,	6,	9,	GRP_RESTEMSET,	ITEM_RESPTEMP,	VM_RSPTMP,	1,		ID_NOCMD},
{ 192,	224,	480,	6,	9,	GRP_SYSSET,	ITEM_SYSSET,	VM_SYSTEM,	1,		ID_NOCMD},
{ 256,	224,	480,	3,	9,	GRP_PRINTSET,	ITEM_PRTSET,	VM_PRINT,	1,		ID_NOCMD},
{ 320,	224,	480,	6,	9,	GRP_DATETIME,	ITEM_DATETIME,	VM_DATETIME,	1,		ID_NOCMD},
{ 384,	224,	480,	5,	9,	GRP_WAVCOLOR,	ITEM_WAVCOLOR,	VM_WAVECOLOR,	1,		ID_NOCMD},
{ 448,	224,	480,	6,	9,	GRP_NUMCOLOR,	ITEM_NUMCOLOR,	VM_NUMCOLOR,	1,		ID_NOCMD},
{ 504,	224,	500,	0,	9,	GRP_EXIT,	ITEM_EXITMENU,	NULL,		1,		ID_NOCMD}
};

ITEM  IM_ALARM[]=
{//g_x	t_x	t_y	subnum	num	grpnum		**item		*vmenu		autoexit	ID
{ 8,	224,	480,	6,	8,	GRP_ALARMSET,	ITEM_ALARMSET,	VM_ALARMSET,	1,		ID_NOCMD},
{ 80,	224,	480,	3,	8,	GRP_ECGALARM,	ITEM_ECGALARM,	VM_ALARMECG,	1,		ID_NOCMD},
{ 152,	224,	480,	3,	8,	GRP_STALARM,	ITEM_STALARM,	VM_ALARMST,	1,		ID_NOCMD},
{ 224,	224,	480,	3,	8,	GRP_SPO2ALARM,	ITEM_SPO2ALARM,	VM_ALARMSPO2,	1,		ID_NOCMD},
{ 296,	224,	480,	7,	8,	GRP_NIBPALARM,	ITEM_NIBPALARM,	VM_ALARMNIBP,	1,		ID_NOCMD},
{ 368,	224,	480,	3,	8,	GRP_RESPALARM,	ITEM_RESPALARM,	VM_ALARMRESP,	1,		ID_NOCMD},
{ 440,	224,	480,	4,	8,	GRP_TEMPALARM,	ITEM_TEMPALARM,	VM_ALARMTEMP,	1,		ID_NOCMD},
{ 504,	224,	500,	0,	8,	GRP_EXIT,	ITEM_EXITMENU,	NULL,		1,		ID_NOCMD}
};

ITEM IM_TREND[]=
{//g_x	t_x	t_y	subnum	num	grpnum		**item		*vmenu		autoexit	ID
{ 16,	224,	480,	5,	5,	GRP_FILECALL,	ITEM_FILERECAL,	VM_FILECALL,	0,		ID_INTOFILE},
{ 136,	224,	480,	5,	5,	GRP_TREND_G,	ITEM_TRENDGRP,	VM_TRENDGRP,	0,		ID_INTOTNDGRP},
{ 256,	224,	480,	4,	5,	GRP_TREND_L,	ITEM_TRENDLIST,	VM_TRENDLST,	0,		ID_INTOTNDLST},
{ 376,	224,	480,	4,	5,	GRP_NIBPLIST,	ITEM_NIBPLIST,  VM_NIBPLIST,	0,		ID_INTONIBPLST},//ID_INTONIBPLST
{ 496,	224,	500,	0,	5,	GRP_EXIT,	ITEM_EXITMENU,	NULL,		0,		ID_NOCMD}
};
		//g_x	t_x	t_y	subnum	num	grpnum		**item		*vmenu		autoexit	ID
ITEM IM_FREEZE={0,	0,	0,	5,	1,	GRP_NULL,	NULL,		VM_FREEZE,	0,	ID_NOCMD};

ITEM IM_REVISE={0,	0,	0,	10,	1,	GRP_NULL,	NULL,		VM_REVISE,	0,	ID_NOCMD};

//注意:血压单位和体温单位保存,初始化时要注意它们上下线和体温修正的值显示类型

#define  MAINLEAD	(VM_ECG+0)	//NVmemmap[0x10]__bit0~~bit2
#define  SECLEAD	(VM_ECG+1)	//NVmemmap[0x2e]
#define  WAVESPD	(VM_ECG+2)	
#define  ECGSCALE	(VM_ECG+3)	//NVmemmap[0x10]__bit3~~bit4
#define  WORKSTA	(VM_ECG+4)	//NVmemmap[0x10]__bit5~~bit6
#define  LEADDIS	(VM_ECG+5)
#define  INTENSITY	(VM_ECG+6)

#define  CHECKMODE	(VM_NIBP+0)	//NVmemmap[0x2b]
#define  NIBPUNIT	(VM_NIBP+1)	//NVmemmap[0x22]
#define  AUTOMANUAL	(VM_NIBP+2)	//NVmemmap[0x24]
#define  AUTOTIME	(VM_NIBP+3)	//NVmemmap[0x1a]
#define  NIBPCRIT	(VM_NIBP+4)	//NVmemmap[0x11]
#define	 CLEARTIME	(VM_NIBP+5)	//NVmemmap[0x28]


#define  RESPCHK	(VM_RSPTMP+0)	//NVmemmap[0x1b]
#define  TEMP1CHK	(VM_RSPTMP+1)	//NVmemmap[0x1c]__bit0
#define  TEMP1UNIT	(VM_RSPTMP+2)	//NVmemmap[0x23]__bit0
#define  RESPSCALE	(VM_RSPTMP+3)	//NVmemmap[0x25]
#define  TEMP2CHK	(VM_RSPTMP+4)	//NVmemmap[0x1c]__bit1
#define  TEMP2UNIT	(VM_RSPTMP+5)	//NVmemmap[0x23]__bit1

#define  HRPRFIRST	(VM_SYSTEM+0)	//NVmemmap[0x26]
#define  SYSTEMDEF	(VM_SYSTEM+1)
#define  MONDEMO	(VM_SYSTEM+2)	
#define  WAVEFILL	(VM_SYSTEM+3)	//NVmemmap[0x27]
#define  LANGUAGE	(VM_SYSTEM+4)	//NVmemmap[0x29]
#define  MACHINGID	(VM_SYSTEM+5)	//NVmemmap[]

#define  DATE_YEAR	(VM_DATETIME+0)
#define  DATE_MON	(VM_DATETIME+1)
#define  DATE_DAY	(VM_DATETIME+2)
#define  TIME_HOUR	(VM_DATETIME+3)
#define  TIME_MIN	(VM_DATETIME+4)
#define  TIME_SEC	(VM_DATETIME+5)

#define  AUTOPRT	(VM_PRINT+0)
#define  PRTTIME	(VM_PRINT+1)
#define  ALARMPRT	(VM_PRINT+2)

#define	 LEADSLT_COL	(VM_WAVECOLOR+0)
#define  LEADWCOLOR	(VM_WAVECOLOR+1)
#define	 PLETHWCOLOR	(VM_WAVECOLOR+2)
#define	 BACKCOLOR	(VM_WAVECOLOR+3)//NVmemmap[0x2f]
#define	 RESPWCOLOR	(VM_WAVECOLOR+4)


#define	 ECGNUMCOLOR	(VM_NUMCOLOR+0)
#define	 STNUMCOLOR	(VM_NUMCOLOR+1)
#define	 SPO2NUMCOLOR	(VM_NUMCOLOR+2)
#define	 NIBPNUMCOLOR	(VM_NUMCOLOR+3)
#define	 RESPNUMCOLOR	(VM_NUMCOLOR+4)
#define	 TEMPNUMCOLOR	(VM_NUMCOLOR+5)

#define  GAPALARM	(VM_ALARMSET+0)
#define  ALARMTONE	(VM_ALARMSET+1)
#define  ALARMTIME	(VM_ALARMSET+2)	//NVmemmap[0x12]
#define  GAPTIME	(VM_ALARMSET+3)	//NVmemmap[0x13]
#define  ARMALLOW	(VM_ALARMSET+4)
#define  ARMDEF		(VM_ALARMSET+5)

#define  HRPR_UP	(VM_ALARMECG+0)//NVmemmap[0x00]
#define  HRPR_LOW	(VM_ALARMECG+1)//NVmemmap[0x01]
#define	 HRPR_ALLOW	(VM_ALARMECG+2)//NVmemmap[0x2a]__bit0

#define  ST_UP		(VM_ALARMST+0)//NVmemmap[0x02]
#define  ST_LOW		(VM_ALARMST+1)//NVmemmap[0x03]
#define  ST_ALLOW	(VM_ALARMST+2)//NVmemmap[0x2a]__bit1


#define  SPO2_UP	(VM_ALARMSPO2+0)//NVmemmap[0x04]
#define  SPO2_LOW	(VM_ALARMSPO2+1)//NVmemmap[0x05]
#define	 SPO2_ALLOW	(VM_ALARMSPO2+2)//NVmemmap[0x2a]__bit2

#define  SYST_UP	(VM_ALARMNIBP+0)//NVmemmap[0x06]
#define  SYST_LOW	(VM_ALARMNIBP+1)//NVmemmap[0x07]
#define  MEAN_UP	(VM_ALARMNIBP+2)//NVmemmap[0x0a]
#define  MEAN_LOW	(VM_ALARMNIBP+3)//NVmemmap[0x0b]
#define  DIAS_UP	(VM_ALARMNIBP+4)//NVmemmap[0x08]
#define  DIAS_LOW	(VM_ALARMNIBP+5)//NVmemmap[0x09]
#define  NIBP_ALLOW	(VM_ALARMNIBP+6)//NVmemmap[0x2a]__bit3


#define  RESP_UP	(VM_ALARMRESP+0)//NVmemmap[0x0c]
#define  RESP_LOW	(VM_ALARMRESP+1)//NVmemmap[0x0d]
#define  RESP_ALLOW	(VM_ALARMRESP+2)//NVmemmap[0x2a]__bit4

#define  TEMP1_UP	(VM_ALARMTEMP+0)//NVmemmap[0x0e]
#define  TEMP2_UP	(VM_ALARMTEMP+1)//NVmemmap[0x0f]
#define  TEMP1_ALLOW	(VM_ALARMTEMP+2)//NVmemmap[0x2a]__bit5
#define  TEMP2_ALLOW	(VM_ALARMTEMP+3)//NVmemmap[0x2a]__bit6

#define  FRZTURNPG	(VM_FREEZE+0)
#define  FRZPRTWAV	(VM_FREEZE+1)
#define  SAVEWAVE	(VM_FREEZE+2)
#define  FRZLEADSLT	(VM_FREEZE+3)
#define  FRZEXIT	(VM_FREEZE+4)

#define  SLTFILE	(VM_FILECALL+0)
#define  SLTPAGE	(VM_FILECALL+1)
#define  FILLPRTWAV	(VM_FILECALL+2)
#define	 FILLEADSLT	(VM_FILECALL+3)
#define  FILLEXIT	(VM_FILECALL+4)

#define  PARAMETER	(VM_TRENDGRP+0)
#define  GTIMESCALE	(VM_TRENDGRP+1)
#define  GRPTURNPG	(VM_TRENDGRP+2)
#define  MOVECURS	(VM_TRENDGRP+3)
#define  TGRPEXIT	(VM_TRENDGRP+4)

#define  LSTTURNPG	(VM_TRENDLST+0)
#define  LTIMESCALE	(VM_TRENDLST+1)
#define  PRTLIST	(VM_TRENDLST+2)
#define  TLISTEXIT	(VM_TRENDLST+3)

#define  NIBPLSTPAGE	(VM_NIBPLIST+0)
#define  NIBPLSTPRT	(VM_NIBPLIST+0)
#define  NIBPLSTCLR	(VM_NIBPLIST+0)
#define  NIBPLSTEXIT	(VM_NIBPLIST+0)

#define  SYSTREVISE	(VM_REVISE+0)	//NVmemmap[0x16]
#define  MEANREVISE	(VM_REVISE+1)	//NVmemmap[0x18]
#define  DIASREVISE	(VM_REVISE+2)	//NVmemmap[0x17]
#define	 ECGWREVISE	(VM_REVISE+3)	//NVmemmap[0x2c]
#define  TEMP1REVISE	(VM_REVISE+4)	//NVmemmap[0x15]
#define  TEMP2REVISE	(VM_REVISE+5)	//NVmemmap[0x1d]
#define  SPO2REVISE	(VM_REVISE+6)	//NVmemmap[0x14]
#define	 NIBPREVISE	(VM_REVISE+7)
#define  LEACHWAVE	(VM_REVISE+8)
#define  REVISEEXIT	(VM_REVISE+9)


//#define  RE_MAINLEAD	(MAINLEAD->oldval)
//#define  RE_ECGSCALE	(ECGSCALE->oldval)
//#define  RE_WORKSTA	(WORKSTA->oldval)
//#define  RE_RESPSCALE	(RESPSCALE->oldval)

unsigned char  RE_MAINLEAD=0;
unsigned char  RE_ECGSCALE=0;
unsigned char  RE_WORKSTA=0;
unsigned char  RE_INTENSITY=0;
unsigned char  RE_RESPSCALE=0;
int  oldMovCus=-1;

unsigned char com1str[6]={0x55,0xaa,0x0,0x0,0x0,0x0};//发送命令到心电模块缓冲区

char com1count=0;//发送到心电模块的命令指针

unsigned CMD_VID=0x0000;//value menu command ID
unsigned CMD_ID=0x0000;//item menu command ID

unsigned char NVmemmap[0x40]; //镜相心电模块中的非易失性存储器56字节

unsigned char LeadColor[7]={L_I_COLOR, L_II_COLOR, L_III_COLOR, L_aVR_COLOR, L_aVL_COLOR,\
			    L_aVF_COLOR, L_V_COLOR};//(I,II,III,aVR,aVL,aVF,V)导联颜色

unsigned key_val;	//模块传来的键盘值

unsigned char ECGStatus=1;	 //ecg lead status
unsigned char SPO2Status=1;	 //spo2 status
unsigned char NIBPStatus=0;	 //nibp status
unsigned char NIBPerror=0;	 //nibp error
unsigned char PulseSound=V_ON;	 //pulse sound switch
unsigned int HRrate=255,PRrate=255,RESPvalue=255;
unsigned char VerNo=0x10;
unsigned int disSYST=255, disMEAN=255, disDIAS=255;
unsigned int CUFFvalue=255, NIBPrate=255;
char STvalue=127;
unsigned char SPO2value=255;
unsigned TEMP1value=455;
unsigned TEMP2value=455;
unsigned char *ECGdata[7],*PLETHdata,*RESPdata;
unsigned Edw_cus=0,Rdw_cus=0;	//波形数据写指针
unsigned int  EwaveX=WAVXSTART,  PwaveX=WAVXSTART,  RwaveX=WAVXSTART;
unsigned char far *ECGcache[7];
unsigned char far *ECGcache2[7];
unsigned char *PLETHcache, *PLETHcache2;
unsigned ECGwcus=0;//ECG, PLETH波形数据写cache指针
//unsigned char Ecachefill=0, Pcachefill=0;//ECG, PLETH波形cache满标志
unsigned  keydelay=0, disdelay=0, key_code=0x00;

unsigned char NIBPmin=30, NIBPsec=60;
unsigned char GAPmin=1, GAPsec=60, AlarmTime=10;//gap time=1min, alarm time=10sec;
unsigned char PRINTmin=30, PRINTsec=60;

// bit4=1 允许 [ECG+I] or [PLETH_up]显示
// bit3=1	I,II,III,...aVF,V刷新
// bit2=1 RESP or (PLETH)
// bit1=1 PLETH_low,
// bit0=1 ECG+I		bit0=0 [PLETH_up],
unsigned char ItemAllow=0x17;


//---------单导联--------------------------------
//bit3=0--RESP不显示		bit3=1--RESP显示
//bit2=0--PLETH在ECG+I上		bit2=1--PLETH在低行
//bit1=0--PLETH不显示		bit1=1--PLETH显示
//bit0=0--只准ECG单行显示		bit1=0--允许ECG双行显示
//---------七导联--------------------------------
//bit0=1--I,II,III...V显示
//bit1=1--PLETH显示
//bit2=1--ECG单导联显示
//bit3=1--RESP显示
unsigned char WaveCont=0x0f;

unsigned PLETHWave_row=PLETH_ENDY;


unsigned char *LeadStr2;	//second ECG lead string

//bit0=1 HRPR, bit1=1 ST,   bit2=1 SPO2, bit3=1 SYST,
//bit4=1 DIAS, bit5=1 MEAN, bit6=1 RESP, bit7=1 TEMP1,
//bit8=1 TEMP2,		    bit14=alarm time allow;
//bit15=1 alarm switch is ON
unsigned alarmstatus=0x0000;
unsigned alarmsound=0x0000;


unsigned char MenuTime=0;//菜单时钟计数器

struct time	timer;//当前时间
struct date	dater;//当前日期
struct time	frztime;//冻结时间
struct date	frzdate;//冻结日期
struct time	trdtime;//趋势时间

MonData		FrzData;//冻结时记录的数据


ITEM  *CUR_item=NULL;	//当前菜单标题指针
VMENU *CUR_vmenu=NULL;	//当前值菜单指针
unsigned char CUR_Icus=0, CUR_Vcus=0;//标题、值菜单指针光标


MonData far *DataHand;	//趋势数据数据头

MonData PrtLstBuff[PRTLSTLEN];//打印列表缓冲区
char PrtLstHour[PRTLSTLEN], PrtLstMin[PRTLSTLEN];
unsigned char PrtLstCount=255;  //打印趋势列表计数器
unsigned char PrtLstLen=1;//打印趋势列表长度
unsigned PrtWavCount=255; //if set PrtWavCount 255 stop print, set 0 then begin to print;
unsigned EWavPrtHd, PWavPrtHd;
unsigned char PrtECG_Lead=1;//打印导联

unsigned  Datapoint=0;	//趋势数据取样数据指针
unsigned  DataEndPoint;	//进入趋势数据时的数据尾指针
unsigned  DataStaPoint;	//进入趋势数据时的数据首指针
unsigned  DataCurPoint;	//当前页趋势数据的首行指针
unsigned  char Datafill=0;//趋势数据缓冲满标志

unsigned  char NIBPsave=0;//血压数据已存标志	

#define  AT_ITEM	0	//在标题
#define  AT_VITEM	1	//在值标题
#define  AT_VALUE	2	//在值中
unsigned char ItemValue=AT_ITEM;//在值标题
unsigned SaveCount=0;	//系统设置保存计数器

//WavSpdCount=2, DrawWavCount=3/WavSpdCount=1;
//WavSpdCount=1, DrawWavCount=3/WavSpdCount=3;
//WavSpdCount=4, DrawWavCount=3/WavSpdCount=0;
unsigned char WavSpdCount=2, SamplingCount=1;//波形速度计数器
unsigned char *ECGWavItstr=NULL, *PLETHWavItstr=NULL, *RESPWavItstr=NULL;//PLEHT(up),RESP wave item and COMPany item point

unsigned char hrpr_sound, heartsta=V_HEARTSMALL;
//unsigned char FileName[5];
//int FileHandle;
//----------血压实时数据的头,尾指针-----------
REALTIMEDATA far *RealData_Sta;
//REALTIMEDATA far *RealData_End=NULL;
unsigned RealDataCurrnt=0;
unsigned long RealTimeCount=0;//实时记数以计算两次血压测量中的时间间隔
unsigned long InListCount=0;
unsigned char NoWriteRealData=1;//是否从来没有记录过实时血压数据
unsigned char NIBPListFill=0;//列表满标志
unsigned char IQRmark=0, ScaleAndWave=2;
unsigned char NIBPCheckTure=0;//NIBP Auto check start
unsigned char SpdCtrl=0, SpdCount=0;
unsigned char CenterECGsta=0, CenterRESPscale=0;//中央机的心电状态,呼吸增益
unsigned char FilePoint=0;
#endif

⌨️ 快捷键说明

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