📄 testpad03.c
字号:
display(2, "%s", tmp_str);
}
if (CARD_STATUS != 0)
{
GetErrorMessage(CARD_STATUS, tmp_str);
display(2, "%s", tmp_str);
}
ret = read_AT88102(hd_no, 10, 2, out);
key[0] = (char)0x12;
key[1] = (char)0x34;
ret = verify_userkey_AT88102( hd_no, key, &err_no);
key[0] = (char)0xf0;
key[1] = (char)0xf0;
ret = change_userkey_AT88102(hd_no, key);
out[0] = (char)0xff;
out[1] = (char)0xaa;
ret = write_AT88102_all(hd_no, 2, 8, out);
if (ret != SUCC)
{
GetErrorMessage(ret, tmp_str);
display(2, "%s", tmp_str);
}
if (CARD_STATUS != 0)
{
GetErrorMessage(CARD_STATUS, tmp_str);
display(2, "%s", tmp_str);
}
ret = read_AT88102(hd_no, 2, 8, out);
memset(key, 0xff, sizeof(key));
ret = verify_erasekey_AT88102_new(hd_no, 1, key, &err_no);
out[0] = (char)0x55;
out[1] = (char)0xbb;
ret = write_AT88102_all(hd_no, 24, 2, out);
ret = read_AT88102(hd_no, 24, 2, out);
ret = power_down_AT88102(hd_no);
return (int)ret;
}
int test_cpu_card(unsigned char hd_no)
{
unsigned char data[100], len;
char card_no = 0, err_str[100];
short stat, ret;
char tmp_str[100];
unsigned char ucStatus;
cls();
displays(1, 1, "\nBegin test CPU card......! \n");
displays(1, 1, "Insert IC card\n");
/* do
{
ret = ICC_in(hd_no);
GetErrorMessage(ret, err_str);
} while (ret != SUCC);
*/
stat = ICCInitModule(hd_no, card_no, EM_ic_VOLDEFAULT, 9, &ucStatus);
stat = power_up(hd_no, card_no, data, &len);
display_ic_status();
debug_disps(3, (char *) data, len);
stat = power_down(hd_no, 1);
stat = power_up(hd_no, 1, data, &len);
display_ic_status();
debug_disps(3, (char *) data, len);
stat = power_up(hd_no, 2, data, &len);
display_ic_status();
debug_disps(3, (char *) data, len);
stat = power_up(hd_no, 4, data, &len);
display_ic_status();
debug_disps(3, (char *) data, len);
/*
if ( len == 0 ) {
display_ic_status();
return FAIL;
}
*/
//获得随机数
displays(2, 1, "Begin Get Random...\n");
stat = outgoing(hd_no, card_no, 0x00, 0x84, 0, 0, 8, data);
if (stat != SUCC)
{
GetErrorMessage(stat, tmp_str);
display(2, tmp_str);
}
else
{
display_ic_status();
}
//选择文件
displays(3, 1, "Begin Select File...\n");
data[0] = 0x3f;
data[1] = 0x00;
stat = incoming(hd_no, card_no, 0x00, 0xA4, 0, 0, 2, data);
//stat = PSAM_Select_File ( hd_no, card_no, 0x3f, 0x00, data) ;
if (stat != SUCC)
{
GetErrorMessage(stat, tmp_str);
display(2, tmp_str);
}
else
{
display_ic_status();
}
stat = power_down(hd_no, card_no);
if (stat != SUCC)
{
GetErrorMessage(stat, tmp_str);
display(2, tmp_str);
}
displays(8, 1, "Press any key to continue\n");
inkey(0);
cls();
return stat;
}
int test_display(unsigned char hd_no)
{
short ret;
unsigned char key;
char tmp_str[100];
displays(1, 1, "display a line in PINPAD\n");
display(2, "在PINPAD上从某一行的第一列开始显示中西文字符,并清掉后面的已有的字符\n");
ret = display_pad(hd_no, 1, "Test Display");
if (ret != SUCC)
{
display(1, "(display_pad):");
GetErrorMessage(ret, tmp_str);
display(2, "%s", tmp_str);
}
display(4, "在PINPAD上显示5*7小点阵ASCII字符, 不清除其它显示.\n");
ret = disps_ascii(hd_no, 2, 4, "1234ABCD");
if (ret != SUCC)
{
display(1, "(disps_ascii):");
GetErrorMessage(ret, tmp_str);
display(2, "%s", tmp_str);
}
ret = display_pad(hd_no, 6, "Display显示第6行");
ret = pad_sound(hd_no, 500);
if (ret != SUCC)
{
display(1, "(pad_sound):");
GetErrorMessage(ret, tmp_str);
display(2, "%s", tmp_str);
}
displays(5, 1, "push a key in PINPAD......\n");
while (1)
{
get_push_key(hd_no, &key); //读入键值后,下一次读入是0
if (key != 0)
{
displays(6, 1, "get push key= %02x\n", key);
break;
}
}
displays(7, 1, "get kbhit of PinPad: \n");
while (1)
{
kbhit_pad(hd_no, &key); //kbhit未清缓冲区,下一次读出还是原值
if (key != 0)
{
displays(8, 1, "kbhit_pad return=%02x\n", key);
break;
}
}
return SUCC;
}
int test_input_key(unsigned char hd_no)
{
unsigned char tmp_str[100], str_len;
short sRet = 0;
memset(tmp_str, 0, sizeof(tmp_str));
cls();
displays(1, 1, "INPUT KEY in PINPAD\n");
if (reader_type == READER_STAR752)
{
disps_ascii(hd_no, 1, 1, "INPUT: ");
disps_ascii(hd_no, 2, 1, "AMOUNT:123.45 ");
}
else
{
display_pad(hd_no, 1, "请输密:");
display_pad(hd_no, 2, "金额:123.45");
}
//sRet = input_str ( hd_no, 1, 0, ASTERISK|VAR_LEN|PINDATA, 6, 1 );
sRet = input_str(hd_no, 1, 8, VAR_LEN, 19, 1);
if (sRet == 0)
{
do
{
sRet = get_str(hd_no, &str_len, tmp_str, 1);
if (sRet == RCV_TIMEOUT)
{
printf("get_str timeout\n");
return FAIL;
}
} while (sRet == BUSY_INPUT);
displays(2, 1, "key length=%d ", str_len);
//displays(3, 1, "key=%s\n", tmp_str);
printf("key=%s\n", tmp_str);
}
memset(tmp_str, 0, sizeof(tmp_str));
displays(4, 1, "INPUT Code in PINPAD\n");
if (reader_type == READER_STAR752)
{
disps_ascii(hd_no, 1, 1, "INPUT CODE: ");
disps_ascii(hd_no, 2, 1, " ");
}
else
{
display_pad(hd_no, 1, "请输密码:");
display_pad(hd_no, 2, "");
}
input_str(hd_no, 2, 1, ASTERISK | VAR_LEN | PINDATA, 6, 0);
if (sRet != 0)
{
return FAIL;
}
do
{
/*590取消键判断
if( kbhit( ) ){
if( inkey( 0 ) == CANCEL ){
reset_pad( );
return( FAIL );
}
}
*/
if (get_str(hd_no, &str_len, tmp_str, 0) == SUCC)
{
if (str_len != 6)
{
display_pad(hd_no, 1, "请输入密码:");
display_pad(hd_no, 2, "");
input_str(hd_no, 2, 1, ASTERISK | VAR_LEN, 6, 0);
continue;
}
else
{
break;
}
}
} while (1);
displays(5, 1, "key length=%d ", str_len);
//displays(6, 1, "key=%s\n", tmp_str);
printf("key=%s\n", tmp_str);
sRet = write_user_key(hd_no, "PIN_", "01234567");
if (sRet != SUCC)
{
display(1, "(write_user_key):err");
inkey(0);
}
sRet = X98_from_pad(hd_no, 0, "PIN_", "0000000000000000", tmp_str);
//_DES("01234567", tmp_str, tmp_str+10);
debug_disps(1, tmp_str + 10, 8);
//bcd_to_asc1 ( (unsigned char*)s, tmp, 16 , 0 );
return SUCC;
}
int test_magcard(unsigned char hd_no)
{
short sRet = 0;
DevHandle hMagHandle;
unsigned char ucStatus;
ET_MAGCARD stTrk2, stTrk3;
char szDispBuf[256];
display(1, "Begin Test MagCard\n");
sRet = OpenMagcard(hd_no, EM_RECARD, 60, &hMagHandle, &ucStatus);
if (sRet != SUCC)
{
display(1, "(ucOpenMagcard):");
GetErrorMessage(sRet, szDispBuf);
display(2, "%s", szDispBuf);
}
if (ucStatus != EM_SUCCESS)
{
display(1, "(ucOpenMagcard):");
GetErrorMessage((short) ucStatus, szDispBuf);
display(2, "%s", szDispBuf);
}
display(1, "Begin ReCard\n");
sRet = Recard(hd_no, hMagHandle, 1, EM_mag_ENMANUAL, &stTrk2, &stTrk3, &ucStatus);
if (sRet != SUCC)
{
display(1, "(ucRecard):");
GetErrorMessage(sRet, szDispBuf);
display(2, "%s", szDispBuf);
}
if (ucStatus != EM_SUCCESS)
{
display(1, "(ucRecard):");
GetErrorMessage((short) ucStatus, szDispBuf);
display(2, "%s", szDispBuf);
}
else
{
display(1, "Trk2Flag=%02x\n", stTrk2.ucTrkFlag);
display(2, "%s\n", stTrk2.ucTrkBuf);
display(3, "Trk3Flag=%02x\n", stTrk3.ucTrkFlag);
display(4, "%s\n", stTrk3.ucTrkBuf);
}
display(1, "Begin CloseMagcard\n");
sRet = CloseMagcard(hd_no, &hMagHandle, &ucStatus);
if (sRet != 0)
{
return FAIL;
}
sRet = OpenMagcard(hd_no, 0x01, 100, &hMagHandle, &ucStatus);
if (sRet != SUCC)
{
display(1, "(ucOpenMagcard):");
GetErrorMessage(sRet, szDispBuf);
display(2, "%s", szDispBuf);
}
if (ucStatus != EM_SUCCESS)
{
display(1, "(ucOpenMagcard):");
GetErrorMessage((short) ucStatus, szDispBuf);
display(2, "%s", szDispBuf);
}
sRet = StartTrackIn(hd_no, hMagHandle, &ucStatus);
if (sRet != SUCC)
{
display(1, "(ucStartTrackIn):");
GetErrorMessage(sRet, szDispBuf);
display(2, "%s", szDispBuf);
}
if (ucStatus != EM_SUCCESS)
{
display(1, "(ucStartTrackIn):");
GetErrorMessage((short) ucStatus, szDispBuf);
display(2, "%s", szDispBuf);
}
while (1)
{
//Sleep(500);
sRet = TrackIn(hd_no, hMagHandle, &stTrk2, &stTrk3, &ucStatus);
SetPadTimeout(hd_no, 200);
if (sRet != SUCC)
{
display(1, "(ucTrackIn):");
GetErrorMessage(sRet, szDispBuf);
display(2, "%s", szDispBuf);
}
if (ucStatus == EM_ABOLISH)
{
break;
}
if (ucStatus != EM_SUCCESS)
{
//display ( 1, "(ucTrackIn):" );
GetErrorMessage((short) ucStatus, szDispBuf);
//display ( 2, "%s", szDispBuf );
}
if (ucStatus == EM_SUCCESS)
{
display(1, "Trk2Flag=%02x\n", stTrk2.ucTrkFlag);
display(2, "%s\n", stTrk2.ucTrkBuf);
display(1, "Trk3Flag=%02x\n", stTrk3.ucTrkFlag);
display(3, "%s\n", stTrk3.ucTrkBuf);
break;
}
}
sRet = CloseMagcard(hd_no, &hMagHandle, &ucStatus);
display(2, "End Test MagCard\n");
return SUCC;
}
WORD TestProCard(HICC hCT)
{
unsigned short usSW1SW2;
WORD usRet;
unsigned char ucTmpBuf[255], ucLen = 0;
unsigned char ucSndBuf[255], ucRecBuf[255];
usRet = MifResetPro(hCT, IDLE, 0, ucTmpBuf, &ucLen, &usSW1SW2);
//选择文件
displays(3, 1, "Begin Select File...\n");
ucSndBuf[0] = 0x3f;
ucSndBuf[1] = 0x00;
memset(ucRecBuf, 0, sizeof(ucRecBuf));
usRet = MifExchangePro(hCT, 0, 0xa4, 0, 0x00, 0x02, ucSndBuf, 0x0, ucRecBuf, &ucLen, &usSW1SW2);
if (usRet != SUCC)
{
GetErrorMessage(usRet, ucTmpBuf);
display(2, ucTmpBuf);
}
else
{
display_ic_status();
}
//获得随机数
displays(2, 1, "Begin Get Random...\n");
memset(ucRecBuf, 0, sizeof(ucRecBuf));
usRet = MifExchangePro(hCT, 0, 0x84, 0, 0x00, 0x00, ucSndBuf, 0x04, ucRecBuf, &ucLen, &usSW1SW2);
if (usRet != SUCC)
{
GetErrorMessage(usRet, ucTmpBuf);
display(2, ucTmpBuf);
}
else
{
display_ic_status();
}
return SUCC;
}
WORD TestMifCard(HICC hCT)
{
int i;
unsigned char ucCardType[4], ucKey[10], ucSector = 1, ucCardId[4];
unsigned char ucStatus, ucSize;
WORD usRet;
unsigned char ucTmpBuf[17];
char szErrMessage[100];
BuzzerMs(hCT, 5);
memset(ucKey, 0xff, sizeof(ucKey));
memset(ucCardId, 0, sizeof(ucCardId));
for (i = 0; i < 2; i++)
{
//完成在天线范围内的TYPE A卡的激活操作
usRet = MifRequest(hCT, 0, ucCardType, &ucStatus);
if (ucStatus == 0)
{
break;
}
}
//防冲突处理,在被激活的多张卡片中选择一张卡
PubDisplays(1, 1, "MifAnticoll.......");
usRet = MifAnticoll(hCT, ucCardId, &ucStatus);
if (usRet != ICCER_OK)
{
return usRet;
}
GetMifErrMessage(ucStatus, szErrMessage);
PubDisplays(1, 1, "%s\n", szErrMessage);
//选择指定卡号的卡
PubDisplays(1, 1, "MifSelect.........");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -