www.pudn.com > dialogic_IVR.rar > ProtocolAPI.cpp


 
#include "stdafx.h" 
#include  
#include  
#include  
#include "ProtocolAPI.h" 
 
 
//功能:将发给终端的数据打成一个协议包, 用户调用此函数后,得到了一个 
//      协议包(由pOutBuf,  nOutBufSize确定), 然后调用发送FSK之函数 
//      将此协议包发给终端 
/*参数:  
    1、pInBuf:  [in]将在终端上显示的信息之缓冲区 
	2、nInBufSize: [in]将在终端上显示的信息之长度 
	3、pOutBuf: [out]存放协议包之缓冲区 
	4、nOutBufSize:[out]协议包之长度 
	5、chType:[in]类型(参见结构SType) 
	6、chFlag:[in]标志(参见结构SFlag) 
*/ 
int  _stdcall  ReadyData(void* pInBuf, DWORD nInBufSize,  
	 void* pOutBuf, DWORD& nOutBufSize, BYTE chType, BYTE chFlag) 
{ 
	DWORD  nLen1,  nLen2; 
	char  pResultBuf1[10*1024], pResultBuf2[10*1024]; 
	AddType((char*)pInBuf, nInBufSize, chType,  pResultBuf1, nLen1); 
	AddFlag((char*)pResultBuf1, nLen1,  pResultBuf2, nLen2, chFlag); 
	AddSyncCode((char*)pResultBuf2, nLen2, (char*)pOutBuf, nOutBufSize); 
	 
    return 0;  
	 
} 
 
 
 
 
////////////////////////////////////////////////////////////////// 
 
 
 
 
void  _stdcall AddType(char* pSrc, DWORD nSrcLen,  DWORD nType,  char* pDest, DWORD& nDestLen) 
{ 
	char  msg[10*1024]; 
	memcpy(msg, pSrc, nSrcLen); 
	BYTE uCh = nType&0xff; 
	memcpy(pDest, &uCh, 1); 
	memcpy(pDest+1, msg, nSrcLen); 
	nDestLen = nSrcLen +1; 
} 
 
 
void  _stdcall GetCheckSum(void* buffer, int bufsize, WORD& nCheckSum) 
{ 
	nCheckSum = 0; 
	for(int i=0; i