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

📄 uifax.c

📁 这个是单片机4200的ui程序
💻 C
📖 第 1 页 / 共 5 页
字号:
			break;						
		case PANEL_NUM4:
			EditorDialInput2(PANEL_NUM4);
			break;						
		case PANEL_NUM5:
			EditorDialInput2(PANEL_NUM5);
			break;						
		case PANEL_NUM6:
			EditorDialInput2(PANEL_NUM6);
			break;						
		case PANEL_NUM7:
			EditorDialInput2(PANEL_NUM7);
			break;						
		case PANEL_NUM8:
			EditorDialInput2(PANEL_NUM8);
			break;						
		case PANEL_NUM9:
			EditorDialInput2(PANEL_NUM9);
			break;						
		case PANEL_STAR:
			EditorDialInput2(PANEL_STAR);
			break;						
		case PANEL_SHARP:
			EditorDialInput2(PANEL_SHARP);
			break;						
		case PANEL_PAUSE:
			EditorDialInput2(PANEL_PAUSE);
			break;						
		default:
			break;		
		}
//		sprintf(buf,"%-20s\n%-20s",firstlinebuf,secondlinebuf);
//		DisplayLCD(0, buf, strlen(buf));
/*		LCDDisplayClear();
		
		DisplayLCD(0, firstlinebuf, LEFT,FALSE);
		DisplayLCD(1, secondlinebuf, LEFT,FALSE);*/
//		LCDCursorPos(curindex, 0);
}

void MultiDialType(Uint8 action)
{
	if(step == 0||step == 1||step ==2)
		MultiDialInput(action);
	else if(step == 3)
		CharInputType(action);
	else if(step == 4)
		DlyTimeInput(action);
}

void DlyTimeInput(Uint8 action)
{
	static Uint32 datetimedata;
	static time_t datetimedata1;
	static time_t datetimedata2;
	struct tm pp;
	P_MAIN_MENU_LIST currentmenu;
	STATUS status;
	static  Uint8   curStep,stepmax,ampm2;
	Uint8 AlignL1,AlignL2;
	static DateTimeSct	datetimetmp2;

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

	AlignL1 = currentmenu->firstline;
	AlignL2 = currentmenu->secondline;
	
	switch(action)
		{
		case PANEL_ARROWRIGHT:
			if(setconfirm == TRUE)
				{
			       if (curStep < stepmax)     
				   	curStep++;
	        		else                    
					curStep = 0;
			       curindex= GetDlyTimeCursorXPos(curStep);
				}
			else
				{
				strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
				strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
				}
			break;
		case PANEL_ARROWLEFT:
			if(setconfirm == TRUE)
				{
	        		if (curStep > 0)     
					curStep--;
	        		else                    
					curStep = stepmax;
			       curindex = GetDlyTimeCursorXPos(curStep);
				}
			else
				{
				strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
				strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
				}				
			break;
		case PANEL_START:
		case PANEL_SELECT:
			if(setconfirm == FALSE)
				{
				status = NU_Obtain_Semaphore(&gDateTimeSem,NU_NO_SUSPEND);
				if(NU_SUCCESS != status)
					{
					return;
					}
				setconfirm = TRUE;
				curStep = 0;
				if(gMFPSettingNvram.Common.ClockMode == 1)
					stepmax = 3;
				else
					stepmax = 4;
				curindex = GetDlyTimeCursorXPos(curStep);

				//EnableRTCAccess();
				datetimedata = ReadRTC_C();
				status = NU_Release_Semaphore(&gDateTimeSem);
				if(NU_SUCCESS != status)
					{
					return;
					}
				CalDateTimeFormat(datetimedata,&datetime);
				ConvertDateTime2tm(&datetime, &pp);
				datetimedata1 = mktime(&pp);

				memcpy(&datetimetmp, &datetime, sizeof(DateTimeSct));
				memcpy(&datetimetmp2, &datetime, sizeof(DateTimeSct));
				if(datetimetmp.Hour>12)
					ampm = 1;
				else
					ampm = 0;
				ampm2 = ampm;
				DlyTimeDisplay(&datetimetmp,&datetimetmp2,ampm2);
//				LCDCursorOn();
//				strcpy(firstlinebuf, GetMsgData(currentmenu->dispID));
//				strcpy(secondlinebuf, inputbuf);
				}
			else
				{				
				if(DateTimeValid(datetimetmp2))
					{
					setconfirm = FALSE;
					
					ConvertDateTime2tm(&datetimetmp2, &pp);
					datetimedata2 = mktime(&pp);
					//datetimedata2 = CalDateTimeData(&datetimetmp2);
					if(datetimedata2>datetimedata1)
						gMFPSettingNvram.Fax.delayfax.delaytime = datetimedata2;// - datetimedata;
					else
						gMFPSettingNvram.Fax.delayfax.delaytime = datetimedata2 + (24*60*60);// - datetimedata;
//					DisableRTCAccess();
					step = 0;
					LCDCursorOff();
					
					strcpy(firstlinebuf,GetMsgData(DISP_D_ENTRY_OK));
					LCDDisplayClear();
					DisplayLCD(0, firstlinebuf, MIDDLE,FALSE);
					NU_Sleep(500);

					memcpy(&gUIMain.faxsetting.delayfax,&gMFPSettingNvram.Fax.delayfax,sizeof(DELAYFAX));
					UIDoFaxJob(DELAY_DIAL);
					
					strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));						
					strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
					}
				else
					{
					sprintf(firstlinebuf,GetMsgData(DISP_ENTER_AGAIN));
					LCDDisplayClear();
					DisplayLCD(0, firstlinebuf, MIDDLE,FALSE);
					NU_Sleep(500);

					DlyTimeDisplay(&datetimetmp,&datetimetmp2,ampm2);
					}
				}
			break;
		case PANEL_BACK:
			if(setconfirm == TRUE)
				{
				setconfirm = FALSE;
				}
			LCDCursorOff();
			step = 0;
//			DisableRTCAccess();
			strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
			strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
			break;
		case PANEL_NUM0:
			if(setconfirm == TRUE)
				EditorDlyTimeInput(PANEL_NUM0, curStep,&datetimetmp2,ampm2);
			break;
		case PANEL_NUM1:
			if(setconfirm == TRUE)
				EditorDlyTimeInput(PANEL_NUM1, curStep,&datetimetmp2,ampm2);
			break;
		case PANEL_NUM2:
			if(setconfirm == TRUE)
				EditorDlyTimeInput(PANEL_NUM2, curStep,&datetimetmp2,ampm2);
			break;
		case PANEL_NUM3:
			if(setconfirm == TRUE)
				EditorDlyTimeInput(PANEL_NUM3, curStep,&datetimetmp2,ampm2);
			break;
		case PANEL_NUM4:
			if(setconfirm == TRUE)			
				EditorDlyTimeInput(PANEL_NUM4, curStep,&datetimetmp2,ampm2);
			break;
		case PANEL_NUM5:
			if(setconfirm == TRUE)
				EditorDlyTimeInput(PANEL_NUM5, curStep,&datetimetmp2,ampm2);
			break;
		case PANEL_NUM6:
			if(setconfirm == TRUE)
				EditorDlyTimeInput(PANEL_NUM6, curStep,&datetimetmp2,ampm2);
			break;
		case PANEL_NUM7:
			if(setconfirm == TRUE)
				EditorDlyTimeInput(PANEL_NUM7, curStep,&datetimetmp2,ampm2);
			break;
		case PANEL_NUM8:
			if(setconfirm == TRUE)
				EditorDlyTimeInput(PANEL_NUM8, curStep,&datetimetmp2,ampm2);
			break;
		case PANEL_NUM9:
			if(setconfirm == TRUE)
				EditorDlyTimeInput(PANEL_NUM9, curStep,&datetimetmp2,ampm2);
			break;
		default:
			break;		
		}
//		sprintf(buf,"%-20s\n%-20s",firstlinebuf,secondlinebuf);
//		DisplayLCD(0, buf, strlen(buf));
		LCDDisplayClear();
		if(setconfirm != FALSE)
			{
			DisplayLCD(0, firstlinebuf, LEFT,FALSE);
			DisplayLCD(1, secondlinebuf, LEFT,FALSE);
			}
		else
			{
			DisplayLCD(0, firstlinebuf, AlignL1,FALSE);
			DisplayLCD(1, secondlinebuf, AlignL2,TRUE);
			}
		LCDCursorPos((curindex-16),1);
}

void MultiDialInput(Uint8 action)
{
    	char *showbuf;
	char *buftemp;
//	char buf[42];
	Uint8 bufcount;
	P_MAIN_MENU_LIST currentmenu;
	Uint8 AlignL1,AlignL2;

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

	AlignL1 = currentmenu->firstline;
	AlignL2 = currentmenu->secondline;
	
	switch(action)
		{
		case PANEL_ARROWRIGHT:
			if(setconfirm == TRUE)
				{
				bufcount = strlen(inputbuf);
				if(inputindex == bufcount)
					break;
				else
					{
					inputindex++;
					if(curindex <LCD_LINE_MAX-1)
						EditorCursorPlus();//curindex++
					}
				if(inputindex>=LCD_LINE_MAX-1)
					showbuf= inputbuf+inputindex-(LCD_LINE_MAX-1);
				else
					showbuf = inputbuf;
				
				strcpy(buftemp,GetMsgData(DISP_FAX));				
				sprintf(firstlinebuf,"%s[%d]:",buftemp,dialcount+1);
				strcpy(secondlinebuf,showbuf);
				}
			else
				{
				if(step == 0)
					{
					strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
					strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
					}
				else
					{
					udefault++;
					if( udefault>max)
						udefault = min;						
					strcpy(firstlinebuf,GetMsgData(DISP_ANOTHER_NO));
					strcpy(secondlinebuf,GetMsgData(currentmenu->itemchoose_addr[udefault]));
					}
				}
			break;
		case PANEL_ARROWLEFT:
			if(setconfirm == TRUE)
				{
				bufcount = strlen(inputbuf);						
				if(inputindex>0)
					{
					inputindex--;
					if(inputindex<LCD_LINE_MAX-1)
						EditorCursorMinus();//curindex--
					}
				if(inputindex == bufcount-1)
					inputbuf[inputindex]=0;
				if(inputindex>=LCD_LINE_MAX)
					showbuf = inputbuf+inputindex-LCD_LINE_MAX;
				else
					showbuf = inputbuf;
				strcpy(buftemp,GetMsgData(DISP_FAX));				
				sprintf(firstlinebuf,"%s[%d]:",buftemp,dialcount+1);
				strcpy(secondlinebuf,showbuf);
				}
			else
				{
				if(step == 0)
					{
					strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
					strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
					}
				else
					{
					if( udefault==min)
						udefault = max;
					else
						udefault--;						
					strcpy(firstlinebuf,GetMsgData(DISP_ANOTHER_NO));
					strcpy(secondlinebuf,GetMsgData(currentmenu->itemchoose_addr[udefault]));
					}
				}
			break;
		case PANEL_BACK:
			if(setconfirm == TRUE)
				{
				setconfirm = FALSE;
				}
			step = 0;
			LCDCursorOff();
			strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
			strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
			break;
		case PANEL_START:
		case PANEL_SELECT:
			if(setconfirm == FALSE)
				{
				if(step == 0)
					{
					memset(inputbuf, 0, sizeof(inputbuf));
					dialcount = 0;
					strcpy(buftemp,GetMsgData(DISP_FAX));				
					sprintf(firstlinebuf,"%s[%d]:",buftemp,dialcount+1);
					strcpy(secondlinebuf,inputbuf);
					CharSymbolTableInitial(chSymTbl, INPUT_NUM);
					LCDCursorOn();
					presscount = 0;
					setconfirm = TRUE;
					inputindex = 0;
					curindex = 0;
					min = currentmenu->item_min;
					max = currentmenu->item_max;
					udefault = 1;
					EditorCursorShow(curindex);
					if(currentmenu->dispID == DISP_BROCAST_FAX)
						{
						gUIMain.Broadcastnum = 0;
						memset(&gUIMain.Broadcast,0,FAX_NUM_MAX*(DIAL_NUMBER_MAX+1));
						}
					else if(currentmenu->dispID == DISP_DELAY_FAX)
						{
						memset(&gMFPSettingNvram.Fax.delayfax,0,sizeof(DELAYFAX));
						}
					}
				else
					{
					if(udefault == 1)
						{
						dialcount++;
						if(currentmenu->dispID == DISP_BROCAST_FAX&&dialcount == FAX_NUM_MAX-1)
							step = 2;
						else if(currentmenu->dispID == DISP_DELAY_FAX&&dialcount == DELAY_NUM_MAX-1)
							step = 2;
						strcpy(buftemp,GetMsgData(DISP_FAX));				
						sprintf(firstlinebuf,"%s[%d]:",buftemp,dialcount+1);
						strcpy(secondlinebuf,inputbuf);
						CharSymbolTableInitial(chSymTbl, INPUT_NUM);
						LCDCursorOn();
						setconfirm = TRUE;
						inputindex = 0;
						curindex = 0;
						EditorCursorShow(curindex);
						}
					else
						{
						if(currentmenu->dispID == DISP_BROCAST_FAX)
							{
							UIDoFaxJob(BROADCAST_DIAL);
							step = 0;
							if(setconfirm == TRUE)
								{
								setconfirm = FALSE;
								}
							LCDCursorOff();
							strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
							strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
							}
						else if(currentmenu->dispID == DISP_DELAY_FAX)
							{
							step = 3;
							if(setconfirm == TRUE)
								{
								setconfirm = FALSE;
								}
							CharInputType(PANEL_SELECT);
							return;
							}
						}
					}
				}
			else
				{
				if(strlen(inputbuf) != 0)
					{
					if(currentmenu->dispID == DISP_BROCAST_FAX)
						{
						strcpy(gUIMain.Broadcast[dialcount],inputbuf);
						gUIMain.Broadcastnum++;
						}
					else if(currentmenu->dispID == DISP_DELAY_FAX)
						{
						strcpy(gMFPSettingNvram.Fax.delayfax.delaydialnum[dialcount],inputbuf);
						gMFPSettingNvram.Fax.delayfax.delayfaxnum++;
						}
					memset(inputbuf, 0, sizeof(inputbuf));
					LCDCursorOff();
					setconfirm = FALSE;
					lastbutton = PANEL_NONE;
					if(step == 2)
						{
						if(currentmenu->dispID == DISP_BROCAST_FAX)
							{
							UIDoFaxJob(BROADCAST_DIAL);
							step = 0;
							if(setconfirm == TRUE)
								{
								setconfirm = FALSE;
								}
							LCDCursorOff();
							strcpy(firstlinebuf,GetMsgData(currentmenu->titleID));
							strcpy(secondlinebuf,GetMsgData(currentmenu->dispID));
							}
						else if(currentmenu->dispID == DISP_DELAY_FAX)
							{
							step = 3;
							if(setconfirm == TRUE)
								{
								setconfirm = FALSE;
								}
							CharInputType(PANEL_SELECT);
							return;
							}
						}
					else
						{
						step = 1;
						strcpy(firstlinebuf,GetMsgData(DISP_ANOTHER_NO));
						strcpy(secondlinebuf,GetMsgData(currentmenu->itemchoose_addr[udefault]));
						}

⌨️ 快捷键说明

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