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

📄 cbmain.cpp

📁 关于GPRS的c网络编程软件
💻 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 + -