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

📄 package.cpp

📁 一个与银行通讯的测试程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	default:
		break;
	}
	}
	else if(memcmp(tmpStr,"001",3)==0)//卡中无该项存款
	{
    memcpy(packstruct->m_Fhdm,"0001",4);
	packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
	    alltrimSpace(tmpStr);
		strcpy(packstruct->m_Data, tmpStr);//注意不要strcpy
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;

     return -1;
	}
	else//其它为通信故障。
	{
	memcpy(packstruct->m_Fhdm,"9001",4);
	packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续

	strcpy(packstruct->m_Data, "通信故障");
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;

    return -1;
	}

	RetValue = RetValue + MAX_HEAD_LEN;
	return RetValue;
}

int Cpackage::Function_CxQgt(PACKSTRUCT *packstruct, char *cSendbuf)
{
	//储  种 (18)
	/*
	//币  种
	//储  种
	card_no 
	password
    查询起始日期YYYYMMDD
    */
	char	tmpStr[ 200 ], tmpstr[ 200 ];
	//Buff[ 20 ], dateBuf[ 20 ];
	int iLength,RetValue=0;
	information_request Str_info_request;

	memset( &Str_info_request, 0x30, sizeof(information_request) );
	memset( tmpStr, 0x00, sizeof(tmpStr) );
	memset( tmpstr, 0x00, sizeof(tmpstr) );
	iLength = 0;
 	//信息查询请求
	
	//02 - 信息查询 jylx[2];
	/*
   	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,packstruct->m_Jydm,sizeof(packstruct->m_Jydm));
	alltrimSpace(tmpStr);
	mempy(Str_info_request.jylx,"02",sizeof(Str_info_request.jylx));
    */

	memcpy(Str_info_request.jylx,"02",sizeof(Str_info_request.jylx));
    
	//多媒体查询 设备编号 3
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,packstruct->m_Zdh,sizeof(packstruct->m_Zdh));
	alltrimSpace(tmpStr);
	memcpy(Str_info_request.pprno,tmpStr,sizeof(Str_info_request.pprno));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通请求模块","设备编号",tmpStr);


	//处理号 3  ????????????????????
	//memset(tmpstr,0x00,sizeof(tmpstr));
    //mwmcpy(tmpstr,packstruct->m_Zdh,sizeof(packstruct->m_Zdh));
	//alltrimSpace(tmpstr);
	memset(tmpStr,0x00,sizeof(tmpStr));
    strcpy(tmpStr,WriteContNum());
	alltrimSpace(tmpStr);
	memcpy(Str_info_request.pprclh,tmpStr,sizeof(Str_info_request.pprclh));
	
	//card_no 16
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 1, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.card_no))
	{
	memcpy(Str_info_request.card_no,tmpStr,iLength);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通请求模块","card_no",tmpStr);
	}
	//币  种  2
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 2, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.bz))
	{
	memcpy(Str_info_request.bz,tmpStr,iLength);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通请求模块","bz",tmpStr);
	}

	//储  种   2  ???/??
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 3, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.cz))
	{
	memcpy(Str_info_request.cz,tmpStr,iLength);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通请求模块","bz",tmpStr);
	}
	

	//笔数号,查询通知明细时需要输入 4
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 4, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.bs))
	{
	memcpy(Str_info_request.bs,tmpStr,iLength);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通请求模块","bz",tmpStr);
	}
    

	//查询起始日期YYYYMMDD
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 5, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.rq1))
	{
	memcpy(Str_info_request.rq1,tmpStr,iLength);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通请求模块","card_no",tmpStr);
	}

	//查询日期2YYYYMMDD
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 6, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.rq2))
	{
	memcpy(Str_info_request.rq2,tmpStr,iLength);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通请求模块","card_no",tmpStr);
	}
    
	RetValue=sizeof(information_request);
	memcpy((char *)cSendbuf,(char *)&Str_info_request,RetValue);
	return RetValue;
}
//全国通查询
int Cpackage::Function_CxQgt_ans(int jydm, PACKSTRUCT *packstruct, char *cRecvbuf)
{
	int ErrCode,RetValue=0;
	int Ans_PackRecNum=0;
	int Ans_PackBodyLen=0;
	int offset=0;
    int iLen=0;
	char tmpStr[4096];

	message_headqgt                 Str_message_head;
	
    offset = sizeof(message_headqgt);
	iLen = sizeof(deposit_msg_structqgt);
    
	memset(tmpStr,0x00,sizeof(tmpStr));

    memcpy(&Str_message_head,cRecvbuf,sizeof(message_headqgt));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通查询返回信息模块","Str_message_head.jylx",Str_message_head.jylx);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通查询回信息模块","Str_message_head.pprno",Str_message_head.pprno);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通查询返回信息模块","Str_message_head.pprclh",Str_message_head.pprclh);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通查询返回信息模块","Str_message_head.jgdm",Str_message_head.jgdm);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通查询返回信息模块","Str_message_head.rec_num",Str_message_head.rec_num);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","全国通查询返回信息模块","Str_message_head.reserve",Str_message_head.reserve);

    memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.jgdm,3);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","返回信息模块","结果代码",tmpStr);

	//判断错误码
	strcpy(tmpStr,"000");
	if(!memcmp(tmpStr,"000",3) == 0)
	{
		ErrCode = atoi(tmpStr);
		memcpy(packstruct->m_Fhdm,"9001",4);

		packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
	    packstruct->m_Flag[0]='0';//占用他表示是否有后续
	    memset(packstruct->m_Data,0x00,sizeof(MAX_DATA_LEN));

		alltrimSpace(tmpStr);
		strcpy(packstruct->m_Data, tmpStr);//注意不要strcpy
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;

	    memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
	    return MAX_HEAD_LEN;
	}
    
	//得到包中记录数
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.rec_num,3);
    alltrimSpace(tmpStr);
	Ans_PackRecNum = atoi(tmpStr);
    //WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%d]","全国通返回信息模块","记录信息",Ans_PackRecNum);

     //目前无法知道真样判断是何种返回,分解包

	/*********************************************************/
    //-------------deposit_msg_structcxxx
	//得到储蓄信息查询中记录信息总长度
    Ans_PackBodyLen = Ans_PackRecNum*iLen;
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%d]","全国通返回信息模块","记录信息总长度",Ans_PackBodyLen);

	//复制记录内容
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,cRecvbuf+offset,Ans_PackBodyLen);
	RetValue = ChangeQgt(packstruct, tmpStr, Ans_PackRecNum);
	RetValue = RetValue + MAX_HEAD_LEN;
	return RetValue;
 
 }
//综合信息查询
int Cpackage::Function_CxZhxx(PACKSTRUCT *packstruct, char *cSendbuf)
{
	//储  种 (10)
	/*
	//币  种
	//储  种
	card_no 
	password
    查询起始日期YYYYMMDD
    */
	char	tmpStr[ 200 ], tmpstr[ 200 ];
	//Buff[ 20 ], dateBuf[ 20 ];
	int iLength, RetValue=0;
	information_request Str_info_request;

	memset( &Str_info_request, 0x30, sizeof(information_request) );
	memset( tmpStr, 0x00, sizeof(tmpStr) );
	memset( tmpstr, 0x00, sizeof(tmpstr) );
	
 	
	memcpy(Str_info_request.jylx,"02",sizeof(Str_info_request.jylx));
    
	//多媒体查询 设备编号 3
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,packstruct->m_Zdh,sizeof(packstruct->m_Zdh));
	alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	memcpy(Str_info_request.pprno,tmpStr,sizeof(packstruct->m_Zdh));
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","设备编号",tmpStr);
	
	memset(tmpStr,0x00,sizeof(tmpStr));
    strcpy(tmpStr,WriteContNum());
	alltrimSpace(tmpStr);
	memcpy(Str_info_request.pprclh,tmpStr,sizeof(Str_info_request.pprclh));
	
	//card_no 16
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 1, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.card_no))
	{
	memcpy(Str_info_request.card_no,tmpStr,iLength);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","设备编号",tmpStr);
	}
	//memcpy(Str_info_request.card_no,tmpStr,sizeof(Str_info_request.card_no));
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","card_no",tmpStr);

	//币  种  2
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 2, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.bz))
	{
	memcpy(Str_info_request.bz,tmpStr,iLength);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","bz",tmpStr);
	}
	
	
	//储  种   2  ???/??
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 3, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.cz))
	{
	memcpy(Str_info_request.cz,tmpStr,sizeof(Str_info_request.cz));
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","cz",tmpStr);
	}
   
	//笔数号,查询通知明细时需要输入  笔数号 (起始页数3)
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 4, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.bs))
	{
	memcpy(Str_info_request.bs,tmpStr,sizeof(Str_info_request.bs));
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","bs",tmpStr);
	}

	//查询起始日期YYYYMMDD
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 5, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= sizeof(Str_info_request.rq1))
	{
	memcpy(Str_info_request.rq1,tmpStr,iLength);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","起始日期",tmpStr);
	}
	
	//终止日期00000000
	//memcpy(Str_info_request.rq2,"00000000",sizeof(Str_info_request.rq2));
	
	//reserve[15];
	//memcpy(Str_info_request.reserve,"000000000000000",sizeof(Str_info_request.reserve));
    
	RetValue=sizeof(information_request);
	memcpy((char *)cSendbuf,(char *)&Str_info_request,RetValue);
	return RetValue;
}
//综合信息
int Cpackage::Function_CxZhxx_ans(int jydm,PACKSTRUCT *packstruct, char *cRecvbuf)
{
	//int head_length;
	int ErrCode,RetValue=0;
	int Ans_PackRecNum=0;
	int Ans_PackBodyLen=0;
	int offset=0;
    int iLen=0;
	char tmpStr[4096];

	message_headzhxx                 Str_message_head;
	
    offset = sizeof(message_headzhxx);
	iLen = sizeof(deposit_msg_structtwo);
    
	memset(tmpStr,0x00,sizeof(tmpStr));

    memcpy(&Str_message_head,cRecvbuf,sizeof(message_headzhxx));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","zhxx查询返回信息模块","Str_message_head.jylx",Str_message_head.jylx);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","zhxx查询返回信息模块","Str_message_head.pprno",Str_message_head.sbh);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","zhxx查询返回信息模块","Str_message_head.pprclh",Str_message_head.clh);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","zhxx查询返回信息模块","Str_message_head.jgdm",Str_message_head.jgdm);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","zhxx查询返回信息模块","Str_message_head.rec_num",Str_message_head.rec_num);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","zhxx查询返回信息模块","Str_message_head.reserve",Str_message_head.reserve);

    memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.jgdm,3);
	
	//判断错误码
	strcpy(tmpStr,"000");
	
	if(!memcmp(tmpStr,"000",3) == 0)
	{
		ErrCode = atoi(tmpStr);
		//switch(ErrCode)
		//{
		//default:
			memcpy(packstruct->m_Fhdm,"9001",4);
		//	break;
		//}
	packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
	memset(packstruct->m_Data,0x00,sizeof(MAX_DATA_LEN));
		strcpy(packstruct->m_Data, tmpStr);
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;

	memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
	return -1;
	}
    
	//得到包中记录数
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.rec_num,3);
    alltrimSpace(tmpStr);
	Ans_PackRecNum = atoi(tmpStr);
    
     //目前无法知道真样判断是何种返回,分解包

	/*********************************************************/

⌨️ 快捷键说明

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