亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? testpad03.c

?? 讀卡器編程實例------Reader programming examples
?? C
?? 第 1 頁 / 共 3 頁
字號:
/******************************************************************************
 *
*                             TestPad03.C   V1.0.3.0
 *
 *							  用于測試PAD03的接口函數
 *
 * Author        :- Shen Qun
 * System        :- VC 6.0 or STAR POS
 * Last modified :- 2007.08.16
 * Funciton		 :- Test Api for pinpad 
 *
 * Copyright     : Copyright 2006 LANDI
 * notice        : All rights reserved.
 ******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include "LD_Reader.h"

#define CLA_CODE	0x00
void					debug_disps(char line, char *_data, int len);

unsigned char			reader_type = 255;

void display_ic_status(void)
{
	unsigned char ucStatus, ucSw1, ucSw2;
	ucStatus = get_status(&ucSw1, &ucSw2);

#ifdef _POS_
	displays(7, 1, "STATUS=%02x SW1SW2=%02x%02x", CARD_STATUS, CARD_SW1, CARD_SW2);
#else
	//printf("STATUS=%02x, SW1=%02x, SW2=%02x\n", CARD_STATUS, CARD_SW1, CARD_SW2);
	printf("STATUS=%02x, SW1=%02x, SW2=%02x\n", ucStatus, ucSw1, ucSw2);
#endif
}

#ifndef _POS_

// 用于Windows下函數測試
void display_cen(int line, char *data)
{
	printf("%s", data);
}

void display_inv(int line, char *data)
{
	printf("%s", data);
}

void displays(int line, int col, char *format, ...)
{
	va_list ap;
	int		arg;

	va_start(ap, format);		/* Variable argument begin */

	arg = va_arg(ap, int);
	printf(format, arg);

	va_end(ap);					/* Variable argument end */
}

void display(int line, char *format, ...)
{
	va_list ap;
    char szDispStr[500];

	va_start(ap, format);
    vsprintf(szDispStr, format, ap);
    va_end(ap);
	printf(szDispStr);
}

void debug_disps(char line, char *_data, int len)
{
	int i;

	for (i = 0; i < len; i++)
	{
		display(1, "%02X ", (unsigned char) _data[i]);
	}

	display(1, "\n");
}

int inkey(int time)
{
	return 0;
}

void clearall()
{
}

void cls()
{
}

void ResetTime()
{
}

#else
void debug_disps(char line, char *_data, int len)
{
	char	str1[20], str2[20];
	int		i, j;

	j = 0;
	do
	{
		memset(str1, 0, 20);
		for (i = 0; i < 8; i++)
		{
			if ((j + i) >= len)
			{
				str1[i * 2] = 0;
				break;
			}

			sprintf(str1 + i * 2, "%02x", _data[j + i]);
		}

		sprintf(str2, "%d~%d of %d", j + 1, j + i, len);
		displays(line, 1, str2);
		displays(line + 1, 1, str1);
		inkey(0);
		j += 8;
	} while (j < len);
}
#endif
#ifndef _POS_
void PubDisplays(char dln, char dlc, char *pszFmt, ...)
{
	va_list ap;
	int		arg;

	va_start(ap, pszFmt);		/* Variable argument begin */

	arg = va_arg(ap, int);
	printf(pszFmt, arg);

	va_end(ap);					/* Variable argument end */
}

#else
void PubDisplays(char dln, char dlc, char *pszFmt, ...)
{
	char	szDispStr[500];
	va_list VarList;

	va_start(VarList, pszFmt);
	vsprintf(szDispStr, pszFmt, VarList);
	va_end(VarList);

	displays(dln, dlc, "%s", szDispStr);
	return;
}
#endif
int ReaderPowerOn(int expect_code, unsigned char ucReaderHandle)
{
	short			sRet;
	unsigned char	ucTmpBuf[100], ucBufLen;
	unsigned char	ucCardNo = 0;

	sRet = power_up(ucReaderHandle, ucCardNo, ucTmpBuf, &ucBufLen);
	display_ic_status();
	debug_disps(3, (char *) ucTmpBuf, (int) ucBufLen);
	return SUCC;
}

void ReaderAPDU(unsigned int uiLen_APDU, unsigned char *ucCommand_APDU)
{
	unsigned char	ucResponse_APDU[512];
	unsigned char	Lc = 0, Le = 0;
	unsigned char	ucCardNo = 0;
	short			sRet;
	unsigned short	usLen;
	unsigned char	ucReaderHandle = 1;

	usLen = 0;					//處理61 6C

	//usLen = 2;		//不處理 61 6C
	if (uiLen_APDU == 4)		//case 1
	{
		Lc = 0;
		Le = 0;
	}
	else if (uiLen_APDU == 5)	//case 2
	{
		Lc = 0;
		Le = ucCommand_APDU[4];
	}
	else if (uiLen_APDU == (unsigned int) (5 + ucCommand_APDU[4]))	// case 3
	{
		Lc = ucCommand_APDU[4];
		Le = 0;
	}
	else if (uiLen_APDU == (unsigned int) (6 + ucCommand_APDU[4]))	// case 4
	{
		Lc = ucCommand_APDU[4];
		Le = ucCommand_APDU[4 + Lc + 1];
		usLen = 0;
	}
	else
	{
		return;
	}

	sRet = ICCTransmit
		(
			ucReaderHandle,
			ucCardNo,
			ucCommand_APDU[0],
			ucCommand_APDU[1],
			ucCommand_APDU[2],
			ucCommand_APDU[3],
			Lc,
			ucCommand_APDU + 5,
			Le,
			ucResponse_APDU,
			&usLen
		);

	display_ic_status();
	debug_disps(3, (char *) ucResponse_APDU, (int) usLen);
	if (usLen == 0 && CARD_SW1 == 0x61)
	{
		Lc = 0;
		Le = CARD_SW2;
		memset(ucResponse_APDU, 0, sizeof(ucResponse_APDU));
		sRet = ICCTransmit
			(
				ucReaderHandle,
				ucCardNo,
				0x00,
				0xC0,
				0x00,
				0x00,
				Lc,
				ucCommand_APDU + 5,
				Le,
				ucResponse_APDU,
				&usLen
			);
		display_ic_status();
		debug_disps(3, (char *) ucResponse_APDU, (int) usLen);
	}

	return;
}

int test_4428(unsigned char hd_no)
{
	char	out[1024], length, key[256];
	char	tmp_str[100];
	short	ret;
	char	status, err_no;

	ret = power_up_4428(hd_no, &status, &length, out);
	if (CARD_STATUS != 0)
	{
		return FAIL;
	}

	if (ret != SUCC)
	{
		display(1, "(power_up_4442)");
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}

	debug_disps(3, out, length);

	if (ICC_in(hd_no) == 0)
	{
		ret = read_SIM4428(hd_no, 0, 20, out);
		if (ret != SUCC)
		{
			display(1, "(read_SIM4428)");
			GetErrorMessage(ret, tmp_str);
			display(2, "%s", tmp_str);
		}

		debug_disps(3, out, 20);
	}
	else
	{
		display(1, "No Card Insert\n");
		return FAIL;
	}

	ret = read_ERR_SIM4428(hd_no, &err_no);
	if (CARD_STATUS != 0)
	{
		return FAIL;
	}

	display(2, "err_no=%d\n", err_no);

	key[0] = (char) 0x67;
	key[1] = (char) 0xC6;
	ret = verify_SIM4428(hd_no, key, &err_no);
	if (err_no != 0)
	{
		return FAIL;
	}

	if (ret != SUCC)
	{
		display(1, "(verify_4428)");
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}

	display(2, "err_no=%d\n", err_no);

	ret = read_SIM4428(hd_no, 1021, 500, out);
	if (ret != SUCC)
	{
		display(1, "(read_SIM4428)");
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}

	debug_disps(3, out, 10);

	memset(out, 0, sizeof(out));
	out[0] = (char) 0x12;
	out[1] = (char) 0x23;
	out[2] = (char) 0x55;
	out[3] = (char) 0xaa;
	ret = write_SIM4428(hd_no, 10, 10, out);
	if (CARD_STATUS != 0)
	{
		return FAIL;
	}

	if (ret != SUCC)
	{
		display(1, "(write_4428)");
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}

	return SUCC;
}

int test_4442(unsigned char hd_no)
{
	char	out[256], length, key[256];
	char	tmp_str[100];
	short	ret;
	char	status, err_no;

	ret = power_up_4442(hd_no, &status, &length, out);
	if (CARD_STATUS != 0)
	{
		return FAIL;
	}

	if (ret != SUCC)
	{
		display(1, "(power_up_4442)");
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}

	debug_disps(3, out, length);

	if (ICC_in(hd_no) == 0)
	{
		ret = read_SIM4442(hd_no, 0, 20, out);
		if (ret != SUCC)
		{
			display(1, "(read_SIM4428)");
			GetErrorMessage(ret, tmp_str);
			display(2, "%s", tmp_str);
		}

		debug_disps(3, out, 20);
	}
	else
	{
		display(1, "No Card Insert\n");
		return FAIL;
	}

	key[0] = (char) 0xB6;
	key[1] = (char) 0x23;
	key[2] = (char) 0x07;
	ret = verify_SIM4442(hd_no, key, &err_no);
	if (err_no != 0)
	{
		return FAIL;
	}

	if (ret != SUCC)
	{
		display(1, "(verify_4442)");
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}

	display(2, "err_no=%d\n", err_no);

	ret = read_SIM4442(hd_no, 32, 3, out);
	status = CARD_STATUS;
	if (ret != SUCC)
	{
		display(1, "(read_SIM4442)");
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}

	debug_disps(3, out, 3);

	memset(out, 0, sizeof(out));
	out[0] = (char) 0xab;
	out[1] = (char) 0xcd;
	out[2] = (char) 0xef;
	out[3] = (char) 0xaa;
	ret = write_SIM4442(hd_no, 32, 10, out);
	if (CARD_STATUS != 0)
	{
		return FAIL;
	}

	if (ret != SUCC)
	{
		display(1, "(write_4442)");
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}

	ret = read_SIM4442(hd_no, 32, 3, out);
	if (ret != SUCC)
	{
		display(1, "(read_SIM4442)");
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}

	debug_disps(3, out, 4);

	return SUCC;
}

int	test_atmel102(unsigned char hd_no )
{
	char out[256],length, key[256];
	short 	ret;
	uchar	status, err_no;
	char	tmp_str[100];

	ret = power_up_AT88102(hd_no, &status, &length, out);

	if ( ICC_in(hd_no) == 0 )
		ret = read_AT88102 (hd_no, 0, 2, out);

	ret = read_AT88102(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, 10, 2, out);

	ret = read_AT88102(hd_no, 24, 2, out);

	key[0] = (char)0xf0;
	key[1] = (char)0xf0;
	ret = verify_userkey_AT88102( hd_no, key, &err_no);
	if (ret != SUCC)
	{
		GetErrorMessage(ret, tmp_str);
		display(2, "%s", tmp_str);
	}
	if (CARD_STATUS != 0)
	{
		GetErrorMessage(CARD_STATUS, tmp_str);
		display(2, "%s %d", tmp_str, (int)err_no);
	}

	out[0] = 0xff;
	ret = write_AT88102_all(hd_no, 2, 1, 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 %d", tmp_str, (int)err_no);
	}

	key[0] = (char)0x12;
	key[1] = (char)0x34;
	ret = change_userkey_AT88102(hd_no, key);
	if (ret != SUCC)
	{
		GetErrorMessage(ret, tmp_str);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区在线观看| 国产精品福利影院| 国产一区二区三区国产| 国产欧美一区二区三区网站| jlzzjlzz亚洲女人18| 亚洲精品v日韩精品| 欧美日韩一卡二卡三卡 | 亚洲天堂a在线| 色噜噜狠狠色综合欧洲selulu| 亚洲一级二级三级| 欧美一级一级性生活免费录像| 国产一区日韩二区欧美三区| 亚洲国产精品二十页| 91麻豆.com| 日韩黄色在线观看| 韩国女主播一区| 国产日韩欧美激情| 色婷婷亚洲婷婷| 日本美女视频一区二区| 国产日韩av一区| 一本大道久久a久久精二百| 五月婷婷激情综合网| 久久夜色精品国产噜噜av| 风间由美一区二区三区在线观看| 亚洲激情欧美激情| 日韩欧美国产成人一区二区| 不卡一卡二卡三乱码免费网站| 亚洲大型综合色站| 欧美精品一区二区三区蜜臀| 99久久精品费精品国产一区二区| 午夜一区二区三区在线观看| 国产亚洲一区二区三区四区| 在线观看一区日韩| 韩国三级中文字幕hd久久精品| 成人免费一区二区三区视频| 欧美一级免费大片| eeuss国产一区二区三区| 天堂影院一区二区| 亚洲国产精品激情在线观看 | 欧美日本不卡视频| 国产一区二区三区免费在线观看| 亚洲精品视频一区二区| 精品卡一卡二卡三卡四在线| 亚洲欧美另类小说| 日韩一区二区三区四区| 91丨九色丨尤物| 久久66热偷产精品| 亚洲电影在线播放| 国产精品天干天干在观线| 欧美精品1区2区| 成人精品小蝌蚪| 免费人成在线不卡| 亚洲激情在线激情| 国产日本欧洲亚洲| 欧美一区二区在线免费观看| 91视视频在线直接观看在线看网页在线看| 免费久久99精品国产| 亚洲精品乱码久久久久久日本蜜臀| 精品久久久久一区二区国产| 欧美亚洲另类激情小说| 成人深夜在线观看| 久久se精品一区精品二区| 一区二区三区中文字幕精品精品| 国产三级久久久| 日韩色视频在线观看| 在线观看精品一区| 成人精品免费看| 韩国视频一区二区| 日本 国产 欧美色综合| 一区二区三区**美女毛片| 中文字幕高清不卡| 久久一区二区视频| 欧美一区二区三区喷汁尤物| 欧洲亚洲国产日韩| 99精品热视频| 成人午夜电影网站| 国产乱人伦偷精品视频免下载 | 蜜臀av在线播放一区二区三区| 一区二区三区四区不卡视频| 成人av集中营| 国内一区二区在线| 免费一级欧美片在线观看| 亚洲sss视频在线视频| 国产精品国产三级国产有无不卡 | 欧美大片在线观看一区二区| 欧美三片在线视频观看| 欧美综合一区二区| 一本大道综合伊人精品热热 | 色综合天天综合网国产成人综合天| 国产精品资源网站| 国产在线精品一区二区不卡了| 蜜臀av性久久久久蜜臀aⅴ| 视频一区二区欧美| 亚洲不卡一区二区三区| 亚洲线精品一区二区三区八戒| 亚洲欧美欧美一区二区三区| 最新不卡av在线| 亚洲欧美色一区| 亚洲精品视频一区| 亚洲激情综合网| 亚洲一区二区三区视频在线| 一区二区国产盗摄色噜噜| 亚洲一区二区精品3399| 亚洲综合在线视频| 亚洲午夜精品在线| 在线亚洲人成电影网站色www| 一本大道久久a久久精二百| 色婷婷久久久亚洲一区二区三区 | 专区另类欧美日韩| 国产精品久久综合| 国产女同互慰高潮91漫画| 国产欧美日韩另类一区| 国产精品欧美一区二区三区| 国产精品久久久久久久久搜平片| 国产精品久久久久久久久快鸭| 国产精品看片你懂得| 亚洲色欲色欲www| 亚洲综合小说图片| 水野朝阳av一区二区三区| 日韩avvvv在线播放| 久久精品国产77777蜜臀| 国产毛片一区二区| 成av人片一区二区| 色综合久久天天综合网| 欧美色图12p| 制服视频三区第一页精品| 欧美mv和日韩mv国产网站| 久久久综合激的五月天| 国产精品三级电影| 一区二区三区中文字幕精品精品| 4438x亚洲最大成人网| 日韩一区二区三区av| 久久久久久久久久久久久夜| 国产精品另类一区| 亚洲在线视频免费观看| 日韩电影在线免费| 国产麻豆成人传媒免费观看| 成人禁用看黄a在线| 在线视频你懂得一区| 91精品啪在线观看国产60岁| 久久影院视频免费| 亚洲品质自拍视频网站| 天天综合色天天| 国产一区二区三区在线看麻豆| av成人免费在线| 欧美日本一区二区| 久久久99精品免费观看不卡| 亚洲蜜臀av乱码久久精品| 日日嗨av一区二区三区四区| 国产精一品亚洲二区在线视频| av电影天堂一区二区在线观看| 欧美精品亚洲二区| 久久精品欧美日韩精品| 亚洲一区二区欧美激情| 寂寞少妇一区二区三区| 97se亚洲国产综合在线| 欧美一级午夜免费电影| 国产精品久久一级| 日日夜夜一区二区| 福利一区福利二区| 欧美日韩高清一区二区三区| 激情综合色播五月| 色综合一区二区| 精品国产免费人成电影在线观看四季| 国产精品国产三级国产专播品爱网| 首页国产欧美久久| 成人精品一区二区三区中文字幕| 欧美日韩国产精品成人| 欧美极品xxx| 日本午夜一区二区| 91亚洲资源网| 久久青草欧美一区二区三区| 亚洲国产一区二区视频| 国产成人亚洲综合色影视| 欧美日韩另类一区| 国产精品入口麻豆原神| 日本不卡一二三区黄网| 91亚洲精品久久久蜜桃| 精品成a人在线观看| 亚洲国产精品麻豆| 成人听书哪个软件好| 91精品国产乱| 亚洲精品视频在线看| 国产激情一区二区三区桃花岛亚洲| 欧美日韩一区二区三区高清| 中文字幕在线播放不卡一区| 看电视剧不卡顿的网站| 在线日韩一区二区| 国产精品免费看片| 久久国产婷婷国产香蕉| 欧美日韩国产高清一区| 中文字幕一区二区三区在线播放| 精品一区二区三区久久久| 三级影片在线观看欧美日韩一区二区 | 国产呦萝稀缺另类资源| 欧美午夜精品久久久久久孕妇| 中文字幕第一区| 国内欧美视频一区二区| 欧美精品99久久久**| 亚洲综合小说图片|