📄 untsmscontrol.cpp
字号:
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 + -