📄 protocolapi.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 + -