📄 main.~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 + -