📄 qa.c
字号:
}
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 + -