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