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

📄 qa.c

📁 一款收款机C源代码!因为是几年前的代码了
💻 C
📖 第 1 页 / 共 2 页
字号:
}

void KeyBoard_Test(void)
{
	byte flag = 0;
	byte tmp = 0;
	byte	tt = 0;
	byte mode;

	while (1)
	{
	   while(1)
	   {
	      if( Ktail != Khead)
	      {
	         tt = KeyBuffer[Ktail];
	         Ktail++;
	         if (Ktail == KEY_BUFF_SIZE)  
	         	Ktail=0;
	         break;
	      }

			mode = GetMainMode();
			switch (mode)
			{
			case PROGRAM:	tmp = 1;		break;
			case X_OFF:		tmp = 2;		break;
			case REGISTER:	tmp = 3;		break;
			case XREPORT:	tmp = 4;		break;
			case ZREPORT:	tmp = 5;		break;
			case TRAINING:	tmp = 6;		break;
			default : break;
			}
			Insert_Num(tmp%10, 5);

//	      if (GetMainMode() != PROGRAM)
//	      {
//	      	return;
//	      }
	   }
		tmp = Key_Seq_Cvt(tt);
		tt = tmp;
		Insert_Num(tmp/10, 8);
		Insert_Num(tmp%10, 9); 

		if ((tt == 38) || (tt == 34))		// KD_CASH
		{
			if (flag == 1)
				break;
			flag = 1;
		}
	}
}

void CtrlKey_Test(void)
{
	byte flag = 0;
	byte tmp = 0;
	byte mode;

	while (1)
	{
		mode = GetMainMode();
		switch (mode)
		{
		case PROGRAM:	tmp = 1;		break;
		case X_OFF:		tmp = 2;		break;
		case REGISTER:	tmp = 3;		break;
		case XREPORT:	tmp = 4;		break;
		case ZREPORT:	tmp = 5;		break;
		case TRAINING:	tmp = 6;		break;
		default : break;
		}
		g_LCDBLCnt = 5000;
		Insert_Num(' ', 8);
		Insert_Num(tmp%10, 9);
//		if (!Key_Poll_Chk())
		{
			if (GetKey() != KEY_END )
				break;
		}
		Delay(100);
	}
}

void DIP_Test(void)
{
	#define	SW_3			p7_7
	#define	SW_3_DIR		pd7_7

	SW_1_DIR = 0;
	SW_2_DIR = 0;
	SW_3_DIR = 0;
	Clr_All_Dsp_Data(FALSE);
	while (1)
	{ 
		if ( SW_1 )		Insert_Num(0, 7);
		else			Insert_Num(1, 7);
		if ( SW_2 )		Insert_Num(0, 8);
		else			Insert_Num(1, 8);
		if ( SW_3 )		Insert_Num(0, 9);
		else			Insert_Num(1, 9);
		if ( Key_Poll_Chk() && GetKey() == KD_CASH )	break;
	}
	Clr_All_Dsp_Data(FALSE);
	Insert_Byte(0,8);
}

//byte	sramPwrOnOffFlag;
//void PwrOnOff_Chk(byte flag)
//{
//	byte  *ptr;
//	dword i, maxAddr;
//	byte tmpChar;
//	
//	if (flag == 0)
//	{
//		maxAddr = 0x20000;
//	}
//	else
//	{
//		maxAddr = 0x80000;
//	}
//
//	if (sramPwrOnOffFlag == 0)
//	{
//		disp_Char_Str("----------", 0);
//		
//		ptr = (byte *)(RAM_BASE_ADDR + 0x10000);
//		for (i = (RAM_BASE_ADDR + 0x10000); i < (RAM_BASE_ADDR + maxAddr); i++)
//		{
//			*ptr++ = (char)(i & 0xff) + (char)((i >> 8) & 0xff) + (char)((i >> 16) & 0xff);
//		}
//		sramPwrOnOffFlag = 1;
//		bellcnt = 80;
//		disp_Char_Str("    OFF   ", 0);
//		while (TRUE);
//	}
//
//	sramPwrOnOffFlag = 0;
//	disp_Char_Str("CHK-------", 0);
//	ptr = (byte *)(RAM_BASE_ADDR + 0x10000);
//	for (i = (RAM_BASE_ADDR + 0x10000); i < (RAM_BASE_ADDR + maxAddr); i++)
//	{
//		if (*ptr++ != ((char)(i & 0xff) + (char)((i >> 8) & 0xff) + (char)((i >> 16) & 0xff)))
//		{
//			break;
//		}
//	}
//	if (i < (RAM_BASE_ADDR + maxAddr))
//	{
//		Clr_Dsp_Data();
//		Insert_Num(1, 0);
//		Insert_Num(0, 1);
//		Lcd_Qc_Err();
//	}
//	else
//	{
//		Clr_Dsp_Data();
//		Insert_Num(1, 0);
//		Insert_Num(0, 1);
//		Lcd_Qc_Ok();
//	}
//	GetKey();
//
//	Clr_Dsp_Data();
//	Insert_Byte(0,8);
//}

void QA_Fls(byte flag)
{
//#ifdef	VER
	if (Fls_Test(flag) != OK)
	{ 
		Lcd_Qc_Err();
	}
	else
	{
		Lcd_Qc_Ok();
		#if	(COUNTRY == SWEDEN) || (COUNTRY == CANADA) || (SW_VER == SW_WD2)
		CMOS_Illegal();		/* Reset the COMS legal flag */
		#endif
	}
	Delay(100);
	GetKey();
	#if	(COUNTRY == SWEDEN) || (COUNTRY == CANADA) || (SW_VER == SW_WD2)
	protest();
	#endif
//#endif
}

#if	SW_VER == SW_NE2
/******************************************************************************
Description: 
******************************************************************************/
void Qa_CheckFmFree(void)
{
	if (Fm_CheckFree() == true)
	{ 
		Lcd_Qc_Ok();
	}
	else
	{
		Lcd_Qc_Err();
	}
	GetKey();
}

/******************************************************************************
Description: 
******************************************************************************/
void Qa_CheckFmReadAndWrite(void)
{
	if ((Fm_ReadByte(FM_HEAD_ADDR) == 0xff) && 
	 	 (Fm_ReadByte(FM_TAIL_ADDR) == 0xff))
	{
		if (Fm_CheckReadAndWrite() == true)
		{
			Lcd_Qc_Ok();
		}
		else
		{
			Lcd_Qc_Err();
		}
	}
	else
	{
		// fm not free, can't check fm read and write
		Clr_All_Dsp_Data(FALSE);
		disp_Char_Str(" No Free ", 0);
		bellcnt = 0xfe;
	}
	GetKey();
}
#endif

/******************************************************************************
Description: 配合高低温测试,每隔三分钟: 打印三行,走纸两行.
******************************************************************************/
void Qa_HighLowTemperatureTest(void)
{
	#define	PRINT_INTERVAL_TIME		(5 * 60)
	// 进入即打印一次.
	word seconds = PRINT_INTERVAL_TIME;
	word printCnt = 0;
	
	Clr_All_Dsp_Data(FALSE);
	disp_Char_Str("Hi Lo Test", 0);
	while (1)
	{
		if (seconds >= PRINT_INTERVAL_TIME)
		{
			byte i;
			
			seconds = 0;
			printCnt++;
			// print three lines.
			for (i=0; i<15; i++)
			{
				memcpy(prn_Buf+1, "High_low_temp : ", strlen("High_low_temp : "));
				prn_Buf[1+27] = printCnt / 10000 % 10 + '0';
				prn_Buf[1+28] = printCnt / 1000 % 10 + '0';
				prn_Buf[1+29] = printCnt / 100 % 10 + '0';
				prn_Buf[1+30] = printCnt / 10 % 10 + '0';
				prn_Buf[1+31] = printCnt % 10 + '0';
				prn_Buf[1+32] = ' ';
				prn_Str();
			}
			// feed two lines.
			for (i=0; i<2; i++)
			{
				prn_Str();
			}
		}
		seconds++;
		Wait(1000);
		if (Key_Poll_Chk())
		{
			break;
		}
	}
}

/******************************************************************************
* Describe: 成品第一波检测: 
*				 拨码开关判断,打印,马达,喇叭,LCD,背光,Flash抽检,串口1,钱箱.
* Input :   void
* Output:   void
* return:   void
******************************************************************************/
void First_Test(byte flag)
{
	byte i;

//	#if	COUNTRY != SWEDEN
//	// 拨码开关位置检测.
//	if ((SW_1 == 0) || (SW_2 == 0))
//	{
//		errorMsg("ERR1");
//   	if (GetKey() != KD_SUBTTL )
//   	{
//   		return;
//   	}
//	}
//	#endif
	// 喇叭.
	for (i=0; i<3; i++)
	{
		bellcnt = 40;
		Wait(500);
	}

	// LCD & 背光.
	Lcd_Test();
	
	// FLASH抽检.
//	if (Fls_Test(0) != OK)
//	{ 
//		errorMsg("2");
//   	if (GetKey() != KD_SUBTTL )
//   	{
//   		return;
//   	}
//	}
	
	// 串口1.
	if (flag != 0)
	{
		if (Uart_Test(PORT0, 0) != OK)
		{
			errorMsg("ERR3");
	   	if (GetKey() != KD_SUBTTL )
	   	{
	   		return;
	   	}
		}
		if (Uart_Test(PORT1, 0) != OK)
		{
			errorMsg("ERR4");
	   	if (GetKey() != KD_SUBTTL )
	   	{
	   		return;
	   	}
		}
	}
	
	// 钱箱开关检测.
	for (i=0; i<1; i++)
	{
		_DrawOn();
		Wait(1000);
	}
	
	// 打印 & 马达.
	Prn_Test(0);
	
	// 校验和.(最好打印出来)
	Version_Cs_Chk(0);
	
	GetKey();
}

/******************************************************************************
* Describe: 成品第二波检测: 
*				 串口2,SRAM全检,自动全清,设准确时间.
* Input :   void
* Output:   void
* return:   void
******************************************************************************/
void Second_Test(byte flag)
{
	// 串口2.
//	if (flag != 0)
//	{
//		if (Uart_Test(PORT1, 0) != OK)
//		{
//			errorMsg("ERR3");
//	   	if (GetKey() != KD_SUBTTL )
//	   	{
//	   		return;
//	   	}
//		}
//	}
	// SRAM全检,自动全清,
	if (flag == 0)
	{
		Sram_Test(0);
	}
	else
	{
		Sram_Test(1);
	}
	
	// 设准确时间.
}

void	QA_Check(byte num)
{
	// check qc test bit
	if (qcTestFlag != 0x55)
	{
		Clr_All_Dsp_Data(FALSE);
		Insert_Char('E', 7);
		Insert_Char('R', 8);
		Insert_Char('R', 9);
		bellcnt = 0xfe;
		return;
	}
	
	Clr_All_Dsp_Data(FALSE);
	Insert_Num(num/10, 0);
	Insert_Num(num%10, 1);
	switch (num)
	{
	case 10:	Uart_Test(PORT0, 1);	break;
	case 11:	Uart_Test(PORT1, 1);	break;
	case 12:	Prn_Test(1);			break;
	case 13:	Prn_PaperOut_Test();	break;
	case 14:	Lcd_Test();				break;
	case 15:	KeyBoard_Test();		break;
	case 16:	CtrlKey_Test();		break;
	case 17:	DIP_Test();				break;
	case 18:	Version_Cs_Chk(1);	break;
	case 19:	QA_Fls(0);				break;
	case 20:	Sram_Test(0);			break;
//	case 21:	PwrOnOff_Chk(0);		break;

	#if	SW_VER == SW_NE2
	case 22: FM_Debug();				break;
	#endif
	case 23:	Uart_Test(PORT0, 1);	break;
	#if	SW_VER == SW_NE2
	case 24: Qa_CheckFmFree();		break;
	case 25: Qa_CheckFmReadAndWrite();		break;
	#endif
	case 26: Qa_HighLowTemperatureTest();	break;

	case 30:	Sram_Test(1);			break;
//	case 31:	PwrOnOff_Chk(1);		break;
	case 32:	Prn_Disc_Test();		break;
	case 33:	QA_Fls(1);				break;
	case 34:	Sram_Test(2);			break;			// 两片SRAM同时测试.
	case 35: Lcm_Debug();			break;
	case 36: DrawOpen();				break;

	// 欧标版(无串口,128K)
	case 50:	First_Test(0);			break;
	case 51:	KeyBoard_Test();		break;
	case 52:	Prn_PaperOut_Test();	break;
	case 53:	Second_Test(0);		break;

	// 欧标版(有串口,512K)
	case 60:	First_Test(1);			break;
	case 61:	KeyBoard_Test();		break;
	case 62:	Prn_PaperOut_Test();	break;
	case 63:	Second_Test(1);		break;
	#if	(COUNTRY == SWEDEN) || (COUNTRY == CHINA) || (COUNTRY == CANADA) || (SW_VER == SW_WD2)
	case 64: QA_Fls(1);				break;
	#endif

	// 中国版(有串口,512K)
	case 70:	First_Test(1);			break;
	case 71:	KeyBoard_Test();		break;
	case 72:	Prn_PaperOut_Test();	break;
	case 73:	Second_Test(2);		break;
	default:	bellcnt = 30;			break;
	}
}


///////////////////////////////////////////////////////////////////////////////
//											WD2主板测试步骤
//
// 说明:	本步骤仅用于开发初期测试主板是否OK用.
//
//	注意:	第一版的主板需要手工修改之处: (可能不完整)
//			1) 整流电路: 		1N4003 --> 1N4007
//			2) 打印机电源:		TIP32C短接.(疑此器件质量不佳,导致无法开关大电流)
//			3) VFD的+5V电源:	L7805外围器件.
//			4) Flash:			片选加上拉电阻,避免在两片Flash均焊接的情况下无法选中.
//			5) 
//
//	(1)	[P] -- "999" -- [CASH]				设置QA许可标志.
//	(2)	[P] --  "11" -- [CASH]				串口1短路测试.
//	(3)	[P] --  "23" -- [CASH]				串口3短路测试.
//	(4)	[P] --  "12" -- [CASH]				打印机&马达.
//	(5)	[P] --  "13" -- [CASH]				纸传感器.				...(两个)
//	(6)	[P] --  "14" -- [CASH]				VFD显示.
//	(7)	[P] --  "15" -- [CASH]				键盘和控制锁.
//	(8)	[P] --  "17" -- [CASH]				拨码开关.				...(三个)
//	(9)	[P] --  "19" -- [CASH]				flash抽检.			...(注意接不同Flash的处理)
//	(10)	[P] --  "20" -- [CASH]				sram抽检.
//	(11)	[P] --  "22" -- [CASH]				fm跳跃全检.
//	(12)	[P] --  "30" -- [CASH]				sram全检.	
//	(13)	[P] --  "33" -- [CASH]				flash全检.			...(注意接不同Flash的处理)
//	(14)	[P] --  "34" -- [CASH]				两片SRAM全检.
//	(15)	[P] --  "35" -- [CASH]				LCM(192*64).
//	(16)	[P] --  "36" -- [CASH]				钱箱.
//	(17)	[P] --  "24" -- [CASH]				fm全空检查(不检查头尾地址).
//	(18)	[P] --  "25" -- [CASH]				fm读写检查(只检查头尾地址,检查前必须为空).
//	(19)	[P] --  "26" -- [CASH]				高低温测试,每三分钟打印一次.
//	
//	...
//			fm税控跳线, fm全检.
//			钱箱
//			两个马达是否连接.
//
///////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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