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

📄 menu.c

📁 这个是单片机4200的ui程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		curtime = TaskGetSystemMilliTicks();
		if((curtime - gUIMain.LastPressTime)>2*1000)
			newnumber = TRUE;
		gUIMain.LastPressTime = curtime;	
		}
	
	if(!newnumber)
		{
		utemp = utemp*10 + num;
		if(MAX_COPYNUM<utemp)
			if(modechange == TRUE)
				{
				gUIMain.UIstate = QUICKFAX;
				CharSymbolTableInitial(chSymTbl, INPUT_NUM);
				inputbuf[0] = chSymTbl[utemp/100].ch[0];
				inputbuf[1] = chSymTbl[utemp/10-(utemp/100)*10].ch[0];
				//inputbuf[2] = chSymTbl[utemp%10].ch[0];
				inputindex =2;
				curindex = 9;
				setconfirm= TRUE;
				presscount = 0;
//				EditorCursorShow(curindex);
				EditorDialInput2(num);
				return;
				}	
		}
	else
		{
		utemp = num;
		newnumber = FALSE;
		}
	strcpy(firstlinebuf,GetMsgData(DISP_N_O_C));
	sprintf(secondlinebuf,"[1-99]>%d",utemp);
}

void EditorMultiInput3(Uint8 num,P_MAIN_MENU_LIST menu)
{
	if(!newnumber)
		{
		ut2 = ut2*10 + num;
		if(max<ut2*10)			
			newnumber = TRUE;
		}
	else
		{
		ut2 = num;
		if(max>=ut2*10)
			newnumber = FALSE;
		}
	sprintf(secondlinebuf,"[%d-%d]>%d",menu->item_min,menu->item_max,ut2);
}

void EditorDateTimeInput(Uint8 num,Uint8 step)
{
	switch(step)
		{
		case 0:
			datetimetmp.Month = datetimetmp.Month%10 + num*10;
			break;
		case 1:
			datetimetmp.Month = (datetimetmp.Month/10)*10 + num;
			break;
		case 2:
			datetimetmp.Date= datetimetmp.Date%10 +num*10;
			break;
		case 3:
			datetimetmp.Date = (datetimetmp.Date/10)*10 + num;
			break;
		case 4:
			datetimetmp.Year = datetimetmp.Year%10 + num*10;
			break;
		case 5:
			datetimetmp.Year = (datetimetmp.Year/10)*10 +num;
			break;
		case 6:
			if(gMFPSettingNvram.Common.ClockMode == 1)
				datetimetmp.Hour = datetimetmp.Hour%10 + num*10;
			else
				{
				if(ampm == 0)
					datetimetmp.Hour = datetimetmp.Hour%10 + num*10;
				else
					datetimetmp.Hour = (datetimetmp.Hour-12)%10 + num*10 +12;
				}
			break;
		case 7:
			if(gMFPSettingNvram.Common.ClockMode == 1)
				datetimetmp.Hour = (datetimetmp.Hour/10)*10 + num;
			else
				{
				if(ampm == 0)
					datetimetmp.Hour = (datetimetmp.Hour/10)*10 + num;
				else
					datetimetmp.Hour = (datetimetmp.Hour/10)*10 + num +2;
				}
			break;
		case 8:
			datetimetmp.Minute = datetimetmp.Minute%10 + num*10;
			break;
		case 9:
			datetimetmp.Minute = (datetimetmp.Minute/10)*10 +num;
			break;
		case 10:
			ampm = (ampm?0:1);
			if(ampm == 0)
				datetimetmp.Hour = datetimetmp.Hour -12;
			else
				datetimetmp.Hour = datetimetmp.Hour + 12;
			break;
		default:
			break;
		}
	DateTimeDisplay(datetimetmp);
}

void StandbyMode(Uint8 action)
{
	Uint8 index,num;
	P_MAIN_MENU_LIST currentmenu;
	P_MAIN_MENU_LIST pml;
	char * buf;
	Uint8 AlignL1,AlignL2;
	
	currentmenu = gpMenudata ->ml + gpMenudata ->mlIndex;
	AlignL1 = currentmenu->firstline;
	AlignL2 = currentmenu->secondline;	
	switch(action)
		{
		case PANEL_ARROWRIGHT:
			strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));//need to check toner to confirm the titleID
			strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
			break;
		case PANEL_ARROWLEFT:
			strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));//need to check toner to confirm the titleID
			strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
			break;
		case PANEL_SELECT:
			index = gpMenudata->mlIndex;
			switch(index)
				{
				case 0:
					gUIMain.UIstate = COPY_IDLE;
					utemp= 1;
					newnumber = TRUE;
					num = gUIMain.copysetting.Copynumber;
					strcpy(buf, GetMsgData(Ms_PaperSize2[gUIMain.papersetting.Papersize]));
					sprintf(firstlinebuf,"C:%2d  %s %3d%%",num,buf, gUIMain.copysetting.Zoomratio);
					pml = (P_MAIN_MENU_LIST)currentmenu->pNextMenuList;
					strcpy(secondlinebuf,GetMsgData(pml->dispID));
					break;
				case 1:
					gUIMain.UIstate = FAX_IDLE;
//					setconfirm= TRUE;
					presscount = 0;
					pml = (P_MAIN_MENU_LIST)currentmenu->pNextMenuList;
					strcpy(firstlinebuf,GetMsgData(pml->titleID));
					strcpy(secondlinebuf,GetMsgData(pml->dispID));

					LCDDisplayClear();
					DisplayLCD(0, firstlinebuf, AlignL1,FALSE);
					DisplayLCD(1, secondlinebuf, AlignL2,TRUE);
					break;
				case 2:
					gUIMain.UIstate = MENU;
					pml = (P_MAIN_MENU_LIST)currentmenu->pNextMenuList;
					strcpy(firstlinebuf,GetMsgData(pml->titleID));
					strcpy(secondlinebuf,GetMsgData(pml->dispID));
					break;
				case 3:
					gUIMain.UIstate = SCAN_IDLE;
//					setconfirm = TRUE;
//					utemp=0;
					pml = (P_MAIN_MENU_LIST)currentmenu->pNextMenuList;
					strcpy(firstlinebuf,GetMsgData(pml->titleID));
					strcpy(secondlinebuf,GetMsgData(pml->dispID));
					break;
				default:
					break;
				}
			break;
		case PANEL_BACK:
			setconfirm= FALSE;
			newnumber = TRUE;
			modechange = FALSE;
			utemp = 0;
			memset(inputbuf,0,strlen(inputbuf));
			strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));//need to check toner to confirm the titleID
			strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
			break;
		case PANEL_NUM0://two number copy num and three number fax num
			EditorMultiInput2(PANEL_NUM0);
			break;
		case PANEL_NUM1:
			EditorMultiInput2(PANEL_NUM1);
			break;
		case PANEL_NUM2:
			EditorMultiInput2(PANEL_NUM2);
			break;
		case PANEL_NUM3:
			EditorMultiInput2(PANEL_NUM3);
			break;
		case PANEL_NUM4:
			EditorMultiInput2(PANEL_NUM4);
			break;
		case PANEL_NUM5:
			EditorMultiInput2(PANEL_NUM5);
			break;
		case PANEL_NUM6:
			EditorMultiInput2(PANEL_NUM6);
			break;
		case PANEL_NUM7:
			EditorMultiInput2(PANEL_NUM7);
			break;
		case PANEL_NUM8:
			EditorMultiInput2(PANEL_NUM8);
			break;
		case PANEL_NUM9:
			EditorMultiInput2(PANEL_NUM9);
			break;
		default:
			break;		
		}
}

void CopyIdleMode(Uint8 action)
{
	P_MAIN_MENU_LIST currentmenu;
//	char * buf;	
	currentmenu = gpMenudata ->ml + gpMenudata ->mlIndex;

	switch(currentmenu->type)
		{
		case MULTI:
			MultiType(action);
			break;
		case STRING:
			StringType(action);
			break;
		case GRAPHIC:
			GraphicType(action);
			break;
		default:
			break;
		}
}

void ScanIdleMode(Uint8 action)
{
	P_MAIN_MENU_LIST currentmenu;
	
	currentmenu = gpMenudata ->ml + gpMenudata ->mlIndex;

	switch(currentmenu->type)
		{
		case STRING:
			StringType(action);
		default:
			break;
		}
}

void MenuMode(Uint8 action)
{
//	char buf[42];
	P_MAIN_MENU_LIST currentmenu;
	Uint8 AlignL1,AlignL2;

	currentmenu = gpMenudata ->ml + gpMenudata ->mlIndex;

	AlignL1 = currentmenu->firstline;
	AlignL2 = currentmenu->secondline;

	switch(currentmenu->type)
		{
		case MULTI:
			MultiType(action);
			break;
		case STRING:
			if(currentmenu->dispID != DISP_CLR_DRUM&&currentmenu->dispID != DISP_RESET_DC_CNT)
				StringType(action);
			else
				{
				ConfirmString(action);
				return;
				}
//			sprintf(buf,"%-20s\n%-20s",firstlinebuf,secondlinebuf);
//			DisplayLCD(0, buf, strlen(buf));
			if(currentmenu->pNextMenuList != NULL&&currentmenu->titleID!= DISP_ZOOM)
				currentmenu = currentmenu->pNextMenuList;
			if(currentmenu->type!= STRING)
				{
				LCDDisplayClear();		
				DisplayLCD(0, firstlinebuf, AlignL1,FALSE);
				DisplayLCD(1, secondlinebuf, AlignL2,TRUE);
				}
			break;
		case GRAPHIC:
			GraphicType(action);
			break;
		case DIALINPUT:
			DialInputType(action);
			break;
		case CHARACTERINPUT:
			CharInputType(action);
			break;
		case DATETIMEINPUT:
			DateTimeType(action);
			break;
		case IDINPUT:
			IDInputType(action);
			break;
		case DIALTEST:
			DialTestType(action);
			break;
		default:
			break;
		}
}

void	MultiType(Uint8 action)
{
	Uint8 num;
	P_MAIN_MENU_LIST currentmenu;
	char* buf;

	currentmenu = gpMenudata ->ml + gpMenudata ->mlIndex;

	switch(action)
		{
		case PANEL_ARROWRIGHT:
			if(setconfirm == TRUE)
				{
				udefault++;
				if( udefault>max)
					udefault = min;							
				newnumber = TRUE;
				strcpy(firstlinebuf,GetMsgData(currentmenu->dispID));
				sprintf(secondlinebuf,"[%d-%d]>%d",currentmenu->item_min,currentmenu->item_max,udefault);
				}
			else
				{
				if(currentmenu->titleID == DISP_COPY)
					{
					num = gUIMain.copysetting.Copynumber;
					strcpy(buf, GetMsgData(Ms_PaperSize2[gUIMain.papersetting.Papersize]));
					sprintf(firstlinebuf,"C:%2d  %s %3d%%",num,buf,gUIMain.copysetting.Zoomratio);
					strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
					}
				else
					{
					strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
					strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
					}
				}
			break;
		case PANEL_ARROWLEFT:
			if(setconfirm == TRUE)
				{
				if( udefault==min)
					udefault = max;
				else
					udefault--;							
				newnumber = TRUE;
				strcpy(firstlinebuf,GetMsgData(currentmenu->dispID));
				sprintf(secondlinebuf,"[%d-%d]>%d",currentmenu->item_min,currentmenu->item_max,udefault);
				}
			else	
				{
				if(currentmenu->titleID == DISP_COPY)
					{
					num = gUIMain.copysetting.Copynumber;
					strcpy(buf, GetMsgData(Ms_PaperSize2[gUIMain.papersetting.Papersize]));
					sprintf(firstlinebuf,"C:%2d  %s %3d%%",num,buf,gUIMain.copysetting.Zoomratio);
					strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
					}
				else
					{
					strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
					strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
					}
				}
			break;
		case PANEL_SELECT:
			if(currentmenu->pNextMenuList != NULL)
				{
				currentmenu = currentmenu->pNextMenuList;
				strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
				strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
				}
			else if(setconfirm == FALSE)
				{				
				min = currentmenu->item_min;
				max = currentmenu->item_max;
				if(max == 0)
					return;
				else
					{
					if(max<256)
						udefault = *(Uint8*)val[currentmenu->item_userdefault];
					else
						udefault = *(Uint16*)val[currentmenu->item_userdefault];
//					utemp = udefault;
					
					strcpy(firstlinebuf,GetMsgData(currentmenu->dispID));
					sprintf(secondlinebuf,"[%d-%d]>%d",currentmenu->item_min,currentmenu->item_max,udefault);
					setconfirm = TRUE;
					}
				gUIMain.LastPressTime = TaskGetSystemMilliTicks();
				}
			else
				{
/*				if(udefault>max)
					udefault = max;
				else*/
				if(udefault<min||udefault>max)
					{
					strcpy(firstlinebuf,GetMsgData(DISP_ENTER_AGAIN));
					LCDDisplayClear();
					copyparaerr = TRUE;
					DisplayLCD(0, firstlinebuf, MIDDLE,FALSE);
					NU_Sleep(400);

					strcpy(firstlinebuf,GetMsgData(currentmenu->dispID));
					sprintf(secondlinebuf,"[%d-%d]>%d",currentmenu->item_min,currentmenu->item_max,udefault);
					return;
					}
				
				strcpy(firstlinebuf,GetMsgData(DISP_SAVED));
				
				LCDDisplayClear();
				DisplayLCD(0, firstlinebuf, MIDDLE,FALSE);
				
				if(max<256)
					*(Uint8*)val[currentmenu->item_userdefault] = udefault;
				else
					*(Uint16*)val[currentmenu->item_userdefault] = udefault;

				if(currentmenu->item_userdefault > Val_autoreduction&&currentmenu->item_userdefault<Val_dialnumber)
					{
					UpdateData(currentmenu->item_userdefault);
					FunFAX_ParamSelectAPI();
					}
				else if(currentmenu->item_userdefault >= Val_FM_rxlevel&&currentmenu->item_userdefault<=Val_FM_symbolrate)
					{
					FunFAX_ParamSelectAPI();
					NVFlashDataWrite(FAXMAINTENANCE);
					}
				
				NU_Sleep(400);
				
				if(currentmenu->titleID == DISP_COPY)
				{
					num = gUIMain.copysetting.Copynumber;
					strcpy(buf, GetMsgData(Ms_PaperSize2[gUIMain.papersetting.Papersize]));
					sprintf(firstlinebuf,"C:%2d  %s %3d%%",num,buf,gUIMain.copysetting.Zoomratio);
					strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
				}
				else if(currentmenu->titleID == DISP_ZOOM)

⌨️ 快捷键说明

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