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

📄 untsmscontrol.cpp

📁 短信猫完整开发例子,里面包含全部的字节流码
💻 CPP
📖 第 1 页 / 共 2 页
字号:

void __fastcall TfrmControl::Button9Click(TObject *Sender)
{
    char p[512] = {'\0'};
    decode_unicode(p, Edit4->Text.c_str());
    Edit3->Text = p;
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::Button10Click(TObject *Sender)
{
    char p[512] = {'\0'};
    unsigned short e, h;
    encode_bit8(p, Edit5->Text.c_str(), &e, &h);
    Edit7->Text = p;
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::Button11Click(TObject *Sender)
{
    char p[512] = {'\0'};
    decode_bit8(p, Edit7->Text.c_str());
    Edit6->Text = p;    
}
//---------------------------------------------------------------------------




void __fastcall TfrmControl::spCommReceiveData(TObject *Sender,
      Pointer Buffer, WORD BufferLength)
{
    rec_msg = rec_msg + (char*)Buffer;
    Memo2->Lines->Add(rec_msg);
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::FormCreate(TObject *Sender)
{
    com_open = false;
    can_next = true;
    uid = 0;
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::AddEventInfo(unsigned int id, AnsiString EventName
    , AnsiString result)
{
    TListItem* listItem = lvEvent->Items->Add();
    listItem->Caption = IntToStr(id);
    listItem->SubItems->Add(EventName);
    listItem->SubItems->Add(FormatDateTime("yyyy-mm-dd hh:nn:ss", Now()));
    listItem->SubItems->Add(result);
}

//---------------------------------------------------------------------------
void __fastcall TfrmControl::SetEventResult(unsigned int id
        , AnsiString result)
{
    for (int i = 0; i < lvEvent->Items->Count; i++)
    {
        if ((unsigned int)lvEvent->Items->Item[i]->Caption.ToInt() == id)
        {
            lvEvent->Items->Item[i]->SubItems->Strings[2] = result;
            break;
        }
    }
}

//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActSendExecute(TObject *Sender)
{
    if (!CheckStatus())
        return;

    rec_msg = "";
    
    AnsiString SendMsg =
        SendEncode(edtPhone->Text.c_str(), CodeStyle.c_str(), meoContent->Text.c_str());

    spComm->WriteCommData(SendMsg.c_str(), SendMsg.Length());

    uid++;
    AddEventInfo(uid, "发送消息到" + edtPhone->Text);
    can_next = false;
    re_type = _r_ok; //设置发送模式。
    timExecute->Enabled = true;    
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActReadUnReadExecute(TObject *Sender)
{
    //正在读取未读消息
    rec_msg = "";

    Message = "AT+CMGL=0\r";
    spComm->WriteCommData(Message.c_str(), Message.Length());

    uid++;
    AddEventInfo(uid, "读取未读消息", "正在读取未读短信...");
    can_next = false;
    re_type = _r_unread; //设置发送模式。
    timExecute->Enabled = true;


    //这里我没有作相应的解码操作,可以自己写相应的解码函数。
}
//---------------------------------------------------------------------------

unsigned short TfrmControl::GetPosDegree(AnsiString sub, AnsiString source)
{
    //
    AnsiString tmp = source;
    unsigned short pos = 0, num = 0, len = sub.Length();

    pos = tmp.Pos(sub);

    while (pos > 0)
    {
        num++;
        tmp = tmp.SubString(pos + len + 1, tmp.Length());
        pos = tmp.Pos(sub);
    }
    return num - 1;
}

//---------------------------------------------------------------------------


void __fastcall TfrmControl::ActGetSNExecute(TObject *Sender)
{
    //命令:"AT+CGSN\n"
    //标识:_g_phone
    /*This command allows the user application to know the IMEI (International Mobile
    Equipment Identity) of the GSM module.*/
    
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActGetCenterExecute(TObject *Sender)
{
    rec_msg = "";
    
    Message = "AT+CSCA?\r";
    spComm->WriteCommData(Message.c_str(), Message.Length());

    uid++;
    AddEventInfo(uid, "获取知信息中心");
    can_next = false;
    re_type = _g_center; //设置发送模式。
    timExecute->Enabled = true;        

    
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActSetCenterExecute(TObject *Sender)
{
    rec_msg = "";
    
    Message = "AT+CSCA=\"" + edtCenter->Text + "\"\r";
    spComm->WriteCommData(Message.c_str(), Message.Length());

    uid++;
    AddEventInfo(uid, "设置知信息中心");
    can_next = false;
    re_type = _r_ok; //设置发送模式。
    timExecute->Enabled = true;         
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActGetIntentionExecute(TObject *Sender)
{
    //命令: "AT+CSQ\n"
    //标识: _g_intension
    
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActSetReportExecute(TObject *Sender)
{
    /*如果错误报告模式设置为:完整报告模式,则在出现错误时会有错误号提供出来
      具体的错误号对应哪一个错误,请参照错误列表页面 */;
    rec_msg = "";
    
    if (rbFull->Checked)
    {
        Message = "AT+CMEE=1\r";
    }
    else
    {
        Message = "AT+CMEE=0\r";
    }

    spComm->WriteCommData(Message.c_str(), Message.Length());

    uid++;
    if (rbFull->Checked)
        AddEventInfo(uid, "设置发送消息模式为完整报告模式");
    else
        AddEventInfo(uid, "设置发送消息模式为结论报告模式");

    can_next = false;
    re_type = _r_ok; //设置发送模式。
    timExecute->Enabled = true;      

}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActSetModelExecute(TObject *Sender)
{
    rec_msg = "";

    if (rbText->Checked)
        Message = "AT+CMGF=1" + char(26);
    else
        Message = "at+cmgf=0\r\n";

    spComm->WriteCommData(Message.c_str(), Message.Length());

    uid++;
    AddEventInfo(uid, "设置发送PDU模式");
    can_next = false;
    re_type = _r_ok; //设置发送模式。
    timExecute->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActDelMessageExecute(TObject *Sender)
{
    //命令:AT+CMGD=索相号\n
    //标识:_d_message;    
}
//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActReadReReadExecute(TObject *Sender)
{
    //正在读取未读消息
    rec_msg = "";

    Message = "AT+CMGL=1\r";
    spComm->WriteCommData(Message.c_str(), Message.Length());

    uid++;
    AddEventInfo(uid, "读取未读消息", "正在读取未读短信...");
    can_next = false;
    re_type = _r_reread; //设置发送模式。
    timExecute->Enabled = true;

    //这里我没有作相应的解码操作,可以自己写相应的解码函数。
}
//---------------------------------------------------------------------------

AnsiString TfrmControl::GetCenter(AnsiString source)
{
    AnsiString temp = StringReplace(source, "\n", "", TReplaceFlags() << rfReplaceAll);
    temp = StringReplace(temp, "\r", "", TReplaceFlags() << rfReplaceAll);

    int pos = temp.Pos("\"");
    temp = temp.SubString(pos + 1, temp.Length());

    temp = temp.SubString(1, temp.Pos("\"") - 1);

    return temp;
}

//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActGetModelExecute(TObject *Sender)
{
    rec_msg = "";

    Message = "AT+CMGF?\r";

    spComm->WriteCommData(Message.c_str(), Message.Length());

    uid++;
    AddEventInfo(uid, "获取发送模式");
    can_next = false;
    re_type = _g_model;
    timExecute->Enabled = true;
}
//---------------------------------------------------------------------------

int TfrmControl::GetSendModal(AnsiString source)
{
    if (source.Pos("0") > 0)
        return 0;
    else
        return 1;
}

//---------------------------------------------------------------------------

void __fastcall TfrmControl::ActionList1Update(TBasicAction *Action,
      bool &Handled)
{
    //
    if ( (Action == ActSend)
        || (Action == ActReadUnRead)
        || (Action == ActReadReRead)
        || (Action == ActGetModel)
        || (Action == ActSetModel)
        || (Action == ActGetReport)
        || (Action == ActSetReport)
        || (Action == ActGetSN)
        || (Action == ActGetCenter)
        || (Action == ActSetCenter)
        || (Action == ActGetIntention)
        || (Action == ActDelMessage)
        )
    {
        ((TAction*)Action)->Enabled = com_open && can_next;
    }
}
//---------------------------------------------------------------------------




void __fastcall TfrmControl::Button6Click(TObject *Sender)
{
    rec_msg = "";

    Message = "AT+CMGS=033\r\n";
    spComm->WriteCommData(Message.c_str(), Message.Length());
    Message = "0011000D91685189176468F80008011253174EAC5609590D6B236B228FCE60A8FF01";
    Message += char(26) + "\r\n";
    spComm->WriteCommData(Message.c_str(), Message.Length());

}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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