📄 dtpprotocol.cpp
字号:
#include <vcl.h>
#pragma hdrstop
#include "dtpProtocol.h"
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
/*///////////////////////////////////////////////////////////////////
函数名: GetInputBuffer
功 能: 取得输入缓冲区所有数据,调用相应处理函数分类处理,将每条数据都存
入RTU通信日志,同时清空输入缓冲区
*/
void TdtpProtocol::GetInputBuffer()
{
if(InputBuffer.Length==0)
return;
AnsiString sim,shead,sBody;
for(int i=0;i<InputBuffer.Length;i++)
{
sim=InputBuffer[i].sim;
sBody=InputBuffer[i].data;
sBody=sBody.Trim();
sBody=ChangeChar(sBody,"?","#");
sBody=ChangeChar(sBody,"'","#");
sBody=ChangeChar(sBody,"@","#");
sBody=ChangeChar(sBody,"%","#");
sBody=ChangeChar(sBody,"*","#");
shead=sBody.SubString(1,1);
iMoCountToday++;
if(sim==MainForm->Edit1->Text)
{
int iTmp=StrToInt(MainForm->Label12->Caption);
iTmp++;
MainForm->Label12->Caption=IntToStr(iTmp);
}
if(shead=="9") //请求灯谜
{
MainForm->UserInfo->AddOneDm(sim);
}
else if(shead=="8") //查谜底
{
MainForm->UserInfo->AnswerToUser(sim);
}
else if(shead=="7") //查积分
{
MainForm->UserInfo->QueryGrade(sim);
}
else if(shead=="6") //征谜面
{
sBody=sBody.SubString(2,sBody.Length()-1);
MainForm->UserInfo->AnswerMd(sim,sBody);
}
else //回答灯谜
{
MainForm->UserInfo->UserAnswer(sim,sBody);
}
}
//清空输入缓冲区
InputBuffer.Length=0;
}
//向手机发送数据,按长度自动拆分
void TdtpProtocol::SendOne(AnsiString DATA,AnsiString SIM,AnsiString SOURCESIM,bool bReadSend)
{
int SendNum=0;
char cStr[140],cbuff[3000];
memset(cbuff,0,3000);
strcpy(cbuff,DATA.c_str());
while(strlen(cbuff)>0)
{
STRUCT_OUTBUFF sOutBuff;
sOutBuff.sim=SIM;
sOutBuff.sourcesim=SOURCESIM;
sOutBuff.bRealSend=bReadSend;
sOutBuff.data="";
if(strlen(cbuff)>140)
{
SendNum++;
memset(cStr,0,140);
int iTmpNum=0;
for(int i=0;i<140;i++)
{
if(cbuff[i]>31&&cbuff[i]<127)
iTmpNum++;
}
if(iTmpNum%2==0)
{
memcpy(cStr,cbuff,140);
strcpy(cbuff,cbuff+140);
}
else
{
memcpy(cStr,cbuff,139);
strcpy(cbuff,cbuff+139);
}
sOutBuff.data=AnsiString(cStr);
OutputBuffer.Length++;
OutputBuffer[OutputBuffer.Length-1]=sOutBuff;
DATA="(续"+IntToStr(SendNum)+")"+AnsiString(cbuff);
strcpy(cbuff,DATA.c_str());
}
else
{
sOutBuff.data=AnsiString(cbuff);
OutputBuffer.Length++;
OutputBuffer[OutputBuffer.Length-1]=sOutBuff;
strcpy(cbuff,"");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -