?? srvmainunit.cpp
字號(hào):
//短消息發(fā)送服務(wù)程序
//---------------------------------------------------------------------------
#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();
}
//---------------------------------------------------------------------------
//啟動(dòng)服務(wù)
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特服號(hào)碼
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企業(yè)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的端口號(hào)
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的端口號(hào)
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) //連接移動(dòng)發(fā)送網(wǎng)關(guān)成功
{
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("連接數(shù)據(jù)庫服務(wù)器失敗!");
return RT_ERR;
}
OutAllInf(INF_TYPE_SYS,"連接移動(dòng)發(fā)送網(wǎng)關(guān)成功.");
return RT_OK;
}
else //連接移動(dòng)發(fā)送網(wǎng)關(guān)失敗
{
return RT_ERR;
}
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::FormCreate(TObject *Sender)
{
//窗口建立事件
//啟動(dòng)服務(wù)
if (RT_ERR==StartService())
ShowMessage("連接移動(dòng)網(wǎng)關(guān)失敗,不能收發(fā)數(shù)據(jù)包!");
if (Query1->Active) //如果是激活的,則關(guān)閉之
Query1->Close();
if (PC1->ActivePageIndex != 3) //顯示系統(tǒng)運(yùn)行信息
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("消息內(nèi)容不可為空!");
MsgContent->SetFocus();
return;
}
if(MobileNumber->Text == "")
{
ShowMessage("發(fā)送手機(jī)號(hào)碼不能為空!");
MobileNumber->SetFocus();
return;
}
//發(fā)送短消息
if (g_conn_id>0) //處于連接狀態(tài)才可發(fā)送短消息
{
String mobilenumber=Trim(MobileNumber->Text);
String mobilecontent=Trim(MsgContent->Text); //消息內(nèi)容
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("發(fā)送成功!");
MobileNumber->Text="13899930321";
OutAllInf(INF_TYPE_OUT,"給手機(jī):"
+mobilenumber
+"的消息: "
+mobilecontent
+",發(fā)送成功!");
}
else
{
ShowMessage("發(fā)送失敗!");
MobileNumber->Text="13899930321";
OutAllInf(INF_TYPE_OUT,"給手機(jī):"
+mobilenumber
+"的消息: "
+mobilecontent
+",發(fā)送失敗!");
}
}
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::BCloseClick(TObject *Sender)
{
//關(guān)閉發(fā)送窗口
PnlSingle->Visible=false;
}
//---------------------------------------------------------------------------
//收包處理函數(shù)
int __fastcall TsmsSrvForm::ProcReceive()
{
return 0;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::TimerReTimer(TObject *Sender)
{
TimerRe->Enabled=false;
//自動(dòng)清除發(fā)送記錄
if (MOutDat->Lines->Count>100)
{
MOutDat->Clear();
}
ProcReceive();
TimerRe->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::CBInClick(TObject *Sender)
{
//是否觀察發(fā)送的數(shù)據(jù)
if (true==CBIn->Checked)
InInfFlag=OUT_INF;
else
InInfFlag=NO_OUT_INF;
}
//---------------------------------------------------------------------------
void __fastcall TsmsSrvForm::CBOutClick(TObject *Sender)
{
//是否觀察接收的數(shù)據(jù)
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)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -