📄 cbmain.cpp
字号:
/*****************************************************************************
* GSM SMS Routines
*
* Writen by Menghongwen@<menghongwen@smmail.cn>
*
* Dec., 2004 copyright YINHUA Technology, all right reserved
\****************************************************************************/
#include <vcl.h>
#pragma hdrstop
#include "stdio.h"
#include "cbMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btStartClick(TObject *Sender)
{
__config.hevStopGSMService = CreateEvent(NULL, TRUE, FALSE, "evStopGSMService");
__config.hevThreadStoped = CreateEvent(NULL, TRUE, FALSE, "evThreadStoped");
__config.asSmscString = "8613800210500";
__config.msWaitingTime = 3050;
__config.msPollingTime = 10;
__config.hQueueIn = new TQueue;
__config.hQueueOut= new TQueue;
TimerQ->Interval = __config.msWaitingTime;
pGSMService = new TGSMService(true,&__config);
if(!pGSMService->prepare4Start()) {
pGSMService->Terminate();
ShowMessage("SMS Serice no started");
} else pGSMService->Resume();
btStart->Enabled = false;
btStop->Enabled = true;
TimerQ->Enabled = true;
lbMessage->Items->Clear();
btSend->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btStopClick(TObject *Sender)
{
int rc;
// Stop timer
TimerQ->Enabled = false;
SetEvent(__config.hevStopGSMService);
// pGSMService->WaitFor();
WaitForSingleObject(__config.hevThreadStoped, INFINITE);
ResetEvent(__config.hevThreadStoped);
CloseHandle(__config.hevStopGSMService);
CloseHandle(__config.hevThreadStoped);
btStart->Enabled = true;
btStop->Enabled = false;
btSend->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btSendClick(TObject *Sender)
{
PTGSMMessage newMsg;
short i=88;
char szMsg[1024];
btSend->Enabled = false;
for(i=1; i<=csCount->Value; i++ ) {
newMsg = new TGSMMessage;
newMsg->traceno = IntToStr(i);
newMsg->address.setvalue(edTo->Text.c_str());
newMsg->address.settype(GSMPHONETYPENAT);
sprintf(szMsg, "(%d)%s",i, edSendText->Text.c_str());
newMsg->asMessage = szMsg;
__config.hQueueOut->Push(newMsg);
}
btSend->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerQTimer(TObject *Sender)
{
PTGSMMessage pMessage;
AnsiString asMessage;
while (__config.hQueueIn->Count()) {
pMessage =(PTGSMMessage)__config.hQueueIn->Pop();
if (pMessage==NULL) return;
switch(pMessage->msgtype) {
case GSMMTReceipt:
asMessage = "Receipt of ";
asMessage += pMessage->traceno + ":"+pMessage->asMessage;
break;
case GSMMTMessage: // imcoming message
asMessage = pMessage->asMessage;
asMessage += (char*)pMessage->address.ascii;
asMessage += "于";
asMessage += pMessage->traceno;
break;
default:
asMessage = "error message";
}
delete pMessage;
lbMessage->Items->Append(asMessage);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::lbMessageClick(TObject *Sender)
{
meMessage->Text = lbMessage->Items->Strings[lbMessage->ItemIndex];
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -