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

📄 errorcode.c

📁 这个是单片机4200的ui程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
*         Copyright (c) 2006 Primax Corporation,Ltd. All rights reserved.
*
* Author:            Junny Fu
*
* Description:     
*
*
* Revision History:
* Date      Author   Description
*
******************************************************************************/
#define  __Fax

#include "standard.h"
#include "Nucleus.h"
#include "Errorcode.h"
#include "Uilcdnew.h"
#include "Uinew.h"
#include "Message.h"
#include "menu.h"
#include "speaker.h"

ErrorState	errorstate = 0;
ErrorState	lasterrstate = 0;

extern char firstlinebuf[LINE_BUF_LENGTH];
extern char secondlinebuf[LINE_BUF_LENGTH];

extern UIMaintain		gUIMain;
extern NU_QUEUE		gErrorQueue;
extern Uint32             gQueueStart[ERROR_QUEUE_SIZE];
extern Bool    updateLCD;
extern Bool	ResetTimeFlag;
extern Uint8 	copypage;

void ErrorDetection()
{
	Uint32 recvcode;
	API_RET	error;
	Bool alarm;

	error = ErrorReceive(&recvcode);
	if(error == API_OK&&gUIMain.UIstate != FACTORY_MODE&&gUIMain.UIstate !=SERVICE_MODE)//&&(!gUIMain.FaxlayerEnable))
		{
		updateLCD = TRUE;PSPRINTF("\nReceive err code %x\n",recvcode);
		if(gUIMain.UIstate == ENERGYSAVE)
			{
			gUIMain.UIstate = STANDBY;
			gUIMain.PowerSavEnable = FALSE;
			ReturnFromPowerSave();
			}
		ResetTimeFlag = TRUE;
		switch(recvcode)
			{
/*			case S_DRAMERR://msg only
				break;
			case S_USBPORTERR://msg only
				break;*/
			case C_ENGINEREADY:
				errorstate.enginestate = ENGINEREADY;
				if(gUIMain.bFirstPowerUP)
					MenuListInitSet(FIRSTPOWERUP);
				break;
			case S_PRINTING:
				if(gUIMain.UIstate != COPY_PROCESSING&&gUIMain.UIstate != CANCEL&&(!gUIMain.FaxlayerEnable))
					{
					errorstate.enginestate = PRINTING;
					gUIMain.UIstate = PRINT_PROCESSING;
					}
				break;
			case S_PRINTEND:
				if(gUIMain.UIstate == PRINT_PROCESSING||gUIMain.UIstate == CANCEL||gUIMain.UIstate == ENERGYSAVE)//(gUIMain.UIstate != STANDBY&&gUIMain.UIstate!= COPY_PROCESSING)
					gUIMain.UIstate = STANDBY;
				break;
			case S_TRAYERR:
				errorstate.enginestate = TRAYERR;
				break;
			case S_PRINTANOTHERSIDE:
				gUIMain.UIstate = WAITINGKEYIN;
				gUIMain.waittype = WAIT_PRINTANOTHERSIDE;
				strcpy(firstlinebuf,GetMsgData(DISP_PUT_PAP_BACK));
				strcpy(secondlinebuf,GetMsgData(DISP_PRESS_SET_TO_S));

				LCDDisplayClear();
				DisplayLCD(0, firstlinebuf, MIDDLE,FALSE);
				DisplayLCD(1, secondlinebuf, MIDDLE,FALSE);
				updateLCD = FALSE;
				return;
			case S_COMMUNICATEERR://msg only
				sprintf(firstlinebuf,"%s%s",GetMsgData(DISP_ENGINE),GetMsgData(DISP_MYTECS_FAXERR_COMM_ERROR));
				LCDDisplayClear();
				DisplayLCD(0, firstlinebuf, MIDDLE,FALSE);
				NU_Sleep(500);
				break;
			case S_PAPEREMPTY:
				alarm = TRUE;
				errorstate.enginestate = PAPEREMPTY;
				break;
			case S_FUSEPAPERJAM:
				alarm = TRUE;
				errorstate.enginestate = FUSEPAPERJAM;
				break;
			case S_DRUMPAPERJAM:
				alarm = TRUE;
				errorstate.enginestate = DRUMPAPERJAM;
				break;
			case S_MANUALPAPERJAM:
				alarm = TRUE;
				errorstate.enginestate = MANUALPAPERJAM;
				break;
			case S_MPFEEDPAPERJAM:
				alarm = TRUE;
				errorstate.enginestate = MPFEEDPAPERJAM;
				break;
			case S_FRONTCOVEROPEN:
				alarm = TRUE;
				errorstate.enginestate = FRONTCOVEROPEN;
				if(gUIMain.UIstate == COPY_PROCESSING)
					{
					gUIMain.UIstate = CANCEL;
					UIAPI_CancelCopyJob();
					}
				break;
			case S_REARCOVEROPEN:
				alarm = TRUE;
				errorstate.enginestate = REARCOVEROPEN;
				break;
			case S_PAPERSIZEERR:
				alarm = TRUE;
				errorstate.enginestate = PAPERSIZEERR;
				break;
			case S_PAPERTYPEERR:
				errorstate.enginestate = PAPERTYPEERR;
				break;
			case S_MIRRORMOTORERR:
				alarm = TRUE;
				errorstate.enginestate = MIRRORMOTORERR;
				break;
			case S_FANABNORMAL:
				alarm = TRUE;
				errorstate.enginestate = FANABNORMAL;
				break;
			case S_HVABNOMAL:
				alarm = TRUE;
				errorstate.enginestate = HVABNOMAL;
				break;
			case S_LASERERR:
				alarm = TRUE;
				errorstate.enginestate = LASERERR;
				break;
			case S_FUSERWARMUPERR:
				alarm = TRUE;
				errorstate.enginestate = FUSERWARMUPERR;
				break;
			case S_FUSETEMLOW:
				alarm = TRUE;
				errorstate.enginestate = FUSETEMLOW;
				break;
			case S_FUSEROVERHEAT:
				alarm = TRUE;
				errorstate.enginestate = FUSEROVERHEAT;
				break;
			case S_ENGINEWARMUP:
				if(!gUIMain.FaxlayerEnable&&gUIMain.UIstate != SCAN_PROCESSING)
					{
					errorstate.enginestate = ENGINEWARMUP;
					}
				break;
			case S_CARTRIDGEEXPIRE:
				alarm = TRUE;
				gUIMain.DCExpire = TRUE;
				break;
			case S_TONERLOW://msg only
				break;
			case S_TONEREMPTY://msg only
				break;
			case S_TONERNEW://msg only
				break;
			case S_TONERINVALID:
				alarm = TRUE;
				errorstate.tonerstate = TONERINVALID;
				break;
			case C_TONERNORMAL:
				errorstate.tonerstate = TONERNORMAL;
				break;
			case S_TONEREFRESH:
				DisplayStandbyMode();
				break;
			case S_ADFPAPERJAM:
				alarm = TRUE;
				errorstate.adfstate = ADFPAPERJAM;
				break;
			case C_ADFPAPERJAM:
				errorstate.adfstate = ADFREADY;
				break;
			case S_ADFNOPAPERINPUT://msg only
				break;
			case S_SCANMODULEERR:
				alarm = TRUE;
				errorstate.scannerstate = SCANMODULEERR;
				break;
			case C_SCANMODULEREADY:
				errorstate.scannerstate = SCANNERREADY;
				if(gUIMain.UIstate != STANDBY&&gUIMain.UIstate != COPY_PROCESSING&&gUIMain.UIstate != WAITINGKEYIN)
					gUIMain.UIstate = STANDBY;
				break;
			case S_NOMEMORYFORSCAN://msg only
				sprintf(firstlinebuf,"%s %s",GetMsgData(DISP_SCAN),GetMsgData(DISP_MYTECS_FAXERR_MEMORY_FULL));
				LCDDisplayClear();
				DisplayLCD(0, firstlinebuf, MIDDLE,FALSE);
				NU_Sleep(1000);
				break;
			case S_ADFPAPERIN:
				if(gUIMain.commonsetting.Alarmvolume == 1)
					SpeakerSoundPlay(SOUND_OF_KEYPAD);
				break;
			case S_SCANNING:
				if(gUIMain.UIstate != COPY_PROCESSING&&gUIMain.UIstate != FAX_PROCESSING&&(!gUIMain.FaxlayerEnable))
					{
					errorstate.scannerstate = SCANNING;
					gUIMain.UIstate = SCAN_PROCESSING;
					}
				break;
			case S_SCANCANCEL:
				gUIMain.UIstate = CANCEL;
				break;
			case S_TXERR:
				errorstate.faxstate = TXERR;
				break;
			case C_TXERR:
				break;
			case S_RXERR:
				errorstate.faxstate = RXERR;
				break;
			case C_RXERR:
				break;
			case S_DIALUPERR:
				errorstate.faxstate = DIALUPERR;
				break;
			case C_DIALUPERR:
				break;
			case S_TXMEMORYFULL://msg only
				break;
			case S_RXMEMORYFULL://msg only
				break;
			case S_COPYREADY:
				if(gUIMain.UIstate == COPY_PROCESSING||gUIMain.UIstate == CANCEL)
					gUIMain.UIstate = STANDBY;
				break;
			case S_2UPADD2NDPAGE:
				gUIMain.UIstate = WAITINGKEYIN;
				gUIMain.waittype = WAIT_2UP2NDPAGE;
				strcpy(firstlinebuf,GetMsgData(DISP_2UP));
				strcpy(secondlinebuf,GetMsgData(DISP_ADD2NDPAGE));

				LCDDisplayClear();
				DisplayLCD(0, firstlinebuf, MIDDLE,FALSE);
				DisplayLCD(1, secondlinebuf, MIDDLE,FALSE);
				updateLCD = FALSE;
				return;
			case S_IDCOPYFLIPBACK:
				gUIMain.UIstate = WAITINGKEYIN;
				gUIMain.waittype = WAIT_IDCOPYBACKSIDE;
				strcpy(firstlinebuf,GetMsgData(DISP_ID_COPY));
				strcpy(secondlinebuf,GetMsgData(DISP_FLIP_CARD_OVER));

				LCDDisplayClear();
				DisplayLCD(0, firstlinebuf, MIDDLE,FALSE);
				DisplayLCD(1, secondlinebuf, MIDDLE,FALSE);
				updateLCD = FALSE;
				return;
			default:
				break;
			}
		if(alarm == TRUE&& gUIMain.commonsetting.Alarmvolume == 1)
			{
			SpeakerSoundPlay(SOUND_OF_ALARM);
			}
		alarm = FALSE;
		if(recvcode>S_COPYANOTHERPAGE)
			copypage = (Uint8)(recvcode - S_COPYANOTHERPAGE);
		}
	ErrorDisplay();
}

void ErrorDisplay()
{
	Uint32 uCurTime0;
	static Bool dispupdate;
	ErrorState errortemp;

	if(gUIMain.UIstate == STANDBY||gUIMain.UIstate == PRINT_PROCESSING||gUIMain.UIstate == SYSTEMINITIAL||
		gUIMain.UIstate == COPY_PROCESSING||gUIMain.UIstate == SCAN_PROCESSING||
		gUIMain.UIstate == CANCEL||gUIMain.FaxlayerEnable)
		{
		if(errorstate.enginestate != ENGINEREADY)//&&gUIMain.UIstate != SCAN_PROCESSING)
			{
			errortemp.enginestate = errorstate.enginestate;
			if(errortemp.enginestate != lasterrstate.enginestate)
				{
				lasterrstate.enginestate = errortemp.enginestate;
				dispupdate = TRUE;
				}
			
			switch(errorstate.enginestate)
				{
				case TRAYERR:
					strcpy(firstlinebuf,GetMsgData(DISP_TRAYERR));
					strcpy(secondlinebuf,GetMsgData(DISP_INPUTTRAY));
					break;
				case PAPEREMPTY:
					strcpy(firstlinebuf,GetMsgData(DISP_NOPAPER));
					strcpy(secondlinebuf,GetMsgData(DISP_ADDPAPER));
					break;

⌨️ 快捷键说明

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