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

📄 userinterface.c

📁 uCOSII在motorala单片机上的移植
💻 C
📖 第 1 页 / 共 5 页
字号:
		}
	}
	
	strCopy("ALM",testinfor[0]);
	strCopy("  0",testinfor[1]);
	strCopy("  0",testinfor[2]);
	strCopy(" OK",testinfor[3]);
	strCopy(" OK",testinfor[4]);
	strCopy(" OK",testinfor[5]);
	strCopy(" OK",testinfor[6]);
	strCopy("YES",testinfor[7]);
	strCopy("YES",testinfor[8]);
	strCopy("YES",testinfor[9]);
	
	for(index = 0; index < 11; index++)
	{
		if(index == 0) strCopy("CDMP341",selfcheckinfor[0]);
		if(index == 1) strCopy("V1.00",selfcheckinfor[1]);
		if((index > 1) && (index < 11)) strCopy("  OK",selfcheckinfor[index]);
	}

	strCopy("    1",linepara[0]);
	strCopy("   5k",linepara[1]);
	strCopy("  3CT",linepara[2]);
	strCopy("  Y/Y",linepara[3]);
	strCopy(" 9040",linepara[4]);
	strCopy(" 8100",linepara[5]);
	strCopy("   ON",linepara[6]);
	strCopy("   ON",linepara[7]);
	strCopy("   ON",linepara[8]);
	strCopy("   ON",linepara[9]);
	strCopy("  KH1",linepara[10]);
	strCopy("  KH2",linepara[11]);
	strCopy("MODE1",linepara[12]);
	
	strCopy("IN01",energypara[0]);
	strCopy(" 100",energypara[1]);
	strCopy("IN02",energypara[2]);
	strCopy(" 100",energypara[3]);
	strCopy("IN03",energypara[4]);
	strCopy(" 100",energypara[5]);
	strCopy("IN04",energypara[6]);
	strCopy(" 100",energypara[7]);
	
	for(index = 0; index < 12; index++)
	{
		strCopy("1.0000",preciseadjustcoef[index]);
	}

	for(index = 0; index < 19; index++)
	{
		strCopy("---",protectivefunction[index]);
	}
	
	return;
} 
/*
*****************************************************************************************************************
*	函数名称:	void taskDisplayProcess(void *pdata);
*	功能描述:	对液晶显示界面的消息进行处理,并调用显示函数displayMainWnd()对显
*				示界面进行更新;	
*	参数:		pdata是无类型的数据指针;
*	返回值:		没有;
*****************************************************************************************************************
*/
void mainWndProcess(void)
{
	INT8U totalitems = 15;			
	INT8U itemselected = 1;		// 默认方式下第一项被选中;
	INT8U itemhead = 1;
	INT8U itemrear = 12;
	INT16U msg;
	INT8U *err = 0;
	
	displayMainWnd(itemselected, itemhead,itemrear,MSG_NONE,TRUE);
	for(;;)
	{
		msg = getMessage(err);
		switch(msg)
		{
			case MSG_RIGHT:
				if(itemselected != totalitems)	// 判断被选择项是否是所有项中最后一项;
				{
					itemselected++;
					if(itemselected > itemrear)
					{
						itemhead++;
						itemrear++;
						displayMainWnd(itemselected,itemhead,itemrear,MSG_RIGHT,TRUE);
					}
					else
					{
						displayMainWnd(itemselected,itemhead,itemrear,MSG_RIGHT,FALSE);
					}
				}
				break;
			case MSG_LEFT:
				if(itemselected != 1)		// 判断被选项是否是所有项中的第一项;
				{
					itemselected--;
					if(itemselected < itemhead)
					{
						itemhead--;
						itemrear--;
						displayMainWnd(itemselected,itemhead,itemrear,MSG_LEFT,TRUE);
					}
					else
					{
						displayMainWnd(itemselected,itemhead,itemrear,MSG_LEFT,FALSE);
					}
				}
				break;
			case MSG_ENTER:
				switch(itemselected)
				{
					case 0x01:
						systemDiagramProcess();	// 进入主接线图显示界面处理部分;
						break;
					case 0x02:
						highsideDataProcess();		// 进入一次测量数据显示界面处理部分;
						break;
					case 0x03:
						lowsideDataProcess();		// 进入二次测量数据显示界面处理部分;
						break;
					case 0x04:
						energyDataProcess();		// 进入电度量数据显示界面处理部分;
						break;
					case 0x05:
						contactorStateProcess();	// 进入开关量状态显示界面处理部分;
						break;
					case 0x06:
						realtimeWaveProcess();	// 进入实时波形显示界面处理部分;
						break;
					case 0x07:
						eventRecordProcess();		// 进入事件记录显示界面处理部分;
						break;
					case 0x08:
						settingsProcess();		// 进入保护定值显示界面处理部分;
						break;
					case 0x09:
						coordinationLogicProcess();	//进入梯形图逻辑显示界面处理部分;
						break;
					case 0x0A:
						breakerStatisticInforProcess();	// 进入断路器统计信息显示界面处理部分;
						break;
					case 0x0B:
						testInforProcess();			// 进入调试信息显示界面处理部分;
						break;
					case 0x0C:
						selfCheckProcess();			// 进入自检信息显示界面处理部分;
						break;
					case 0x0D:
						deviceParaProcess();		// 进入设备参数显示界面处理部分;
						break;
					case 0x0E:
						systemSettingProcess();	// 进入系统设置显示界面处理部分;
						break;
					case 0x0F:
						contrastAdjustProcess();	// 进入对比度调节显示界面处理部分;
						break;
					default:
						doNothing();
				}
				displayMainWnd(itemselected, itemhead,	//重画主界面显示部分;
					itemrear,MSG_NONE,TRUE);
				break;
			default:
				doNothing();
		}
	}
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void displayMainWnd(INT8U itemselected,INT8U itemhead,INT8U itemrear,
*					INT16U msg, BOOLEAN paintAll)	
*	功能描述:	更新显示液晶显示的主界面;	
*	参数:		itemselected用户当前选中的数据项,它的值在itemhead和itemrear之间;
*				itemhead一页显示当中最上面的一项在所有项中的位置;
*				itemrear一页显示当中最下面的一项在所有项中的位置;
*				msg表明是在什么消息的发生导致要显示当前项的;
*				paitAll决定是否要重新显示当前页面的所有内容;
*	返回值:		没有;
*****************************************************************************************************************
*/
void displayMainWnd(INT8U itemselected,INT8U itemhead,INT8U itemrear,
	INT16U msg, BOOLEAN paintAll)	
{
	INT8U index;
	
	if(paintAll == TRUE)		// 判断主界面是否需要被重画;
	{
		for(index = 0; index < 12; index++)
		{
			if((index + itemhead) == itemselected)
			{
				printString(0,2+index*13,6,13,DISPREVERSE,	// 反色显示被选中项;
					mainwnditems[index + itemhead - 1],TRUE);
			}
			else
			{
				printString(0,2+index*13,6,13,0,
					mainwnditems[index + itemhead - 1],TRUE);
			}
		}
		flushBuffer();
	}
	else
	{		// 主界面不需要被重画,重画需要被更新的部分;
		if(msg == MSG_RIGHT)
		{
			printString(0,2+(itemselected - itemhead - 1)*13,6,13,0,
				mainwnditems[itemselected-2],FALSE);
		}
		if(msg == MSG_LEFT)
		{
			printString(0,2+(itemselected - itemhead + 1)*13,6,13,0,
				mainwnditems[itemselected],FALSE);
		}
		printString(0,2+(itemselected - itemhead)*13,6,13,DISPREVERSE,
				mainwnditems[itemselected-1],FALSE);
	}
			
	return;
}	
/*
*****************************************************************************************************************
*	函数名称:	void systemDiagramProcess();
*	功能描述:	对主接线图显示界面的消息进行处理并显示;	
*	参数:		没有;
*	返回值:		没有;
*****************************************************************************************************************
*/
void systemDiagramProcess()
{
	INT16U msg;
	INT8U *err;
	BOOLEAN loop = TRUE;
	
	displaySystemDiagram();
	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 displaySystemDiagram();
*	功能描述:	更新显示主接线图显示界面;	
*	参数:		没有;
*	返回值:		没有;
*****************************************************************************************************************
*/
void displaySystemDiagram()
{
	printString(20,70,6,13,0,"Not implemented",TRUE);
	flushBuffer();
	return;
}	
/*
*****************************************************************************************************************
*	函数名称:	void highsideDataProcess();
*	功能描述:	对一次测量数据显示界面的消息进行处理并显示;	
*	参数:		没有;
*	返回值:		没有;
*****************************************************************************************************************
*/
void highsideDataProcess()
{
	INT8U totalitems = 13;
	INT8U itemhead = 1;
	INT8U itemrear = 12;
	INT16U msg;
	INT8U *err;
	BOOLEAN loop = TRUE;
	
	displayHighsideData(itemhead,itemrear,TRUE);
	for(;loop == TRUE;)
	{
		msg = getMessage(err);
		switch(msg)
		{
			case MSG_RIGHT:
				if((itemhead == 1)&&(itemrear == 12))	//判断是否已经显示了第二页;
				{
					itemhead = 13;
					itemrear = 13;
					displayHighsideData(itemhead,itemrear,TRUE);
				}
				break;
			case MSG_LEFT:							
				if((itemhead == 13)&&(itemrear == 13))	// 判断是否已经显示了第一页;
				{
					itemhead = 1;
					itemrear = 12;
					displayHighsideData(itemhead,itemrear,TRUE);
				}
				break;
			case MSG_ENTER:
				loop = FALSE;
				break;
			case MSG_TIME:
				displayHighsideData(itemhead,itemrear,FALSE);
				break;
			default:
				doNothing();
		}
	}
	
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void displayHighsideData(INT8U itemhead,INT8U itemrear,
*					BOOLEAN paintAll);
*	功能描述:	更新显示一次测量数据的显示界面;	
*	参数:		itemhead代表一页显示的头一项数据;
*				itemrear代表一页显示的最后一项数据;
*				paintAll决定显示的界面是否需要重画;
*	返回值:		没有;
*****************************************************************************************************************
*/
void displayHighsideData(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
	INT8U index;
	INT8U buffer[22];
	
	if(paintAll == TRUE)	// 显示界面需要被重画;
	{
		for(index = 0; index < 12; index++)
		{
			if((itemhead+index) <= itemrear)
			{
				buffer[0] = '\0';
				strCat(highsidedataitems[itemhead + index - 1], buffer);
				strInsert(highsidedata[itemhead + index - 1], buffer, 6);
				printString(12,2+index*13,6,13,0,buffer,TRUE);
			}
		}
		flushBuffer();	//将写入缓冲区的数据写入到液晶里;
	}
	else
	{				// 刷新被显示项的内容;
		for(index = 0; index < 12; index++)
		{
			if((itemhead+index) <= itemrear)
			{
				printString(42,2+index*13,6,13,0,highsidedata[itemhead+index-1],FALSE);
			}
		}
	}
	
	return;
}	
/*
*****************************************************************************************************************
*	函数名称:	void lowsideDataProcess();
*	功能描述:	对二次测量数据显示界面的消息进行处理并显示;	
*	参数:		没有;
*	返回值:		没有;
*****************************************************************************************************************
*/
void lowsideDataProcess()
{
	INT8U totalitems = 18;
	INT8U itemhead = 1;
	INT8U itemrear = 12;
	INT16U msg;
	INT8U *err;
	BOOLEAN loop = TRUE;
	
	displayLowsideData(itemhead,itemrear,TRUE);
	for(;loop == TRUE;)
	{
		msg = getMessage(err);
		switch(msg)
		{
			case MSG_RIGHT:
				if((itemhead == 1)&&(itemrear == 12))	// 判断第二页面是否已显示;
				{
					itemhead = 13;
					itemrear = 18;
					displayLowsideData(itemhead,itemrear,TRUE);
				}
				break;
			case MSG_LEFT:
				if((itemhead == 13)&&(itemrear == 18))	// 判断第一页是否已显示
				{
					itemhead = 1;
					itemrear = 12;
					displayLowsideData(itemhead,itemrear,TRUE);
				}
				break;
			case MSG_ENTER:
				loop = FALSE;
				break;
			case MSG_TIME:
				displayLowsideData(itemhead,itemrear,FALSE);
				break;
			default:
				doNothing();
		}
	}
	
	return;
}
/*
*****************************************************************************************************************
*	函数名称:	void displayLowsideData(INT8U itemhead,INT8U itemrear,
*					BOOLEAN paintAll);
*	功能描述:	更新显示二次测量数据的显示界面;	
*	参数:		itemhead代表一页显示的头一项数据;
*				itemrear代表一页显示的最后一项数据;
*				paintAll决定显示的界面是否需要重画;
*	返回值:		没有;
*****************************************************************************************************************
*/
void displayLowsideData(INT8U itemhead,INT8U itemrear,BOOLEAN paintAll)
{
	INT8U index;
	INT8U buffer[22];
	
	if(paintAll == TRUE)		// 重画显示界面;
	{
		for(index = 0; index < 12; index++)
		{
			if((itemhead+index) <= itemrear)
			{
				buffer[0] = '\0';
				strCat(lowsidedataitems[itemhead + index - 1],buffer);
				strInsert(lowsidedata[itemhead + index - 1], buffer,7);
				printString(12,2+index*13,6,13,0,buffer,TRUE);
			}
		}
		flushBuffer();		// 将写入缓冲区的数据写入到液晶里;
	}
	else
	{			// 刷新显示项的数据;
		for(index = 0; index < 12; index++)
		{
			if((itemhead+index) <= itemrear)
			{
				printString(48,2+index*13,6,13,0,
					lowsidedata[itemhead+index-1],FALSE);
			}
		}
	}
	
	return;
}	
/*
*****************************************************************************************************************
*	函数名称:	void energyDataProcess();
*	功能描述:	对电度量数据显示界面的消息进行处理并显示;	
*	参数:		没有;
*	返回值:		没有;
*****************************************************************************************************************
*/
void energyDataProcess()
{
	INT8U totalitems = 10;
	INT8U itemhead = 1;
	INT8U itemrear = 10;
	INT16U msg;
	INT8U *err;
	BOOLEAN loop = TRUE;
	
	displayEnergyData(itemhead,itemrear,TRUE);
	for(;loop == TRUE;)
	{
		msg = getMessage(err);
		switch(msg)

⌨️ 快捷键说明

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