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

📄 dtpprotocol.cpp

📁 一个移动通信用SMPP协议写的.非常经典!
💻 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 + -