⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 export.cpp

📁 对于银行卡卡的读取控制
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	cmd[5] = '0';
	cmd[6] = '0';

	int  cm = 0 ;

	cm = mySendCommand(EJECT_FRONT, cmd, 7);
	LRESULT  value = 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 ( cm == 1 ) {
		if (g_res[0] == 'P' && g_res[1] == '3' && g_res[2] == '0' && g_res[3] == '0' && g_res[4] == '1') {
	#if _DEBUG
			MessageBox(NULL, "出卡成功!", "信息", MB_OK);
	#endif
			value = 0 ;
		}
	}

	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_CARDOUTPUT;
	}
	/******************对返回信息进行判断--结束*******************************/
	memset(g_res, 0, 1024);
	return value;//Result;
}

// 吞卡
LRESULT  SwallowCard()
{
	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 ;

	cm = mySendCommand(INIT_CAPTURE, cmd, 7);
	LRESULT  value = 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 ( cm == 1 ) {
		if (g_res[0] == 'P' && g_res[1] == '4' && g_res[2] == '0' && g_res[3] == '0' && g_res[4] == '2') {
	#ifdef _DEBUG
			MessageBox(NULL, "吞卡成功!", "信息", MB_OK);
	#endif
			value = 0 ;
		} 
	}
	else if ( cm == -1 || cm == -2 ) {
		if (g_res[0] == 'N' && g_res[1] == '4' && g_res[2] == '0' && g_res[3] == '6' && g_res[4] == '0') {
	#ifdef _DEBUG
			MessageBox(NULL, "卡不在门边,吞卡不成功!", "信息", MB_OK);
	#endif
			value = CRERROR_CARDINPUT;
		}
	}
	/******************对返回信息进行判断--结束*******************************/
	memset(g_res, 0, 1024);
	return value;//Result;
}

// 允许进卡
LRESULT  PermitIn()
{
	LRESULT  value = 0;
/*	BYTE cmd[3];
	cmd[0] = 'C';
	cmd[1] = ':';
	cmd[2] = '0';
//	mySendCommand(cmd, 3, 20000);
	

	if (g_res[0] == 'P' && g_res[1] == ':' && g_res[2] == '0' && g_res[3] == '0' && g_res[4] == '1') {
#ifdef _DEBUG
		MessageBox(NULL, "允许进卡!", "信息", MB_OK);
#endif
		value = CRC_ENABLE;
	}
	else if (g_res[0] == 'N' && g_res[1] == ':' && g_res[2] == '0' && g_res[3] == '0' && g_res[4] == '1') {
#ifdef _DEBUG
		MessageBox(NULL, "不允许进卡!", "信息", MB_OK);
#endif
		value = CRC_DISABLE;
	}

	memset(g_res, 0, 1024);
	*/
	return value;//Result;
}

// 禁止进卡
LRESULT  UnPermitIn()
{
	LRESULT  value = 0;

/*	BYTE cmd[3];
	cmd[0] = 'C';
	cmd[1] = ':';
	cmd[2] = '1';
//	mySendCommand(cmd, 3, 20000);
	LRESULT  value = 0;
	
	if (g_res[0] == 'P' && g_res[1] == ':' && g_res[2] == '1' && g_res[3] == '0' && g_res[4] == '1') {
#ifdef _DEBUG
		MessageBox(NULL, "卡在门边!", "信息", MB_OK);
#endif
		value = CRERROR_GATE;
	}
	else if (g_res[0] == 'P' && g_res[1] == ':' && g_res[2] == '1' && g_res[3] == '0' && g_res[4] == '0') {
#ifdef _DEBUG
		MessageBox(NULL, "无卡!", "信息", MB_OK);
#endif
		value = CRERROR_EMPTY;
	}
	else if (g_res[0] == 'P' && g_res[1] == ':' && g_res[2] == '1' && g_res[3] == '0' && g_res[4] == '2') {
#ifdef _DEBUG
		MessageBox(NULL, "有卡在内!", "信息", MB_OK);
#endif
		value = CRERROR_INSIDE;
	}
	else {
#ifdef _DEBUG
		MessageBox(NULL, "不成功!", "信息", MB_OK);
#endif
	}
	memset(g_res, 0, 1024);
	*/
	return value;//Result;
}


// 如果超时写数据,则“写磁否定响应”
LRESULT  WriteTrack1(ULONG ulSegIndex,ULONG ulOffset,ULONG ulSize,PUCHAR pDataBuffer,PULONG writesize)
{
	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 ;

	cm = mySendCommand(MSW_TRACK1, cmd, 7);
	
	LRESULT  value = 0;
	/******************对返回信息进行判断--开始*******************************/
	if (g_res[0] == 'P' && g_res[1] == '7' && g_res[2] == '1' && g_res[3] == '0' && g_res[4] == '2') {
#if _DEBUG
		MessageBox(NULL, "写磁道一成功!", "信息", MB_OK);
#endif
		value = 0 ;
	}
	else if (g_res[0] == 'N' && g_res[1] == '7' && g_res[2] == '1' && g_res[3] == '0' && g_res[4] == '2') {
#if _DEBUG
		MessageBox(NULL, "有卡时,写磁道一失败!", "信息", MB_OK);
#endif
		value = CRERROR_WRITECARD;

	}
	else if (g_res[0] == 'N' && g_res[1] == '7' && g_res[2] == '1' && g_res[3] == '0' && g_res[4] == '1') {
#if _DEBUG
		MessageBox(NULL, "无卡时,写磁道一失败!", "信息", MB_OK);
#endif
		value = CRERROR_WRITECARD;

	}
	else {
#if _DEBUG
		MessageBox(NULL, "写磁道1不成功!", "信息", MB_OK);
#endif
		value = CRERROR_WRITECARD;

	}
	/******************对返回信息进行判断--结束*******************************/
	memset(g_res, 0, 1024);
	return value;//Result;
}

LRESULT  WriteTrack2(ULONG ulSegIndex,ULONG ulOffset,ULONG ulSize,PUCHAR pDataBuffer,PULONG writesize)
{
	BYTE cmd[3];
	cmd[0] = 'C';
	cmd[1] = '7';
	cmd[2] = '2';
//	mySendCommand(cmd, 3, 20000);
	LRESULT  value = 0;
	/******************对返回信息进行判断--开始*******************************/
	if (g_res[0] == 'P' && g_res[1] == '7' && g_res[2] == '2' && g_res[3] == '0' && g_res[4] == '2') {
#if _DEBUG
		MessageBox(NULL, "写磁道二成功!", "信息", MB_OK);
#endif
		value = 0 ;
	}
	else if (g_res[0] == 'N' && g_res[1] == '7' && g_res[2] == '2' && g_res[3] == '0' && g_res[4] == '2') {
#if _DEBUG
		MessageBox(NULL, "有卡时,写磁道二失败!", "信息", MB_OK);
#endif
		value = CRERROR_WRITECARD;
	}
	else if (g_res[0] == 'N' && g_res[1] == '7' && g_res[2] == '2' && g_res[3] == '0' && g_res[4] == '1') {
#if _DEBUG
		MessageBox(NULL, "无卡时,写磁道二失败!", "信息", MB_OK);
#endif
		value = CRERROR_WRITECARD;

	}
	else {
#if _DEBUG
		MessageBox(NULL, "写磁道二不成功!", "信息", MB_OK);
#endif
		value = CRERROR_WRITECARD;

	}
	/******************对返回信息进行判断--结束*******************************/
	memset(g_res, 0, 1024);
	return value;//Result;
}

	
	



LRESULT  WriteTrack3(ULONG ulSegIndex,ULONG ulOffset,ULONG ulSize,PUCHAR pDataBuffer,PULONG writesize)
{
	BYTE cmd[3];
	cmd[0] = 'C';
	cmd[1] = '7';
	cmd[2] = '3';
//	mySendCommand(cmd, 3, 20000);
	LRESULT  value = 0;
	/******************对返回信息进行判断--开始*******************************/
	if (g_res[0] == 'P' && g_res[1] == '7' && g_res[2] == '3' && g_res[3] == '0' && g_res[4] == '2') {
#if _DEBUG
		MessageBox(NULL, "写磁道三成功!", "信息", MB_OK);
#endif
		value = 0 ;
	}
	else if (g_res[0] == 'N' && g_res[1] == '7' && g_res[2] == '3' && g_res[3] == '0' && g_res[4] == '2') {
#if _DEBUG
		MessageBox(NULL, "有卡时,写磁道三失败!", "信息", MB_OK);
#endif
		value = CRERROR_WRITECARD;

	}
	else if (g_res[0] == 'N' && g_res[1] == '7' && g_res[2] == '3' && g_res[3] == '0' && g_res[4] == '1') {
#if _DEBUG
		MessageBox(NULL, "无卡时,写磁道三失败!", "信息", MB_OK);
#endif
		value = CRERROR_WRITECARD;

	}
	else {
#if _DEBUG
		MessageBox(NULL, "写磁道3不成功!", "信息", MB_OK);
#endif
		value = CRERROR_WRITECARD;

	}
	/******************对返回信息进行判断--结束*******************************/
	memset(g_res, 0, 1024);
	return value;//Result;
}



LRESULT ReadTrack1(IN ULONG ulSegIndex , IN ULONG ulOffset,ULONG iSize, PUCHAR pRecvBuffer, int &iRealSize)
{
	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 ;

	cm = mySendCommand(MSR_TRACK1, cmd, 7);
	LRESULT  value = 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 ( cm == 1) {
		if (g_res[0] == 'P' && g_res[1] == '6' && g_res[2] == '1' && g_res[3] == '0' && g_res[4] == '2') {
	#if _DEBUG
			MessageBox(NULL, "读磁道一成功!", "信息", MB_OK);
	#endif
			// 判断读到的数据的实际长度
			iRealSize = strlen(&g_res[5]);
			value = 0 ;
	/*
			if (iSize < iRealSize) {
				value = CRERROR_MEMORYLACK;//空间不足
				memcpy(pRecvBuffer, &g_res[5], iSize);
			}
			else {
				memcpy(pRecvBuffer, &g_res[5], iRealSize); 
		    } */
			memcpy(pRecvBuffer, &g_res[5], iRealSize);
		}
	}
	else if ( cm == -2 || cm == -3 ) {
		if (g_res[0] == 'N' && g_res[1] == '6' && g_res[2] == '1' && g_res[3] == '0' && g_res[4] == '2') {
	//		MessageBox(NULL, "有卡时,读磁道一失败!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
		else if (g_res[0] == 'N' && g_res[1] == '6' && g_res[2] == '1' && g_res[3] == '0' && g_res[4] == '1') {
	//		MessageBox(NULL, "无卡时,读磁道一失败!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
		else if (g_res[0] == 'N' && g_res[1] == '6' && g_res[2] == '1' && g_res[3] == '4' && g_res[4] == '4') {
	//		MessageBox(NULL, "读卡错误,请检查卡的插入方向!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
		else {
	//		MessageBox(NULL, "读磁道一不成功!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
	}
	/******************对返回信息进行判断--结束*******************************/
	memset(g_res, 0, 1024);
	return value;//Result;
}

LRESULT  ReadTrack2(IN ULONG ulSegIndex , IN ULONG ulOffset,ULONG iSize, PUCHAR pRecvBuffer, int &iRealSize)
{
	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 ;

	cm = mySendCommand(MSR_TRACK2, cmd, 7);
	LRESULT  value = 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 ( cm == 1 ) {
		if (g_res[0] == 'P' && g_res[1] == '6' && g_res[2] == '2' && g_res[3] == '0' && g_res[4] == '2') {
	//		MessageBox(NULL, "读磁道二成功!", "信息", MB_OK);
			value = 0 ;
			iRealSize = strlen(&g_res[5]);// 此函数返回字符串中字符的个数,null以前的全部字符的个数
	
	/*		if (iSize < iRealSize) {
				memcpy(pRecvBuffer, &g_res[5], iSize);
				value = CRERROR_MEMORYLACK;//空间不足
			}
			else {
				memcpy(pRecvBuffer, &g_res[5], iRealSize);
			}  */
			memcpy(pRecvBuffer, &g_res[5], iRealSize);
		}
	}
	else if ( cm == -1 || cm == -2 ) {
		if (g_res[0] == 'N' && g_res[1] == '6' && g_res[2] == '2' && g_res[3] == '0' && g_res[4] == '2') {
		//	MessageBox(NULL, "有卡时,读磁道二失败!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
		else if (g_res[0] == 'N' && g_res[1] == '6' && g_res[2] == '2' && g_res[3] == '0' && g_res[4] == '1') {
		//	MessageBox(NULL, "无卡时,读磁道二失败!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
		else if (g_res[0] == 'N' && g_res[1] == '6' && g_res[2] == '2' && g_res[3] == '4' && g_res[4] == '4') {
		//	MessageBox(NULL, "读卡错误,请检查卡的插入方向!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
		else {
		//	MessageBox(NULL, "读磁道二不成功!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
	}
	/******************对返回信息进行判断--结束*******************************/
	memset(g_res, 0, 1024);
	return value;//Result;
}






LRESULT  ReadTrack3(IN ULONG ulSegIndex , IN ULONG ulOffset,ULONG iSize, PUCHAR pRecvBuffer, int &iRealSize)
{
	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 ;

	cm = mySendCommand(MSR_TRACK3, cmd, 7);
	LRESULT  value = 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 ( cm == 1 ) {
		if (g_res[0] == 'P' && g_res[1] == '6' && g_res[2] == '3' && g_res[3] == '0' && g_res[4] == '2') {
	//		MessageBox(NULL, "读磁道三成功!", "信息", MB_OK);
		value = 0 ;
		iRealSize = strlen(&g_res[5]);
			
		/*	if ( iRealSize > iSize) {
				memcpy(pRecvBuffer, &g_res[5], iSize);
				value = CRERROR_MEMORYLACK;//空间不足
			}
			else {
				memcpy(pRecvBuffer, &g_res[5], iRealSize);
			} */
			memcpy(pRecvBuffer, &g_res[5], iRealSize);
		}
		else if (g_res[0] == 'N' && g_res[1] == '6' && g_res[2] == '3' && g_res[3] == '0' && g_res[4] == '2') {
//			MessageBox(NULL, "有卡时,读磁道三失败!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
	}
	else if ( cm == -1 || cm == -2 ) {
		if (g_res[0] == 'N' && g_res[1] == '6' && g_res[2] == '3' && g_res[3] == '0' && g_res[4] == '1') {
//			MessageBox(NULL, "无卡时,读磁道三失败!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
		else if (g_res[0] == 'N' && g_res[1] == '6' && g_res[2] == '3' && g_res[3] == '4' && g_res[4] == '4') {
	//		MessageBox(NULL, "读卡错误,请检查卡的插入方向!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
		else {
//			MessageBox(NULL, "读磁道三不成功!", "信息", MB_OK);
			value = CRERROR_READCARD;
		}
	}
	/******************对返回信息进行判断--结束*******************************/
	memset(g_res, 0, 1024);
	return value;//Result;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -