www.pudn.com > GPRS__moder.rar > cbMain.cpp


/***************************************************************************** 
 *    GSM SMS Routines 
 * 
 *    Writen by Menghongwen@ 
 * 
 *   Dec., 2004 copyright YINHUA Technology, all right reserved 
\****************************************************************************/ 
 
#include  
#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]; 
} 
//---------------------------------------------------------------------------