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

📄 main.~cpp

📁 GSM 模块软件开发包 开发包说明 开发包基于GSM模块开发
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <registry.hpp>

#pragma hdrstop

#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFrmMain *FrmMain;
long Index;
int ModuleCount;
bool ModuleStatus[32];
//---------------------------------------------------------------------------
__fastcall TFrmMain::TFrmMain(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::FormShow(TObject *Sender)
{
  TRegIniFile *RegFile=new TRegIniFile("test");
  TStringList *Ports=new TStringList;
  RegFile->RootKey=HKEY_LOCAL_MACHINE;
  if (RegFile->OpenKey("\\HARDWARE\\DEVICEMAP",false))
  {
  	RegFile->ReadSectionValues("SerialComm", Ports);
    if (Ports->Count>0)
    {
      ModuleCount=Ports->Count;
      for (int i=0;i<Ports->Count;i++)
      {
      	CbPorts->Items->Add("COM"+IntToStr(i+1));
        ModuleStatus[i]=False;
      }
      CbPorts->ItemIndex=0;
    }
  }
  else ShowMessage("无法从注册表中获取串口配置");
  RegFile->CloseKey();
  RegFile->Free();
  Ports->Free();
  Index=1;
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::BtnSendClick(TObject *Sender)
{
	if(!ModuleStatus[CbPorts->ItemIndex])
  {
  	StatusBar1->Panels->Items[0]->Text="模块未打开";
    return;
  }

  if (SendMsg(CbPorts->ItemIndex+1,EdtMessage->Text.c_str(),EdtMobile->Text.c_str(),Index,True)==0)
  {
    StatusBar1->Panels->Items[1]->Text="发送成功";
    Index=Index+1;
  }
  else
    StatusBar1->Panels->Items[1]->Text="发送失败";
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::BtnOpenClick(TObject *Sender)
{
	if (ModuleStatus[CbPorts->ItemIndex])
  {
  	StatusBar1->Panels->Items[0]->Text="模块已打开";
    return;
  }
  if (OpenComm(CbPorts->ItemIndex+1)==0)
  {
    StatusBar1->Panels->Items[0]->Text="打开模块成功";
    ModuleStatus[CbPorts->ItemIndex]=True;
  }
  else
  StatusBar1->Panels->Items[0]->Text="打开模块失败";  
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::BtnCloseClick(TObject *Sender)
{
	if (!ModuleStatus[CbPorts->ItemIndex])
  {
  	StatusBar1->Panels->Items[0]->Text="模块未打开";
    return;
  }
  if (CloseComm(CbPorts->ItemIndex+1)==0)
  {
    StatusBar1->Panels->Items[0]->Text="关闭模块成功";
    StatusBar1->Panels->Items[1]->Text="";
    ModuleStatus[CbPorts->ItemIndex]=False;
  }
  else
  if (Application->MessageBox("关闭模块失败,可能还有未处理短信,是否强制关闭?","提示",MB_OKCANCEL)==ID_OK)
  	if (ForceCloseComm(CbPorts->ItemIndex+1)==0)
    {
    	StatusBar1->Panels->Items[0]->Text="模块已强制关闭";
    	ModuleStatus[CbPorts->ItemIndex]=False;
    }
    else StatusBar1->Panels->Items[0]->Text="强制关闭模块失败";
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::BtnGetSCAClick(TObject *Sender)
{
	char *SCA=new char[32];
	if (!ModuleStatus[CbPorts->ItemIndex])
  {
  	StatusBar1->Panels->Items[0]->Text="模块未打开";
    return;
  }

  if (GetSCA(CbPorts->ItemIndex+1,SCA)&&(SCA!="\0"))
  {
  	EdtSCA->Text=SCA;
    StatusBar1->Panels->Items[0]->Text="读取短信中心号码成功";
  }
  else StatusBar1->Panels->Items[0]->Text="读取短信中心号码失败";
  delete SCA;
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::BtnSetSCAClick(TObject *Sender)
{
	if (!ModuleStatus[CbPorts->ItemIndex])
  {
  	StatusBar1->Panels->Items[0]->Text="模块未打开";
    return;
  }

  if ((EdtSCA->Text=="")||(EdtSCA->Text==" "))
  {
  	StatusBar1->Panels->Items[0]->Text="短信中心号码不能为空";
    return;
  }

  if (!SetSCA(CbPorts->ItemIndex+1,EdtSCA->Text.c_str()))
  	StatusBar1->Panels->Items[0]->Text="设置短信中心号码失败";
  else StatusBar1->Panels->Items[0]->Text="设置短信中心号码成功";

}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::Timer1Timer(TObject *Sender)
{
  char *RecNewMsg=new char[512];
  char *SendFailedMsg=new char[512];
  char *UnSendMsg=new char[512];
  char *TmpMsg=new char[600];

  for (int i=0;i<ModuleCount;i++)
  {
  	if (ModuleStatus[i]&&GetNewMsg(i+1,RecNewMsg))
    {
    	StrCopy(TmpMsg,"收到短信:");
      StrCat(TmpMsg,RecNewMsg);
  		Memo1->Lines->Add(TmpMsg);
    }
    if (ModuleStatus[i]&&GetFailedMsg(i+1,SendFailedMsg))
    {   
    	StrCopy(TmpMsg,"发送短信失败:");
      StrCat(TmpMsg,SendFailedMsg);
  		Memo1->Lines->Add(TmpMsg);
    }
  }

	if (ModuleStatus[CbPorts->ItemIndex])
  {
  	EdtUnSendCount->Text=IntToStr(GetUnSendCount(CbPorts->ItemIndex+1));
  }
  else EdtUnSendCount->Text="";

  if (ModuleStatus[CbPorts->ItemIndex])
  {
  	if (GetNextSendMsg(CbPorts->ItemIndex+1,UnSendMsg,False))
     EdtNextMsgToSend->Text=UnSendMsg;
  	else EdtNextMsgToSend->Text="";
  }
  else EdtNextMsgToSend->Text="";
  delete TmpMsg;
  delete RecNewMsg;
  delete UnSendMsg;
  delete SendFailedMsg;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -