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

📄 main.cpp

📁 Motorola C359短信发送程序。串口编程的典范
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma link "YbCommDevice"
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
    : TForm(Owner)
{
    
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button2Click(TObject *Sender)
{
    this->Close();    
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::txtSMSChange(TObject *Sender)
{
    txtCount->Text=txtSMS->Text.WideCharBufSize()-1;
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::nComChange(TObject *Sender)
{
  try{
    COM->Active=false;
    COM->PortNo=nCom->Value;
    COM->Active=true;
    String S="EMPTY\x1A\r\nATE1\r\nAT+CMEE=0\r\nAT+CSCS=UCS2\r\nAT+CGMM\r\nAT+CPBS=ME\r\nAT+CPBR=?\r\nAT+CPBS=SM\r\nAT+CPBR=?\r\nAT+CPBS=ON\r\nAT+MPBR=1\r\nAT+CGMI\r\nAT+CGMR\r\nAT+CGSN\r\nAT+CIMI\r\nAT+CCID\r\nAT+GCAP\r\nAT+CCLK?\r\nAT+CSQ\r\nAT+WOPN?\r\nAT+CSCS=\"ASCII\"\r\nAT+CSCA?\r\nAT+CSCS=\"UCS2\"\r\nAT+CBC?\r\n";
    COM->Write(S.c_str(),S.Length());
    stbMain->Panels->Items[0]->Text="准备就绪";
  }
  catch(...)
  {
    stbMain->Panels->Items[0]->Text="未连接";
  }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
    if(txtSMS->Text=="")
    {
        Application->MessageBoxA("不能发送空信息!","提示",MB_OK+MB_ICONWARNING);
        return;
    }
    stbMain->Panels->Items[1]->Text="准备发送短信...";
    Button1->Enabled=false;
    txtSMS->Enabled=false;
    String S="AT+CPMS=MT,DM\r\n";
    COM->Write(S.c_str(),S.Length());
    S="AT+CMGW=\""+Trim(txtNum->Text)+"\"\r\n";
    COM->Write(S.c_str(),S.Length());

    S=GetUnicode(txtSMS->Text)+"\x1A\r\n";
    COM->Write(S.c_str(),S.Length());
}
//---------------------------------------------------------------------------
String __fastcall TfrmMain::GetUnicode(String sIn)
{//
    String sData="";
    
    wchar_t wch[500];
    ZeroMemory(wch,1000);
    sIn.WideChar(wch,sIn.Length());
    for(int i=0;i<sIn.WideCharBufSize()-1;i++)
    {
        sData=sData+IntToHex((int)wch[i],4);
    }

    return sData;
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::tmrRecvTimer(TObject *Sender)
{
    String sRecv;
    const BufSize = 4096;
    char Buffer[BufSize];
    ZeroMemory(Buffer,BufSize);
    if(COM->Read(Buffer,BufSize)>0)
    {
        sRecv=Buffer;
        //Memo1->Text=Memo1->Text+sRecv;
        if(sRecv.Pos("+CMGW: ")>0)
        {
            stbMain->Panels->Items[1]->Text="正在发送短信...";
            for(int i=0;i<50;i++)
            {
                Application->ProcessMessages();
                Sleep(20);
            }
            String S="AT+CMSS="+sRecv.SubString(sRecv.Pos("+CMGW: ")+7,sRecv.Length()-7)+"\r\n";
            COM->Write(S.c_str(),S.Length());
        }
        else if(sRecv.Pos("+CMSS: ")>0 && sRecv.Pos("OK")>0)
        {
            stbMain->Panels->Items[1]->Text="发送成功";
            Button1->Enabled=true;
            txtSMS->Enabled=true;
            txtSMS->Clear();
            txtSMS->SetFocus();
            txtCount->Text=0;
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
    nComChange(this);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
    COM->Active=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::txtSMSKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if(Shift.Contains(ssCtrl) && Key==0xD)
    {
        Button1Click(this);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::txtSMSKeyPress(TObject *Sender, char &Key)
{
    if(Key==0xA && ((GetKeyState(VK_LCONTROL)<0)||(GetKeyState(VK_RCONTROL)<0)))
        Key=0;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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