亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
另类欧美日韩国产在线| 色综合色综合色综合色综合色综合| 国产一区二区视频在线播放| 成人av网站在线观看免费| 欧美日韩国产另类不卡| 久久精品水蜜桃av综合天堂| 亚洲va天堂va国产va久| 成人免费的视频| 欧美一二三区在线观看| 亚洲午夜精品久久久久久久久| 国产欧美日韩在线看| 同产精品九九九| 欧美一区二区精美| 亚洲精品国产无天堂网2021| 国产精品99久久久久| 欧美高清视频在线高清观看mv色露露十八| 国产精品99久久久久久似苏梦涵| 日本不卡免费在线视频| 色悠悠亚洲一区二区| 欧美经典三级视频一区二区三区| 久久亚洲一区二区三区明星换脸| 日韩精品一区在线| 午夜免费欧美电影| 在线亚洲免费视频| 国产精品乱码一区二三区小蝌蚪| 国产精品视频在线看| 国产精品一区二区三区四区| 日韩欧美在线影院| 亚洲午夜久久久久久久久电影网| 日本亚洲免费观看| 欧美日韩一级黄| 亚洲成人第一页| 欧美日韩免费一区二区三区 | 欧美经典一区二区三区| 卡一卡二国产精品| 日韩一级成人av| 免费高清不卡av| 精品国产自在久精品国产| 美女mm1313爽爽久久久蜜臀| 欧美成人福利视频| 麻豆91免费看| 精品成a人在线观看| 国产一区二区三区精品视频| 久久久久久久网| 成人午夜视频在线观看| 自拍视频在线观看一区二区| 色婷婷一区二区| 亚洲第一狼人社区| 欧美一区二区成人| 精品一区精品二区高清| 亚洲国产精品成人久久综合一区| 亚洲黄色av一区| 欧美美女一区二区在线观看| 美女高潮久久久| 中国色在线观看另类| 91色视频在线| 石原莉奈在线亚洲三区| 欧美一级片在线观看| 激情伊人五月天久久综合| 国产欧美精品区一区二区三区| 午夜欧美大尺度福利影院在线看 | 精品在线一区二区| 国产亚洲成年网址在线观看| 91香蕉视频在线| 天堂久久一区二区三区| 国产午夜三级一区二区三| 色网站国产精品| 日本sm残虐另类| 久久婷婷成人综合色| 色偷偷久久人人79超碰人人澡| 亚洲天堂2014| 欧美裸体一区二区三区| 国产乱码一区二区三区| 亚洲综合在线第一页| 久久一日本道色综合| 91丨porny丨中文| 久久精品国产亚洲5555| 亚洲精品视频一区二区| 久久午夜电影网| 色婷婷久久一区二区三区麻豆| 国产精品国产精品国产专区不蜜| 国精产品一区一区三区mba视频 | 91免费观看视频在线| 日本aⅴ精品一区二区三区| 中文字幕一区二区三区在线观看 | gogogo免费视频观看亚洲一| 午夜影院久久久| 国产精品日产欧美久久久久| 日韩一区二区三区视频在线 | 91黄色免费版| 91香蕉视频在线| 蓝色福利精品导航| 亚洲综合免费观看高清完整版| 色噜噜狠狠色综合欧洲selulu| 国产精品久久久久久一区二区三区 | 亚洲中国最大av网站| 欧美国产成人精品| xf在线a精品一区二区视频网站| 青青青爽久久午夜综合久久午夜| 欧美精品一卡二卡| 欧美丝袜丝交足nylons| 粉嫩绯色av一区二区在线观看| 国产欧美日韩视频一区二区| 91精品国产福利在线观看| 日本韩国欧美三级| proumb性欧美在线观看| 国产91精品久久久久久久网曝门| 欧美激情中文字幕一区二区| 精品福利一二区| 欧美videofree性高清杂交| 69久久99精品久久久久婷婷| 欧美调教femdomvk| 欧美日韩国产精品成人| 精品久久一区二区三区| 777久久久精品| 欧美性猛交xxxx黑人交| 欧美亚洲一区二区在线| 91极品美女在线| 91福利国产成人精品照片| 91猫先生在线| 91福利国产成人精品照片| 欧美性三三影院| 91精品国产综合久久久蜜臀粉嫩| 国产乱码精品一区二区三区五月婷| 国产精品久久久久一区| 中文av一区特黄| 自拍视频在线观看一区二区| 一区二区三区在线免费播放| 亚洲特黄一级片| 性欧美疯狂xxxxbbbb| 青青草原综合久久大伊人精品优势| 国产精品欧美综合在线| 亚洲色欲色欲www| 久久草av在线| 国产在线日韩欧美| 成人国产精品免费观看| 色哟哟欧美精品| 欧美肥妇毛茸茸| 久久久99免费| 亚洲欧洲韩国日本视频| 亚洲国产视频在线| 国内不卡的二区三区中文字幕 | 亚洲国产精品久久艾草纯爱| 婷婷成人激情在线网| 麻豆国产91在线播放| 成人h动漫精品| 欧美日韩aaaaaa| 久久综合久久综合亚洲| 中文字幕亚洲成人| 日韩av不卡一区二区| 国产成人av影院| 欧美日韩精品一二三区| 国产网站一区二区| 香港成人在线视频| 成人爽a毛片一区二区免费| 欧美亚洲国产一区二区三区va| 国产一区二区三区在线观看精品| 日韩一区精品字幕| 成人不卡免费av| 欧美一级欧美三级在线观看| 一区精品在线播放| 久久99久久久欧美国产| 94-欧美-setu| 精品福利一区二区三区免费视频| 日韩欧美一区在线| 国产精品国产三级国产有无不卡| 久久久久久久精| 夜夜嗨av一区二区三区四季av| 亚洲色图20p| 国产毛片精品视频| 欧美日韩精品专区| 亚洲人成在线观看一区二区| 狠狠色综合播放一区二区| 欧美日韩精品一区二区三区四区| 91在线观看视频| 欧美成人精精品一区二区频| 亚洲一二三四在线观看| gogogo免费视频观看亚洲一| 久久久蜜桃精品| 日本成人中文字幕在线视频| 欧美在线小视频| 亚洲欧美aⅴ...| 99视频精品在线| 中文成人综合网| 国产99久久久久久免费看农村| jiyouzz国产精品久久| 精品久久久久久久久久久久久久久久久| 日韩视频在线永久播放| 亚洲成人在线网站| 欧美日韩激情一区二区| 亚洲黄色小视频| 99久久综合国产精品| 国产精品美女视频| 成人午夜精品一区二区三区| 久久综合精品国产一区二区三区 | 国产成人午夜精品影院观看视频 | 亚洲一区二区三区精品在线| 国产 日韩 欧美大片| 欧美精品一区二区三区在线| 色综合欧美在线|