📄 srvmainunit.cpp
字号:
//短消息发送服务程序
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "srvMainUnit.h"
#include "api.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "wwdbedit"
#pragma link "Wwdbgrid"
#pragma link "Wwdbigrd"
#pragma link "Wwdbcomb"
#pragma link "Wwdotdot"
#pragma resource "*.dfm"
USEFORM("singleSubUnit.cpp", singleSubForm);
TsmsSrvForm *smsSrvForm;
int result=1;
int g_conn_id;
int g_conn_mo_id;
char cSpNumber[21],cSP_Id[7],cUserName[7],cPassWord[21],cMTgw_ip[21],cMOgw_ip[21];
int iMTport,iMOport;
int OutInfFlag=NO_OUT_INF;
int InInfFlag=NO_OUT_INF;
int OutSysInfFlag=OUT_INF;
int MisPauseFlag=MIS_PAUSE;
int MaxSubmitNum=MAX_SUBMIT_NUM;
int MaxDeliverNum=MAX_DELIVER_NUM;
//---------------------------------------------------------------------------
__fastcall TsmsSrvForm::TsmsSrvForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::ToolButton1Click(TObject *Sender)
{
if (PC1->ActivePageIndex != 0)
PC1->ActivePageIndex=0;
PnlSingle->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::tlbLookClick(TObject *Sender)
{
if (PC1->ActivePageIndex != 1)
PC1->ActivePageIndex=1;
OutInfFlag=OUT_INF;
InInfFlag=OUT_INF;
CBIn->Checked=true;
CBOut->Checked=true;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::tlbLookMissClick(TObject *Sender)
{
if (PC1->ActivePageIndex != 2)
PC1->ActivePageIndex=2;
Query1->Close();
Query1->Open();
}
//---------------------------------------------------------------------------
//启动服务
int __fastcall TsmsSrvForm::StartService()
{
int i;
String charadd,RecvTimes,QryTimes,PorcTimes,ListenPort,TimesFlag,MaxSubmit,MaxDeliver;
String SpNumber,SP_Id,UserName,PassWord,MTgw_ip,MTport,MOgw_ip,MOport;
String apppath;
String bdename;
String dbuser;
String dbpass;
int iFileHandle;
Memo1->Lines->LoadFromFile("config.ini");
//SP特服号码
SpNumber = Memo1->Lines->Values["SpNumber"];
for (i=1;i<=SpNumber.Length();i++)
{
charadd=SpNumber.SubString(i,1);
cSpNumber[i-1]=charadd[1];
}
cSpNumber[i-1]='\0';
//SP企业ID
SP_Id = Memo1->Lines->Values["SP_Id"];
for (i=1;i<=SP_Id.Length();i++)
{
charadd=SP_Id.SubString(i,1);
cSP_Id[i-1]=charadd[1];
}
cSP_Id[i-1]='\0';
//用户名
UserName=Memo1->Lines->Values["UserName"];
for (i=1;i<=UserName.Length();i++)
{
charadd=UserName.SubString(i,1);
cUserName[i-1]=charadd[1];
}
cUserName[i-1]='\0';
//密码
PassWord=Memo1->Lines->Values["PassWord"];
for (i=1;i<=PassWord.Length();i++)
{
charadd=PassWord.SubString(i,1);
cPassWord[i-1]=charadd[1];
}
cPassWord[i-1]='\0';
//MT的IP地址
MTgw_ip=Memo1->Lines->Values["MTgw_ip"];
for (i=1;i<=MTgw_ip.Length();i++)
{
charadd=MTgw_ip.SubString(i,1);
cMTgw_ip[i-1]=charadd[1];
}
cMTgw_ip[i-1]='\0';
//MT的端口号
MTport=Memo1->Lines->Values["MTport"];
iMTport=StrToInt(MTport);
//MO的IP地址
MOgw_ip=Memo1->Lines->Values["MOgw_ip"];
for (i=1;i<=MOgw_ip.Length();i++)
{
charadd=MOgw_ip.SubString(i,1);
cMOgw_ip[i-1]=charadd[1];
}
cMOgw_ip[i-1]='\0';
//MO的端口号
MOport=Memo1->Lines->Values["MOport"];
iMOport=StrToInt(MOport);
RecvTimes = Memo1->Lines->Values["RecvTimes"];
PorcTimes = Memo1->Lines->Values["PorcTimes"];
bdename=Memo1->Lines->Values["BDENAME"];
dbuser=Memo1->Lines->Values["DBUSER"];
dbpass=Memo1->Lines->Values["DBPASS"];
//MO连接
g_conn_id = CMPP_Connect(cMTgw_ip,iMTport,cUserName,cPassWord);
if(g_conn_id >0) //连接移动发送网关成功
{
TimerRe->Enabled=false;
//TimerRe->Interval=StrToInt(RecvTimes);
//TimerRe->Enabled=true;
TimerProc->Enabled=false;
TimerProc->Interval=StrToInt(PorcTimes);
TimerProc->Enabled=true;
DB1->Close();
DB1->AliasName=bdename;
try
{
DB1->Params->Add("username="+dbuser);
DB1->Params->Add("password="+dbpass);
DB1->Open();
}
catch (...)
{
ShowMessage("连接数据库服务器失败!");
return RT_ERR;
}
OutAllInf(INF_TYPE_SYS,"连接移动发送网关成功.");
return RT_OK;
}
else //连接移动发送网关失败
{
return RT_ERR;
}
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::FormCreate(TObject *Sender)
{
//窗口建立事件
//启动服务
if (RT_ERR==StartService())
ShowMessage("连接移动网关失败,不能收发数据包!");
if (Query1->Active) //如果是激活的,则关闭之
Query1->Close();
if (PC1->ActivePageIndex != 3) //显示系统运行信息
PC1->ActivePageIndex=3;
CBSysInf->Checked=true;
CBOut->Checked=true;
CBIn->Checked=true;
InInfFlag=OUT_INF;
OutInfFlag=OUT_INF;
OutSysInfFlag=OUT_INF;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::BSubmitClick(TObject *Sender)
{
int nRetCode;
__int64 msgid;
if(MsgContent->Text == "")
{
ShowMessage("消息内容不可为空!");
MsgContent->SetFocus();
return;
}
if(MobileNumber->Text == "")
{
ShowMessage("发送手机号码不能为空!");
MobileNumber->SetFocus();
return;
}
//发送短消息
if (g_conn_id>0) //处于连接状态才可发送短消息
{
String mobilenumber=Trim(MobileNumber->Text);
String mobilecontent=Trim(MsgContent->Text); //消息内容
char charnumber[20],charmobilecontent[200];
String charadd;
int length=mobilecontent.Length();
int i;
for (i=1;i<=mobilenumber.Length();i++)
{
charadd=mobilenumber.SubString(i,1);
charnumber[i-1]=charadd[1];
}
charnumber[i-1]='\0';
for (i=1;i<=mobilecontent.Length();i++)
{
charadd=mobilecontent.SubString(i,1);
charmobilecontent[i-1]=charadd[1];
}
charmobilecontent[i-1]='\0';
nRetCode = CMPP_Brief_Submit(cMTgw_ip,
iMTport,
cUserName,
cPassWord,
&msgid,
3,
"TEST",
15,
cSP_Id,
"01",
"000000",
"0",
"0",
0,
0,
0,
"0",
cSpNumber,
1,
charnumber,
charmobilecontent,
length,
0);
if(nRetCode==0)
{
ShowMessage("发送成功!");
MobileNumber->Text="13899930321";
OutAllInf(INF_TYPE_OUT,"给手机:"
+mobilenumber
+"的消息: "
+mobilecontent
+",发送成功!");
}
else
{
ShowMessage("发送失败!");
MobileNumber->Text="13899930321";
OutAllInf(INF_TYPE_OUT,"给手机:"
+mobilenumber
+"的消息: "
+mobilecontent
+",发送失败!");
}
}
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::BCloseClick(TObject *Sender)
{
//关闭发送窗口
PnlSingle->Visible=false;
}
//---------------------------------------------------------------------------
//收包处理函数
int __fastcall TsmsSrvForm::ProcReceive()
{
return 0;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::TimerReTimer(TObject *Sender)
{
TimerRe->Enabled=false;
//自动清除发送记录
if (MOutDat->Lines->Count>100)
{
MOutDat->Clear();
}
ProcReceive();
TimerRe->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::CBInClick(TObject *Sender)
{
//是否观察发送的数据
if (true==CBIn->Checked)
InInfFlag=OUT_INF;
else
InInfFlag=NO_OUT_INF;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::CBOutClick(TObject *Sender)
{
//是否观察接收的数据
if (true==CBOut->Checked)
OutInfFlag=OUT_INF;
else
OutInfFlag=NO_OUT_INF;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::BtClearDatClick(TObject *Sender)
{
MOutDat->Clear();
MInDat->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::BtSaveClick(TObject *Sender)
{
//保存至文件
if (0!=MOutDat->Lines->Count)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -