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

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

?? export.cpp

?? 對于銀行卡卡的讀取控制
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

// 讀卡器
#include "stdafx.h"
#include "cardreader.h"
#include "export.h"
#include "kde_dll.h"
#include <afxmt.h>
#include <mbstring.h>


CString  g_ICRStatusMsg;//保存了事件狀態的信息
UINT g_ICRStatusID = 0;//保存了事件狀態的值,用于給用戶返回狀態
char  g_res[1024] = {{0}};//保存了結果
long g_len = 0;//保存了結果占用的空間

/*
BOOL g_bFlagEventProc;//在響應了回調函數后置標志

void CALLBACK ICR_EventProc (DWORD dwEvent, DWORD dwResult, DWORD dwAPIError, LPVOID lpvArgList)
{
	if (dwEvent != ICR_EVENT_ERROR)
	{
		if (ICR_GetResponse (g_res, 1024, &g_len) == ICR_SUCCESS)
		{
			if (dwEvent == ICR_EVENT_RCV_EOT)
			{
				g_ICRStatusMsg = "Got EOT";
				g_res[0] = 'E';
				g_res[1] = 'O';
				g_res[2] = 'T';
			}
			else
				g_ICRStatusMsg = "Got Response";
		}
		else
		{
			g_ICRStatusMsg = "ERROR: Can't Display Response";
		}
		g_ICRStatusID = dwEvent;
	}
	else
	{
		g_ICRStatusID = dwResult;
		switch (dwResult)
		{
		case ICR_RESULT_ERR_NOT_CONNECT:
			g_ICRStatusMsg = "ERROR: Not Connect to C/R";
			break;
		case ICR_RESULT_ERR_DISCONNECT:
			g_ICRStatusMsg = "ERROR: Disconnect to C/R";
			break;
		case ICR_RESULT_ERR_SND_NOT_CMD:
			g_ICRStatusMsg = "ERROR: Send Command is failed";
			break;
		case ICR_RESULT_ERR_SND_NOT_ENQ:
			g_ICRStatusMsg = "ERROR: Send ENQ is failed";
			break;
		case ICR_RESULT_ERR_SND_NOT_EOT:
			g_ICRStatusMsg = "ERROR: Send EOT is failed";
			break;
		case ICR_RESULT_ERR_RCV_NOT_ACK:
			g_ICRStatusMsg = "ERROR: Can't Receive ACK";
			break;
		case ICR_RESULT_ERR_RCV_NOT_RES:
			g_ICRStatusMsg = "ERROR: Can't Receive Response";
			break;
		case ICR_RESULT_ERR_RCV_NOT_EOT:
			g_ICRStatusMsg = "ERROR: Can't Receive EOR";
			break;
		case ICR_RESULT_ERR_RCV_NAK:
			g_ICRStatusMsg = "ERROR: Received NAK";
			break;
		case ICR_RESULT_ERR_RCV_BCC: 
			g_ICRStatusMsg = "ERROR: Bad Response(BCC ERR)";
			break;
		case ICR_RESULT_ERR_RCV_DLE:
			g_ICRStatusMsg = "ERROR: Bad Response(DLE ERR)";
			break;
		case ICR_RESULT_ERR_RCV_PARITY:
			g_ICRStatusMsg = "ERROR: Bad Response(Parity ERR)";
			break;
		case ICR_RESULT_ERR_RCV_FRAME:
			g_ICRStatusMsg = "ERROR: Bad Response(Frame ERR)";
			break;
		case ICR_RESULT_ERR_RCV_DATAFULL:
			g_ICRStatusMsg = "ERROR: Bad Response(Data Overflow)";
			break;
		case ICR_RESULT_ERR_RCV_BUFFERFULL:
			g_ICRStatusMsg = "ERROR: Bad Response(Buffer flow)";
			break;
		case ICR_RESULT_ERR_RCV_TIMEOUT:
			g_ICRStatusMsg = "ERROR: Receive Time out";
			break;
		case ICR_RESULT_ERR_RCV_IOERROR:
			g_ICRStatusMsg = "ERROR: I/O Error";
			break;
		case ICR_RESULT_ERR_API:
			g_ICRStatusMsg = "ERROR: Win API Error";
			break;
		default:
			g_ICRStatusMsg = "ERROR: Unknown ERROR; Report to Maintainer";
		}
	}
	g_bFlagEventProc = TRUE;
//	MessageBox(NULL, (LPCSTR)g_res, NULL, MB_OK);
}
*/



/*
* return :
 0 : 命令執行成功
 -2 :Error
 -3:timeout
*/
int mySendCommand(int type, char * cmd, int length)
{
	int ret = 0;
	ret = SendCommand(type, cmd, length, g_res, g_len);
	return ret ;
}

//initial c/r 
//初始化讀卡器
extern "C" _declspec( dllexport) LRESULT  crInitialize()
{

	LRESULT result = 0;
	if ( COM_Open(COM1, CBR_9600,8,ONESTOPBIT,NOPARITY) == FALSE ) {// open failed
		result = CRERROR_INIT;//設備初始化錯
		return result ;
	}
	
//	char * cmd;
	char cmd[8] = {{0}};
	cmd[0] = 0x30;
	cmd[1] = 0x30;
	cmd[2] = 0x30;
	cmd[3] = 0x30;
	cmd[4] = 0x30;
	cmd[5] = 0x30;
	cmd[6] = 0x30;
/*	cmd[7] = 0x30;
	cmd[8] = 0x30;
	cmd[9] = 0x30;
	cmd[10] = 0x30;
	cmd[11] = 0x30;
	cmd[12] = 0x30;
	cmd[13] = 0x30;
*/
//	cmd = "C000000";
	int a = 0;
	int b = 0 ;
	int errCode = 0;
	b = KDE_Initialize(INIT_EJECT, cmd, errCode);
	//SendCommand(INIT_EJECT, &cmd[0], 14, &g_res[0], g_len);

//	mySendCommand(cmd, 3, 20000);


	/*	測試問題所在
		int  cm = 0 ;
		CString t,tmp;
		t.Format("g_res = %s\n",g_res);
		tmp.Format("cm = %d",cm);
		t += tmp;
		MessageBox(NULL,t,"命令執行情況",MB_OK);
	*/
		/******************對返回信息進行判斷--開始*******************************/
/*		if (g_res[0] == 'P' && g_res[1] == '0' && g_res[2] == '0' && g_res[3] == '0' && g_res[4] =='1') {
	#if _DEBUG
			MessageBox(NULL, "card init ok", NULL, MB_OK);
	#endif
			result = 0;//只要初始化成功,就返回0

		}
		else if (g_res[0] == 'P' && g_res[1] == '0' && g_res[2] == '0' && g_res[3] == '0' && g_res[4] =='0') {
	#if _DEBUG
			MessageBox(NULL, "no card init ok", NULL, MB_OK);
	#endif
			result = 0;// 無卡OK,只要初始化成功,就返回0
		}
		else {
	#if _DEBUG
			MessageBox(NULL, "init fail", NULL, MB_OK);
	#endif
			result = CRERROR_INIT;//設備初始化錯
		}*/
		/******************對返回信息進行判斷--結束*******************************/
		memset(g_res, 0, 1024);
		return result;//Result;
}

/*-------------------*
INPUT: 
  uControlCode:
	CRC_ENTRY		*
	CRC_REMOVE		*
	CRC_SWALLOW		*
	CRC_ENABLE		*
	CRC_DISABLE-----*/

extern "C" _declspec( dllexport) LRESULT  crControl(IN USHORT uControlCode)
{
	LRESULT   dwReturn ;
	switch (uControlCode)
	{
		case CRC_ENTRY:// 進卡
		{ 
			dwReturn = InTakeCard();
			break;
		}
		case CRC_REMOVE://出卡
		{ 
			dwReturn = TakeOutCard();
			break;
		}
		case CRC_SWALLOW:// 吞卡
		{ 
			dwReturn = SwallowCard();
			break;
		}

		case CRC_ENABLE:// 允許進卡
		{ 
			dwReturn = PermitIn();
			break;
		}
		case CRC_DISABLE:// 禁止進卡
		{ 
			dwReturn = UnPermitIn();
			break;
		}
		default : 
			break;
	}

	return dwReturn ;
}

// 檢測卡類型,硬件不能提供此功能
extern "C" _declspec( dllexport) LRESULT  crCheckCard(IN ULONG ulCardType)
{
//	MessageBox(NULL,"不能提供此功能","信息",MB_OK);
	return CRERROR_UNSUPPORT ;
}




extern "C" _declspec( dllexport) LRESULT  crGetStatus()
{
	char cmd[8] = {{0}};
	cmd[0] = '0';
	cmd[1] = '0';
	cmd[2] = '0';
	cmd[3] = '0';
	cmd[4] = '0';
	cmd[5] = '0';
	cmd[6] = '0';

	int  cm = 0 ;

//	int ret = 0;
//	ret = KDE_StatusCheck(STAT_REPORT, g_res, cm, 3000);

	cm = mySendCommand(STAT_REPORT, cmd, 7);

	LRESULT result = 0;

/*	測試問題所在
	CString t,tmp;
	t.Format("g_res = %s\n",g_res);
	tmp.Format("cm = %d",cm);
	t += tmp;
	MessageBox(NULL,t,"命令執行情況",MB_OK);
*/
	/******************對返回信息進行判斷--開始*******************************/
	if (strncmp((LPCSTR)g_res, "P1000", 5) == 0) {
#ifdef _DEBUG
//		MessageBox(NULL, "無卡!", "信息", MB_OK);
#endif
		result = CRERROR_EMPTY;
	}
	else if (strncmp((LPCSTR)g_res, "P1002", 5) == 0) {
#ifdef _DEBUG
		MessageBox(NULL, "有卡在里面!", "信息", MB_OK);
#endif
		result = CRERROR_INSIDE;
	}
	else if (strncmp((LPCSTR)g_res, "P1001", 5) == 0) {
#ifdef _DEBUG
//		MessageBox(NULL, "卡在門邊!", "信息", MB_OK);
#endif
		result = CRERROR_GATE;
	}
	else {
#ifdef _DEBUG
		MessageBox(NULL, "查詢狀態不成功!", "信息", MB_OK);
#endif
		result = CRERROR_STATUS;
	}
	/******************對返回信息進行判斷--結束*******************************/
	memset(g_res, 0, 1024);
	return result;//Result;
}


extern "C" _declspec( dllexport) LRESULT   crUnInit()// no CMD for available use
{
	LRESULT result = 0;

	result = crGetStatus();
	switch (result ) {

	case CRERROR_EMPTY:
		COM_Close();
		break;

	case CRERROR_INSIDE:
		if ( TakeOutCard() == 0) { // 出卡成功
			COM_Close();
		}
		break;

	case CRERROR_GATE:
		COM_Close();
		break;

	case CRERROR_STATUS:
		//goto STATUS;
		break;
	}

	return 0;
}

extern "C" _declspec( dllexport) LRESULT    crWrite(IN ULONG ulSegIndex,IN ULONG ulOffset , IN ULONG size, IN PUCHAR pDataBuffer,OUT PULONG writeSize)
{
	/*switch (ulSegIndex)
	{
	case	CRTRACK1:// 寫第一磁道
		WriteTrack1(ulSegIndex,ulOffset,size,pDataBuffer,writeSize);
		break;

	case	CRTRACK2:// 寫第2磁道
		WriteTrack2(ulSegIndex,ulOffset,size,pDataBuffer,writeSize);
		break;

	case	CRTRACK3:// 寫第3磁道
		WriteTrack3(ulSegIndex,ulOffset,size,pDataBuffer,writeSize);
		break;

	default:
		break;

	}*/
//	MessageBox(NULL,"目前硬件不支持此功能!","信息",MB_OK);
	return CRERROR_UNSUPPORT ;
}

// 讀多磁道還是單磁道的卡??????????????????????????????????
extern "C" _declspec( dllexport) LRESULT 	crRead(IN ULONG ulSegIndex , IN ULONG ulOffset,IN ULONG ulSize,OUT PUCHAR pDataBuffer,OUT  PULONG ulReadSize)
{
	LRESULT  result = 0;
	int TempReadSize;
	TempReadSize=0;
	
//	CString t,m;
//	t.Format("%d",(int)ulSegIndex);
//	MessageBox(NULL,t,NULL,MB_OK);

	switch (ulSegIndex)
	{
	case	CRTRACK1:// 讀第一磁道
			result = ReadTrack1(CRTRACK1,0,ulSize,pDataBuffer,TempReadSize);
			break;
		

	case	CRTRACK2:// 讀第2磁道
		
			result = ReadTrack2(CRTRACK2,0,ulSize,pDataBuffer,TempReadSize);
//			m.Format("%s",pDataBuffer);
//			AfxMessageBox(m,NULL,MB_OK);
			break;
		

	case	CRTRACK3:// 讀第3磁道
		
			result = ReadTrack3(CRTRACK3,0,ulSize,pDataBuffer,TempReadSize);	
	//		m.Format("%s",pDataBuffer);
	//		AfxMessageBox(m,NULL,MB_OK);

			break;
		
	}
   *ulReadSize=TempReadSize;
	return result;
}

extern "C" __declspec(dllexport) LRESULT   GetDeviceDesc(OUT PDEVICEDESC pDeviceDesc)
{
	char a[32]={0};// "";
	char b[32] = {0};//"";
	char c[32]= {0};//"ORMON V2BF";
	char d[4] = "";

	strcpy(a,"CardReader");
	strcpy(b,"KDE Reader");
	strcpy(c,"KDE");
	pDeviceDesc->cbSize = sizeof(DEVICEDESC);
	pDeviceDesc->usVendorID = 0;
	pDeviceDesc->usProductID = 0;
	pDeviceDesc->szDeviceID = 1002;
	memcpy(pDeviceDesc->szDevice,a,32);
	memcpy(pDeviceDesc->szDeivceName,b,32);
	memcpy (pDeviceDesc->szManufacturer,c,32);
	pDeviceDesc->cbExtSize=0;
	memcpy(pDeviceDesc->pExtInfo,d,strlen(d));

	return 0;

}



// 進卡
LRESULT  InTakeCard()
{
	char cmd[8] = {{0}};
	cmd[0] = '0';
	cmd[1] = '0';
	cmd[2] = '0';
	cmd[3] = '0';
	cmd[4] = '0';
	cmd[5] = '0';
	cmd[6] = '0';

	int  cm = 0 ;

	LRESULT  value = 0;
	cm = mySendCommand(ENTRY_MS, cmd, 7);
	/******************對返回信息進行判斷--開始*******************************/
	if ( cm == 1 ) {// success

		if (g_res[0] == 'P' && g_res[1] == '2' && g_res[2] == '0' && g_res[3] == '0' && g_res[4] == '0') {
			while (1) {
				if ( crGetStatus() == CRERROR_INSIDE) {
		#if _DEBUG
			MessageBox(NULL, "進卡成功!", "信息", MB_OK);
		#endif
					value = 0;
					break;
				} 
				Sleep(200);
			}
		}
		else if (g_res[0] == 'P' && g_res[1] == '2' && g_res[2] == '0' && g_res[3] == '0' && g_res[4] == '2') {
			while (1) {
				if ( crGetStatus() == CRERROR_INSIDE) {
		#if _DEBUG
			MessageBox(NULL, "重進卡成功!", "信息", MB_OK);
		#endif
					value = 0;
					break;
				} 
				Sleep(200);
			}
		}
	}
	else if (cm == -2) {
	#if _DEBUG
		MessageBox(NULL, "進卡不成功!", "信息", MB_OK);
		value = CRERROR_CARDINPUT;
	#endif
	}
	else if ( cm == -3 ) {//命令執行不成功,超時
	#if _DEBUG
		MessageBox(NULL, "進卡超時!", "信息", MB_OK);
	#endif
		value = CRERROR_ENTRY_CARRY;
	}
	else {
	#if _DEBUG
			MessageBox(NULL, "進卡不成功!", "信息", MB_OK);
	#endif
			value = CRERROR_CARDINPUT;
	}
	/******************對返回信息進行判斷--結束*******************************/
	memset(g_res, 0, 1024);
	return value;//Result;
}

// 出卡
LRESULT  TakeOutCard()
{
	char cmd[8] = {{0}};
	cmd[0] = '0';
	cmd[1] = '0';
	cmd[2] = '0';
	cmd[3] = '0';
	cmd[4] = '0';

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久久久| 久久国产生活片100| 久久新电视剧免费观看| 国产三级欧美三级| 欧美一区二区三区影视| 久久精品网站免费观看| 成人免费看黄yyy456| 欧美日韩国产高清一区| www亚洲一区| 国产成人综合网| 26uuu另类欧美亚洲曰本| 国产乱码字幕精品高清av | 97久久久精品综合88久久| 91精品国产欧美一区二区| 韩国一区二区三区| 欧美videos中文字幕| 一区二区三区中文字幕电影| 久久精品国产秦先生| 最新高清无码专区| 美国三级日本三级久久99| 欧美日韩精品专区| 国产精品影视网| 亚洲成人tv网| 91福利视频网站| 中文字幕一区二区三区不卡| 国产精品一区二区久激情瑜伽 | 丝袜美腿亚洲一区二区图片| 色婷婷综合久久久中文一区二区| 国产精品美女视频| 91亚洲资源网| 国产精品白丝在线| 91在线精品一区二区三区| 亚洲国产成人porn| 欧美日韩电影在线| 国产.欧美.日韩| 国产精品美女久久久久久2018| 欧美巨大另类极品videosbest | 国产在线播放一区二区三区| 欧美精品一区二区三区蜜桃视频| 另类小说视频一区二区| 综合久久一区二区三区| 国产亚洲一区二区三区四区| 欧美日韩黄色一区二区| 97久久久精品综合88久久| 国产在线精品免费av| 九九精品一区二区| 久久综合中文字幕| 精品日韩欧美在线| 日韩欧美色综合| 波多野结衣的一区二区三区| 亚洲卡通欧美制服中文| 91精品国产91久久综合桃花| 欧美在线免费观看视频| 日本不卡中文字幕| 欧美极品另类videosde| 91福利视频在线| 一本色道久久加勒比精品| 91视频.com| 色久优优欧美色久优优| a美女胸又www黄视频久久| 丁香网亚洲国际| 国产在线不卡一卡二卡三卡四卡| 国产一区欧美二区| 国产一区二区三区久久久| 久久av中文字幕片| 激情欧美一区二区三区在线观看| 久久av中文字幕片| 国产成人亚洲综合色影视| 国产98色在线|日韩| av电影在线观看完整版一区二区| 丁香婷婷综合色啪| 色av综合在线| 91精品国产91热久久久做人人| 91麻豆精品国产91久久久资源速度 | 日韩亚洲欧美在线| 成人av网址在线| 日本不卡高清视频| 国产农村妇女毛片精品久久麻豆 | 欧美日韩国产精选| 欧美一区二区播放| 久久先锋影音av| 亚洲美女一区二区三区| 欧美激情综合五月色丁香小说| 国产精品萝li| 丝袜美腿亚洲色图| 国产乱码字幕精品高清av| av在线一区二区| 欧美日韩高清一区| 国产日韩欧美亚洲| 一区二区三区四区高清精品免费观看 | 日韩免费观看高清完整版| 国产欧美一区二区在线| 亚洲影院在线观看| 日本一区二区三区免费乱视频| 国产精品美女视频| 久久99热这里只有精品| 91在线无精精品入口| 91精品国产入口| 亚洲欧洲性图库| 国内精品写真在线观看| 在线观看亚洲精品视频| 国产视频一区不卡| 婷婷夜色潮精品综合在线| 亚洲国产裸拍裸体视频在线观看乱了 | 日本强好片久久久久久aaa| 国产**成人网毛片九色 | 91麻豆swag| 久久综合久久综合久久| 亚洲图片欧美色图| 丁香亚洲综合激情啪啪综合| 日韩一区二区在线观看| 亚洲一区二区在线免费看| 成人精品国产免费网站| 欧美日韩国产经典色站一区二区三区| 久久久精品影视| 国产欧美1区2区3区| 日韩精品电影在线| 欧美日韩中文字幕精品| 91麻豆精品国产91久久久久| 欧美高清在线精品一区| 美国欧美日韩国产在线播放| 欧美在线一区二区三区| 亚洲视频电影在线| 懂色中文一区二区在线播放| 久久久蜜桃精品| 国产一区亚洲一区| 久久综合九色综合久久久精品综合| 亚洲.国产.中文慕字在线| 欧美日韩一区不卡| 夜色激情一区二区| 99热精品国产| 中文字幕在线观看不卡视频| 成人福利视频在线看| 欧美激情中文字幕一区二区| 成人午夜av在线| 337p粉嫩大胆噜噜噜噜噜91av| 日本不卡1234视频| 日韩精品一区二区三区在线 | 亚洲免费av观看| 91美女在线视频| 亚洲免费高清视频在线| caoporm超碰国产精品| 亚洲人妖av一区二区| 91麻豆文化传媒在线观看| 亚洲精品一二三| 91麻豆精品国产自产在线观看一区| 日韩精品一卡二卡三卡四卡无卡| 欧美亚洲愉拍一区二区| 日韩精品一区在线| 国产最新精品精品你懂的| 国产欧美精品国产国产专区| 99久久精品一区二区| 一区二区三区在线免费视频| 欧美在线观看一区| 免费精品视频在线| 亚洲精品在线一区二区| 久久99日本精品| 日韩三级电影网址| 国内精品不卡在线| 国产精品热久久久久夜色精品三区 | 欧美日韩综合在线| 国产乱子轮精品视频| 欧美国产激情一区二区三区蜜月| 91浏览器打开| 日本三级亚洲精品| 成人免费在线观看入口| 91麻豆精品国产91久久久久久久久 | 色综合久久88色综合天天6| 日韩高清欧美激情| 国产精品久久777777| 欧美亚一区二区| 国产精品99久久久久久久女警| 亚洲欧洲99久久| 91精品视频网| a美女胸又www黄视频久久| 午夜精品在线视频一区| 久久久亚洲午夜电影| 色88888久久久久久影院野外| 日韩va亚洲va欧美va久久| 亚洲精品一区二区三区蜜桃下载| 成人国产精品免费观看视频| 中文字幕中文在线不卡住| 欧美日韩一本到| 国产盗摄精品一区二区三区在线| 亚洲图片欧美一区| 国产精品久久久久久亚洲毛片| 日韩丝袜美女视频| 欧美日本在线观看| 色综合久久中文字幕综合网| 国产专区综合网| 久久精品国产亚洲高清剧情介绍 | 成人成人成人在线视频| 蜜臀av一区二区| 五月天亚洲精品| 亚洲欧洲三级电影| 国产午夜精品福利| 欧美变态tickling挠脚心| jiyouzz国产精品久久| 日韩福利视频网| 丝瓜av网站精品一区二区|