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

📄 protocolapi.cpp

📁 基于dialogic语音卡的IVR系统源代码
💻 CPP
字号:

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#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<bufsize; i++)
	{
		nCheckSum += ((BYTE*)buffer)[i];
	}
	///////////////
}


void   _stdcall AddSyncCode(char*  pSrc, DWORD nSrcLen,  char*  pResult,  DWORD&  nRetLen)
{
	char  pMsg[10*1024];
	memcpy(pMsg, pSrc, nSrcLen);

	WORD  Len = 5;
	for(int i=0; i<Len; i++)
		pResult[i] = 0x55;
	pResult[Len] = 0xaa;
	Len++;
	WORD  nTempLen = nSrcLen;
	//
	memcpy(pResult + Len, &nTempLen, 2);
	Len +=2;
	//
	memcpy(pResult + Len, &nTempLen, 2);
	Len +=2;
	//
	memcpy(pResult +Len, pMsg, nSrcLen);
	Len +=nSrcLen;
	//
	WORD  wCheckSum ;
	GetCheckSum(pMsg, nSrcLen, wCheckSum);
	memcpy(pResult + Len, &wCheckSum, 2);
	Len +=2;
	nRetLen = Len;
}


void  _stdcall AddFlag(char* buffer, DWORD bufsize,  char* ResultBuf, DWORD& nLen, BYTE chFlag)
{
	char  msg[10*1024];
	memcpy(msg, buffer, bufsize);
	memcpy(ResultBuf, &chFlag, 1);
	memcpy(ResultBuf+1, msg, bufsize);
	nLen = bufsize +1;
}



⌨️ 快捷键说明

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