📄 cpack.c
字号:
Reverse((unsigned char *)&pPack->head.hook.queuetype,sizeof(pPack->head.hook.queuetype));
if (pPack->head.recCount>1 && packArray == NULL)
{
strcpy(eMsg,"多纪录解包要求packArray != NULL");
return FALSE;
}
*recCount = pPack->head.recCount;
p+=sizeof(ST_PACKHEAD);
ph = &pPack->head;
memset(&pPack->pack,0,sizeof(pPack->pack));
pp = &pPack->pack;
for(cnt = 0; cnt < *recCount ;cnt ++)
{
for(i=0;i<PARMBITS/BITSPERBYTE;i++)
{
b0 = ph->ParmBits[i];
for(j=0;j<8;j++)
{
if (b0 & _bits[j])
result = (i<<8)+_bits[j];
else
continue;
_DecodeSingleItem(result,pp,(char **)&p);
}
}
if (packArray == NULL)
break;
pp = &packArray[cnt];
}
return TRUE;
}
void _EncodeSingleItem(int idx,ST_PACK *pPack,char **pDst,int *len)
{
unsigned char *p;
int l;
short vsl,vosl;
l = *len;
p = (unsigned char *)*pDst;
#define CP(a) memcpy(p,pPack->a,sizeof(pPack->a)); \
p+=sizeof(pPack->a); \
l+=sizeof(pPack->a);
#define DP(a) memcpy(p,&pPack->a,sizeof(pPack->a));\
Reverse(p,sizeof(pPack->a));\
p+=sizeof(pPack->a); \
l+=sizeof(pPack->a);
#define VP(a) vsl=strlen(pPack->a)+1;\
vosl=vsl;\
Reverse((unsigned char *)&vsl,sizeof(short));\
memcpy(p,&vsl,2);\
p=p+2;\
memcpy(p,pPack->a,vosl);\
p+=vosl;\
l+=2+vosl;
switch(idx)
{
case F_SCUST_NO:
CP(scust_no);
break;
case F_SCUST_NO2:
CP(scust_no2);
break;
case F_SHOLDER_AC_NO:
CP(sholder_ac_no);
break;
case F_SHOLDER_AC_NO2:
CP(sholder_ac_no2);
break;
case F_SHOLDER_TYPE:
CP(sholder_type);
break;
case F_SHOLDER_TYPE2:
CP(sholder_type2);
break;
case F_SNAME:
CP(sname);
break;
case F_SNAME2:
CP(sname2);
break;
case F_SALL_NAME:
CP(sall_name);
break;
case F_SMARKET_CODE:
CP(smarket_code);
break;
case F_SMARKET_CODE2:
CP(smarket_code2);
break;
case F_SDATE0:
CP(sdate0);
break;
case F_SDATE1:
CP(sdate1);
break;
case F_SDATE2:
CP(sdate2);
break;
case F_SDATE3:
CP(sdate3);
break;
case F_STIME0:
CP(stime0);
break;
case F_STIME1:
CP(stime1);
break;
case F_STIME2:
CP(stime2);
break;
case F_STIME3:
CP(stime3);
break;
case F_LVOL0:
DP(lvol0);
break;
case F_LVOL1:
DP(lvol1);
break;
case F_LVOL2:
DP(lvol2);
break;
case F_LVOL3:
DP(lvol3);
break;
case F_LVOL4:
DP(lvol4);
break;
case F_LVOL5:
DP(lvol5);
break;
case F_LVOL6:
DP(lvol6);
break;
case F_LVOL7:
DP(lvol7);
break;
case F_LVOL8:
DP(lvol8);
break;
case F_LVOL9:
DP(lvol9);
break;
case F_LVOL10:
DP(lvol10);
break;
case F_LVOL11:
DP(lvol11);
break;
case F_LVOL12:
DP(lvol12);
break;
case F_DAMT0:
DP(damt0);
break;
case F_DAMT1:
DP(damt1);
break;
case F_DAMT2:
DP(damt2);
break;
case F_DAMT3:
DP(damt3);
break;
case F_DAMT4:
DP(damt4);
break;
case F_DAMT5:
DP(damt5);
break;
case F_DAMT6:
DP(damt6);
break;
case F_DAMT7:
DP(damt7);
break;
case F_DAMT8:
DP(damt8);
break;
case F_DAMT9:
DP(damt9);
break;
case F_DAMT10:
DP(damt10);
break;
case F_DAMT11:
DP(damt11);
break;
case F_DAMT12:
DP(damt12);
break;
case F_DAMT13:
DP(damt13);
break;
case F_DAMT14:
DP(damt14);
break;
case F_DAMT15:
DP(damt15);
break;
case F_DAMT16:
DP(damt16);
break;
case F_DAMT17:
DP(damt17);
break;
case F_DAMT18:
DP(damt18);
break;
case F_DAMT19:
DP(damt19);
break;
case F_DAMT20:
DP(damt20);
break;
case F_DAMT21:
DP(damt21);
break;
case F_DAMT22:
DP(damt22);
break;
case F_DAMT23:
DP(damt23);
break;
case F_DAMT24:
DP(damt24);
break;
case F_DAMT25:
DP(damt25);
break;
case F_DAMT26:
DP(damt26);
break;
case F_DAMT27:
DP(damt27);
break;
case F_DAMT28:
DP(damt28);
break;
case F_DAMT29:
DP(damt29);
break;
case F_DAMT30:
DP(damt30);
break;
case F_DAMT31:
DP(damt31);
break;
case F_DAMT32:
DP(damt32);
break;
case F_DAMT33:
DP(damt33);
break;
case F_SSTOCK_CODE:
CP(sstock_code);
break;
case F_SSTOCK_CODE2:
CP(sstock_code2);
break;
case F_SCUST_TYPE:
CP(scust_type);
break;
case F_SCUST_TYPE2:
CP(scust_type2);
break;
case F_SSTAT_TYPE:
CP(sstat_type);
break;
case F_SSTAT_TYPE2:
CP(sstat_type2);
break;
case F_SROOM_NO:
CP(sroom_no);
break;
case F_SROOM_NO2:
CP(sroom_no2);
break;
case F_SOPEN_EMP:
CP(sopen_emp);
break;
case F_SCLOSE_EMP:
CP(sclose_emp);
break;
case F_SCHANGE_EMP:
CP(schange_emp);
break;
case F_SCHECK_EMP:
CP(scheck_emp);
break;
case F_SEMP:
CP(semp);
break;
case F_SNATION_CODE:
CP(snation_code);
break;
case F_LCERT_CODE:
DP(lcert_code);
break;
case F_STX_PWD:
CP(stx_pwd);
break;
case F_STX_PWD2:
CP(stx_pwd2);
break;
case F_SWITHDRAW_PWD:
CP(swithdraw_pwd);
break;
case F_SWITHDRAW_PWD2:
CP(swithdraw_pwd2);
break;
case F_SEMP_PWD:
CP(semp_pwd);
break;
case F_SEMP_PWD2:
CP(semp_pwd2);
break;
case F_SBANK_PWD:
CP(sbank_pwd);
break;
case F_SBANK_PWD2:
CP(sbank_pwd2);
break;
case F_SCUST_AUTH:
CP(scust_auth);
break;
case F_SCUST_AUTH2:
CP(scust_auth2);
break;
case F_SCUST_LIMIT:
CP(scust_limit);
break;
case F_SCUST_LIMIT2:
CP(scust_limit2);
break;
case F_LSAFE_LEVEL:
DP(lsafe_level);
break;
case F_LSAFE_LEVEL2:
DP(lsafe_level2);
break;
case F_SPOST_CODE:
CP(spost_code);
break;
case F_SPOST_CODE2:
CP(spost_code2);
break;
case F_SPHONE:
CP(sphone);
break;
case F_SPHONE2:
CP(sphone2);
break;
case F_SPHONE3:
CP(sphone3);
break;
case F_SPAGER:
CP(spager);
break;
case F_SEMAIL:
CP(semail);
break;
case F_SEMAIL2:
CP(semail2);
break;
case F_SNOTE:
CP(snote);
break;
case F_SNOTE2:
CP(snote2);
break;
case F_SCERT_NO:
CP(scert_no);
break;
case F_SCERT_NO2:
CP(scert_no2);
break;
case F_SCERT_ADDR:
CP(scert_addr);
break;
case F_SSTATUS0:
CP(sstatus0);
break;
case F_SSTATUS1:
CP(sstatus1);
break;
case F_SSTATUS2:
CP(sstatus2);
break;
case F_SSTATUS3:
CP(sstatus3);
break;
case F_SSTATUS4:
CP(sstatus4);
break;
case F_LWITHDRAW_FLAG:
DP(lwithdraw_flag);
break;
case F_SADDR:
CP(saddr);
break;
case F_SADDR2:
CP(saddr2);
break;
case F_SSERIAL0:
CP(sserial0);
break;
case F_SSERIAL1:
CP(sserial1);
break;
case F_SSERIAL2:
CP(sserial2);
break;
case F_SSERIAL3:
CP(sserial3);
break;
case F_SSERIAL4:
CP(sserial4);
break;
case F_SCURRENCY_TYPE:
CP(scurrency_type);
break;
case F_SCURRENCY_TYPE2:
CP(scurrency_type2);
break;
case F_SBRANCH_CODE0:
CP(sbranch_code0);
break;
case F_SBRANCH_CODE1:
CP(sbranch_code1);
break;
case F_SBRANCH_CODE2:
CP(sbranch_code2);
break;
case F_USSET0:
CP(usset0);
break;
case F_USSET1:
CP(usset1);
break;
case F_USSET2:
CP(usset2);
break;
case F_USSET3:
CP(usset3);
break;
case F_USSET4:
CP(usset4);
break;
case F_USSET5:
CP(usset5);
break;
case F_USSET6:
CP(usset6);
break;
case F_SSTATION0:
CP(sstation0);
break;
case F_SSTATION1:
CP(sstation1);
break;
case F_SBANK_ACC:
CP(sbank_acc);
break;
case F_SBANK_ACC2:
CP(sbank_acc2);
break;
case F_LBANK_ACC_TYPE:
DP(lbank_acc_type);
break;
case F_LBANK_ACC_TYPE2:
DP(lbank_acc_type2);
break;
case F_SMAIN_FLAG:
CP(smain_flag);
break;
case F_SMAIN_FLAG2:
CP(smain_flag2);
break;
case F_SBANK_CODE:
CP(sbank_code);
break;
case F_SBANK_CODE2:
CP(sbank_code2);
break;
case F_SEMP_NO:
CP(semp_no);
break;
case F_SEMP_NO2:
CP(semp_no2);
break;
case F_DRATE0:
DP(drate0);
break;
case F_DRATE1:
DP(drate1);
break;
case F_LSERIAL0:
DP(lserial0);
break;
case F_LSERIAL1:
DP(lserial1);
break;
case F_SBANKNAME:
CP(sbankname);
break;
case F_SBANKNAME2:
CP(sbankname2);
break;
case F_SCARD0:
CP(scard0);
break;
case F_SCARD1:
CP(scard1);
break;
case F_SORDER0:
CP(sorder0);
break;
case F_SORDER1:
CP(sorder1);
break;
case F_SORDER2:
CP(sorder2);
break;
case F_SCUSTTYPES:
CP(scusttypes);
break;
case F_SSECTYPES:
CP(ssectypes);
break;
case F_VSMESS:
VP(vsmess);
break;
case F_VSVARSTR0:
VP(vsvarstr0);
break;
case F_VSVARSTR1:
VP(vsvarstr1);
break;
case F_VSVARSTR2:
VP(vsvarstr2);
break;
case F_VSVARSTR3:
VP(vsvarstr3);
break;
default:
printf("encodesingleitem no this param =%d ......\n",idx);
}
*len = l;
*pDst = (char *)p;
#undef CP
#undef DP
#undef VP
}
BOOL ModifyHead(ST_PACKHEAD *pHeadPack,unsigned char *buf)
{
unsigned char *p;
ST_PACKHEAD *ph;
p = buf;
memcpy(p,pHeadPack,sizeof(ST_PACKHEAD));
ph = (ST_PACKHEAD*)p;
Reverse((unsigned char *)&ph->RequestType,sizeof(pHeadPack->RequestType));
Reverse((unsigned char *)&ph->firstflag,sizeof(pHeadPack->firstflag));
Reverse((unsigned char *)&ph->nextflag,sizeof(pHeadPack->nextflag));
Reverse((unsigned char *)&ph->recCount,sizeof(pHeadPack->recCount));
Reverse((unsigned char *)&ph->retCode,sizeof(pHeadPack->retCode));
Reverse((unsigned char *)&ph->hook.UserID,sizeof(pHeadPack->hook.UserID));
Reverse((unsigned char *)&ph->hook.queuetype,sizeof(pHeadPack->hook.queuetype));
return TRUE;
}
BOOL EncodeRow(ST_PACKHEAD *pHeadPack,ST_PACK *pRowPack,unsigned char *buf,int *len,char *eMsg)
{
int l;
unsigned char *p;
int i,j;
unsigned char b0;
int result;
p = buf;
l = 0;
for(i=0;i<PARMBITS/BITSPERBYTE;i++)
{
b0 = pHeadPack->ParmBits[i];
for(j=0;j<8;j++)
{
if (b0 & _bits[j])
result = (i<<8)+_bits[j];
else
continue;
_EncodeSingleItem(result,pRowPack,(char **)&p,&l);
}
}
*len = l;
return TRUE;
}
BOOL EncodeBuf(ST_CPACK *pPack,unsigned char *buf,int *len,char *eMsg)
{
int l;
unsigned char *p;
int i,j;
unsigned char b0;
int result;
ST_PACKHEAD *ph;
l = sizeof(ST_PACKHEAD);
p = buf;
memcpy(p,&pPack->head,sizeof(pPack->head));
ph = (ST_PACKHEAD*)p;
Reverse((unsigned char *)&ph->RequestType,sizeof(pPack->head.RequestType));
Reverse((unsigned char *)&ph->firstflag,sizeof(pPack->head.firstflag));
Reverse((unsigned char *)&ph->nextflag,sizeof(pPack->head.nextflag));
Reverse((unsigned char *)&ph->recCount,sizeof(pPack->head.recCount));
Reverse((unsigned char *)&ph->retCode,sizeof(pPack->head.retCode));
Reverse((unsigned char *)&ph->hook.UserID,sizeof(pPack->head.hook.UserID));
Reverse((unsigned char *)&ph->hook.queuetype,sizeof(pPack->head.hook.queuetype));
ph = &pPack->head;
p+=sizeof(pPack->head);
for(i=0;i<PARMBITS/BITSPERBYTE;i++)
{
b0 = ph->ParmBits[i];
for(j=0;j<8;j++)
{
if (b0 & _bits[j])
result = (i<<8)+_bits[j];
else
continue;
_EncodeSingleItem(result,&pPack->pack,(char **)&p,&l);
}
}
*len = l;
return TRUE;
}
BOOL EncodeBufArray(ST_CPACK *pPack,ST_PACK *pArray,unsigned char *buf,int *len,char *eMsg)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -