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

📄 userinterface.c

📁 uCOSII在motorala单片机上的移植
💻 C
📖 第 1 页 / 共 5 页
字号:
		{
			case MSG_ENTER:
				loop = FALSE;
				break;
			case MSG_TIME:
				displayEnergyData(itemhead,itemrear,FALSE);
				break;
			default:
				doNothing();
		}
	}
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void displayEnergyData(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll);
*	功能描述:	更新显示电度量数据显示界面;	
*	参数:		itemhead代表一页显示的头一项数据;
*				itemrear代表一页显示的最后一项数据;
*				paintAll表示电度量数据显示界面是否需要被重画;
*	返回值:		没有;
*****************************************************************************************************************
*/
void displayEnergyData(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
	INT8U index;
	INT8U buffer[22];
	
	if(paintAll == TRUE)	// 重画电度量数据显示界面;
	{
		for(index = 0; index < 10; index++)
		{	
			if((index == 0)||(index == 5))
			{
				printString(6,2+index*13,6,13,0,
					powerdataitems[itemhead+index-1],TRUE);
			}
			else
			{
				buffer[0] = '\0';
				strCat(powerdataitems[index],buffer);
				if((index > 0)&&(index < 5))
				{
					strInsert(powerdata[index - 1],buffer,6);
				}
				if((index > 5)&&(index < 10))
				{
					if(energypara[(index - 6) * 2][0] == '-')
					{
						strInsert("--------",buffer,6);
					}
					else
					{
						strInsert(powerdata[index - 2],buffer,6);
					}
				}
				printString(6,2+index*13,6,13,0,buffer,TRUE);
			}
		}
		flushBuffer();
	}
	else
	{				// 更新显示电度量数据显示界面的内容;
		for(index = 0; index < 4; index++)
		{
			printString(42,2+13+index*13,6,13,0,powerdata[index],FALSE);
		}
		for(index = 4; index < 8; index++)
		{
			printString(42,2+26+index*13,6,13,0,powerdata[index],FALSE);
		}
	}
	
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void contactorStateProcess();
*	功能描述:	对开关量状态显示界面的消息进行处理并显示;	
*	参数:		没有;
*	返回值:		没有;
*****************************************************************************************************************
*/
void contactorStateProcess()
{
	INT8U totalitems = 6;
	INT8U itemhead = 1;
	INT8U itemrear = 6;
	INT16U msg;
	INT8U *err;
	BOOLEAN loop = TRUE;
	
	displayContactorState(itemhead,itemrear,TRUE);
	for(;loop == TRUE;)
	{
		msg = getMessage(err);
		switch(msg)
		{
			case MSG_ENTER:
				loop = FALSE;
				break;
			case MSG_TIME:
				displayContactorState(itemhead,itemrear,FALSE);
				break;
			default:
				doNothing();
		}
	}
	
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void displayContactorState(INT8U itemhead,INT8U itemrear,
*					BOOLEAN paintAll);
*	功能描述:	更新显示电度量数据显示界面;	
*	参数:		itemhead代表一页显示的头一项数据;
*				itemrear代表一页显示的最后一项数据;
*				paintAll表示电度量数据显示界面是否需要被重画;
*	返回值:		没有;
*****************************************************************************************************************
*/
void displayContactorState(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
	INT8U index;
	INT8U buffer[22];
	
	if(paintAll == TRUE)	// 重画开关量状态显示界面;
	{
		for(index = 0; index < 6; index++)
		{
			buffer[0] = '\0';
			strCat(contactorstateitems[index],buffer);
			strInsert(contactorstate[index*2],buffer,6);
			strInsert(contactorstate[index*2 + 1],buffer,16);
			printString(6,index*13,6,13,0,buffer,TRUE);
		}
		flushBuffer();
	}
	else
	{		// 更新显示开关量状态显示界面里的项内容;
		for(index = 0; index < 6; index++)
		{
			printString(42,index*13,6,13,0,contactorstate[index],FALSE);
		}
		for(index = 0; index < 6; index++)
		{
			printString(102,index*13,6,13,0,contactorstate[index+6],FALSE);
		}
	}
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void realtimeWaveProcess();
*	功能描述:	对实时波形显示界面的消息进行处理并显示;	
*	参数:		没有;
*	返回值:		没有;
*****************************************************************************************************************
*/
void realtimeWaveProcess()
{
	INT16U msg;
	INT8U *err;
	BOOLEAN loop = TRUE;
	
	displayRealtimeWave();
	for(;loop == TRUE;)
	{
		msg = getMessage(err);
		switch(msg)
		{
			case MSG_RIGHT:
				break;
			case MSG_LEFT:
				break;
			case MSG_ENTER:
				loop = FALSE;
				break;
			default:
				doNothing();
		}
	}
	
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void displayRealtimeWave();
*	功能描述:	更新显示实时波形显示界面的内容;	
*	参数:		没有;
*	返回值:		没有;
*****************************************************************************************************************
*/
void displayRealtimeWave()	
{
	printString(20,70,6,13,0,"Not implemented",TRUE);
	flushBuffer();
	
	return;
}
/*
*****************************************************************************************************************
*		#define EVENTRECORD_NUM			0x08
*		typedef struct{
*			INT8U No[3];
*			INT8U DateAndTime[19];
*			INT8U EventContent[22];
*		}EventRecord;
*		EventRecord OccuredEvent[EVENTRECORD_NUM];
*****************************************************************************************************************
*/
void initOccuredEventRecord()		//	TEST ONLY;
{
	INT8U index;
	INT8U buffer[3];
	INT8U loop;
	
	for(index = 0; index < EVENTRECORD_NUM; index++)
	{
		OccuredEvent[index].No[0] = '\0';
		if(index == 0)
		{
			strCat("01",OccuredEvent[index].No);
		}
		else
		{
			buffer[0] = '\0';
			strCat(OccuredEvent[index-1].No,buffer);
			if(buffer[1] == '9')
			{
				buffer[0]++;
				buffer[1] = '0';
			}
			else
			{
				buffer[1]++;
			}
			strCat(buffer,OccuredEvent[index].No);
		}
		OccuredEvent[index].DateAndTime[0] = '\0';
		strCat("05-09 07:56:55.294",OccuredEvent[index].DateAndTime);
		OccuredEvent[index].EventContent[0] = '\0';
		strCat("控制电源失电",OccuredEvent[index].EventContent);
	}
	
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void eventRecordProcess();
*	功能描述:	对事件记录显示界面的消息进行处理并显示;	
*	参数:		没有;
*	返回值:		没有;
*	使用变量:	#define EVENTRECORD_NUM			0x08
*				typedef struct{
*					INT8U No[3];
*					INT8U DateAndTime[19];
*					INT8U EventContent[22];
*				}EventRecord;
*				EventRecord OccuredEvent[EVENTRECORD_NUM];
*****************************************************************************************************************
*/
void eventRecordProcess()
{
	INT16U msg;
	INT8U *err;
	BOOLEAN loop = TRUE;
	INT8U itemhead = 1;
	INT8U itemrear = 4;
	
	displayEventRecord(itemhead,itemrear,TRUE);
	for(;loop == TRUE;)
	{
		msg = getMessage(err);
		switch(msg)
		{
			case MSG_RIGHT:
				if((itemhead != (EVENTRECORD_NUM - 3))&&
					(itemrear != EVENTRECORD_NUM))
				{
					itemhead += 4;
					itemrear += 4;
					displayEventRecord(itemhead,itemrear,TRUE);
				}
				break;
			case MSG_LEFT:
				if((itemhead != 1)&&(itemrear != 4))
				{
					itemhead -= 4;
					itemrear -= 4;
					displayEventRecord(itemhead,itemrear,TRUE);
				}
				break;
			case MSG_ENTER:
				loop = FALSE;
				break;
			default:
				doNothing();
		}
	}
	
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void displayEventRecord(INT8U itemhead,INT8U itemrear,
*					BOOLEAN paintAll);
*	功能描述:	更新显示事件记录显示界面的内容;	
*	参数:		没有;
*	返回值:		没有;
*	使用变量:	#define EVENTRECORD_NUM			0x08
*				typedef struct{
*					INT8U No[3];
*					INT8U DateAndTime[19];
*					INT8U EventContent[22];
*				}EventRecord;
*				EventRecord OccuredEvent[EVENTRECORD_NUM];
*****************************************************************************************************************
*/
void displayEventRecord(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
	INT8U index;
	INT8U buffer[22];
	
	if(paintAll == TRUE)
	{
		for(index = 0; index < 4; index++)
		{
			buffer[0] = '\0';
			strCat(OccuredEvent[itemhead+index-1].No,buffer);
			strCat(" ",buffer);
			strCat(OccuredEvent[itemhead+index-1].DateAndTime,buffer);
			printString(0,index*39+2,6,13,0,buffer,TRUE);
			printString(0,index*39+2+13,6,13,0,
				OccuredEvent[itemhead+index-1].EventContent,TRUE);
			printString(0,index*39+2+26,6,13,0,"测试",TRUE);		//
		}
		flushBuffer();
		drawHorizLine(0,2+13*3,128,0xFF);
		drawHorizLine(0,2+13*6,128,0xFF);
		drawHorizLine(0,2+13*9,128,0xFF);
	}
	
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void initpftable();
*	功能描述:	检查配置的保护功能,并把相应的信息(指针和每个保护功能对应的选项)
*				放入到数组pftable中;	
*	参数:		没有;
*	返回值:		没有;
*	使用变量:	#define PROTECTFUNC_NUM		0x13
*				typedef struct{
*				INT8U (*field)[22];
*				INT8U (*data)[7];
*				INT8U items;
*				}PFT;
*				PFT pftable[PROTECTFUNC_NUM];
*	参考变量:	INT8U protectivefunction[19][4];
*****************************************************************************************************************
*/
void initpftable()
{
	INT8U index = 0;
	
	if(protectivefunction[0][0] != '-')
	{
		pftable[index].field = DLSD;
		pftable[index].data = DLSDp;
		pftable[index].items = 5;
		index++;
	}
	if(protectivefunction[1][0] != '-')
	{
		pftable[index].field = XSDLSD;
		pftable[index].data = XSDLSDp;
		pftable[index].items = 6;
		index++;
	}
	if(protectivefunction[2][0] != '-')
	{
		pftable[index].field = DSXGL;
		pftable[index].data = DSXGLp;
		pftable[index].items = 8;
		index++;
	}
	if(protectivefunction[3][0] != '-')
	{
		pftable[index].field = FSXGL;
		pftable[index].data = FSXGLp;
		pftable[index].items = 4;
		index++;
	}
	if(protectivefunction[4][0] != '-')
	{
		pftable[index].field = GFH;
		pftable[index].data = GFHp;
		pftable[index].items = 3;
		index++;
	}
	if(protectivefunction[5][0] != '-')
	{
		pftable[index].field = FXDL;
		pftable[index].data = FXDLp;
		pftable[index].items = 3;
		index++;
	}
	if(protectivefunction[6][0] != '-')
	{
		pftable[index].field = LXGL1;
		pftable[index].data = LXGL1p;
		pftable[index].items = 4;
		index++;
	}
	if(protectivefunction[7][0] != '-')
	{
		pftable[index].field = LXGL2;
		pftable[index].data = LXGL2p;
		pftable[index].items = 4;
		index++;
	}
	if(protectivefunction[8][0] != '-')
	{
		pftable[index].field = LXGL3;
		pftable[index].data = LXGL3p;
		pftable[index].items = 4;
		index++;
	}
	if(protectivefunction[9][0] != '-')
	{
		pftable[index].field = DXJD;
		pftable[index].data = DXJDp;
		pftable[index].items = 4;
		index++;
	}
	if(protectivefunction[10][0] != '-')
	{
		pftable[index].field = GDY;
		pftable[index].data = GDYp;
		pftable[index].items = 3;
		index++;
	}
	if(protectivefunction[11][0] != '-')
	{
		pftable[index].field = DDY;
		pftable[index].data = DDYp;
		pftable[index].items = 3;
		index++;
	}
	if(protectivefunction[12][0] != '-')
	{
		pftable[index].field = SY;
		pftable[index].data = SYp;
		pftable[index].items = 3;
		index++;
	}
	if(protectivefunction[13][0] != '-')
	{
		pftable[index].field = FXDY;
		pftable[index].data = FXDYp;
		pftable[index].items = 3;
		index++;
	}
	if(protectivefunction[14][0] != '-')
	{
		pftable[index].field = LXDY;
		pftable[index].data = LXDYp;
		pftable[index].items = 3;
		index++;
	}
	if(protectivefunction[15][0] != '-')
	{
		pftable[index].field = FHGL;
		pftable[index].data = FHGLp;
		pftable[index].items = 7;
		index++;
	}
	if(protectivefunction[16][0] != '-')
	{
		pftable[index].field = DZJZ;
		pftable[index].data = DZJZp;
		pftable[index].items = 7;
		index++;
	}

⌨️ 快捷键说明

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