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]; } //---------------------------------------------------------------------------