短信收发程序c#之欧阳语创编.docx
- 文档编号:23813661
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:17
- 大小:17.28KB
短信收发程序c#之欧阳语创编.docx
《短信收发程序c#之欧阳语创编.docx》由会员分享,可在线阅读,更多相关《短信收发程序c#之欧阳语创编.docx(17页珍藏版)》请在冰豆网上搜索。
短信收发程序c#之欧阳语创编
usingSystem;
时间:
2021.03.01
创作:
欧阳语
usingSystem.Drawing;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Windows.Forms;
usingSystem.Data;
usingSystem.Threading;
usingSystem.Text;
usingJustinIO;
usingSMS;
usingSystem.IO;
usingSystem.Timers;
publicstructmessage//定时发送相关信息
{
publicstringnumber;
publicstringcenter;
publicstringmess;
};
messagemessage1=newmessage();
messagemessage2=newmessage();
messagemessage3=newmessage();
stringstate="";//存储发送情况
intx=0,y=0;//发送计数
///
///应用程序的主入口点。
///
[STAThread]
staticvoidMain()
{
Application.Run(newForm1());
}
///初始化串口
publicboolInitCom(stringm_port,intm_baudrate)
{
ss_port.PortNum=m_port;
ss_port.BaudRate=m_baudrate;
ss_port.ByteSize=8;
ss_port.Parity=0;
ss_port.StopBits=1;
ss_port.ReadTimeout=1000;
try
{
if(ss_port.Opened)
{
ss_port.Close();
ss_port.Open();
}
else
{
ss_port.Open();//打开串口
}
returntrue;
}
catch
(Exceptione)
{
MessageBox.Show("错误:
"+e.Message);
returnfalse;
}
}
//初始化代码,并获取相关信息
privatevoidbtnConnect_Click(objectsender,System.EventArgse)
{
boolopened=InitCom(ConnectPort.SelectedItem.ToString(),Convert.ToInt32(ConnectBaudRate.SelectedItem.ToString()));
boolConnected=false;
if(opened)
{
ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMI\r"));//获取品牌
stringresponse=Encoding.ASCII.GetString(ss_port.Read(128));
if(response.Length>0)
{
ConnectState.Text=response.Substring(2,16);
Connected=true;
}
else
{
ConnectState.Text="连接不成功";
Connected=false;
}
ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMM\r"));//获取型号
response=Encoding.ASCII.GetString(ss_port.Read(128));
if(response.Length>0)
{
ConnectState.Text=ConnectState.Text+""+response.Substring(2,6)+"已连接";
Connected=true;
}
else
{
ConnectState.Text="连接不成功";
Connected=false;
}
ss_port.Write(Encoding.ASCII.GetBytes("AT+CSCA?
\r"));//获取短信中心号
response=Encoding.ASCII.GetString(ss_port.Read(128));
if(response.Length>0)
{
CenterNumber.Text=response.Substring(11,13);
Connected=true;
}
else
{
Connected=false;
}
if(Connected==true)
{
btnConnect.Enabled=false;
btnSend.Enabled=true;
receive.Enabled=true;
unread.Enabled=true;
sendstate.Enabled=true;
clearsend.Enabled=true;
}
else
{
btnConnect.Enabled=true;
btnSend.Enabled=false;
receive.Enabled=false;
unread.Enabled=false;
sendstate.Enabled=false;
clearsend.Enabled=false;
}
timer2.Start();//连接成功后,每1秒自动读取一次未读信息,若有未读则显示
}
}
//发送短信
privatevoidbtnSend_Click(objectsender,System.EventArgse)
{
//输入对方手机号码不足或短信为空时报错并重启
stringnum=targetNumber.Text;
num=num.Substring(0,2);
boolresult=string.Equals(num,"13");
if(!
result)
{
result=string.Equals(num,"14");
if(!
result)
{
result=string.Equals(num,"15");
if(!
result)
result=string.Equals(num,"18");
}
}
if((!
result)||(targetNumber.TextLength!
=11)||(smsContent.TextLength==0))
{
MessageBox.Show("请检查对方手机号且短信内容不得为空!
","警告");
return;
}
//选择定时则启动定时器
if(radioButton1.Enabled&hour.Enabled)//定时1
{
message1.number=targetNumber.Text;
message1.center=CenterNumber.Text;
message1.mess=smsContent.Text;
intsecond=(int.Parse(hour.Text)*60+int.Parse(min.Text))*60+1;//若定时为0,防止定时出错,默认为1秒
timer3.Interval=1000*second;
smsState.Text="信息将在"+hour.Text+"小时"+min.Text+"分钟之后发出。
\r\n";
timer3.Start();
radioButton1.Enabled=false;
return;
}
elseif(radioButton2.Enabled&hour2.Enabled)//定时2
{
message2.number=targetNumber.Text;
message2.center=CenterNumber.Text;
message2.mess=smsContent.Text;
intsecond=(int.Parse(hour2.Text)*60+int.Parse(min2.Text))*60+1;
timer4.Interval=1000*second;
smsState.Text="信息将在"+hour2.Text+"小时"+min2.Text+"分钟之后发出。
\r\n";
timer4.Start();
radioButton2.Enabled=false;
return;
}
elseif(radioButton4.Enabled&hour3.Enabled)//定时3
{
message3.number=targetNumber.Text;
message3.center=CenterNumber.Text;
message3.mess=smsContent.Text;
intsecond=(int.Parse(hour3.Text)*60+int.Parse(min3.Text))*60+1;
timer5.Interval=1000*second;
smsState.Text="信息将在"+hour3.Text+"小时"+min3.Text+"分钟之后发出。
\r\n";
timer5.Start();
radioButton4.Enabled=false;
return;
}
Thread.Sleep(2000);//当前线程延迟2秒,提高发送成功率
stringdecodedSMS=sms.smsDecodedsms(CenterNumber.Text,targetNumber.Text,smsContent.Text);
byte[]buf=Encoding.ASCII.GetBytes(String.Format("AT+CMGS={0}\r",sms.nLength));
ss_port.Write(buf);
stringresponse=Encoding.ASCII.GetString(ss_port.Read(128));
stringSendState="";
//ConnectState.Text="UCS2:
"+decodedSMS;//短信编码
if(response.Length>0&&response.EndsWith(">"))
{
ss_port.Write(Encoding.ASCII.GetBytes(String.Format("{0}\x01a",decodedSMS)));
SendState="发送成功!
\r";
x+=1;
}
else
{
SendState="发送失败。
\r";
y+=1;
}
stringResult=String.Format("{0}内容:
{1}{2}\r\n",targetNumber.Text,smsContent.Text,SendState);
smsState.Text+=Result;
state+=Result;
}
//关闭串口,退出程序
privatevoidbtnExit_Click(objectsender,System.EventArgse)
{
ss_port.Close();
Application.Exit();
}
//断开
privatevoidbtnDisconnect_Click(objectsender,EventArgse)
{
ss_port.Close();
state="";
btnConnect.Enabled=true;
btnSend.Enabled=false;
receive.Enabled=false;
unread.Enabled=false;
sendstate.Enabled=false;
clearsend.Enabled=false;
CenterNumber.Text="";
ConnectState.Text="未连接任何设备";
}
privatevoidForm1_Load(objectsender,EventArgse)
{
}
//清空状态
privatevoidclear_Click(objectsender,EventArgse)
{
smsState.Clear();
}
//收件箱
privatevoidreceive_Click(objectsender,EventArgse)
{
ss_port.Write(Encoding.ASCII.GetBytes("AT+CMGL=4\r"));//列出SIM卡中所有短信
stringresponse=Encoding.ASCII.GetString(ss_port.Read(5620));
if(response.IndexOf("+CMGL:
",0)>-1)
{
response=sms.smsunPDU(response);
smsState.Text=response;
}
}
//清空收件箱
privatevoidunread_Click(objectsender,EventArgse)
{
for(inti=0;i<=49;i++)
{
ss_port.Write(Encoding.ASCII.GetBytes(string.Format("AT+CMGD={0}\r",i.ToString())));//将五十个位置依次删除
}
smsState.Text="收件箱已清空";
//rece="";
}
//显示系统时间
privatevoidtimer1_Tick(objectsender,EventArgse)
{
DateTimedtime=DateTime.Now;
strings=dtime.ToLongTimeString();
this.timebar.Text=s;
}
privatevoidConnectPort_SelectedIndexChanged(objectsender,EventArgse)
{
}
privatevoidConnectBaudRate_SelectedIndexChanged(objectsender,EventArgse)
{
}
privatevoidCenterNumber_TextChanged(objectsender,EventArgse)
{
}
//新消息提示
privatevoidtimer2_Tick(objectsender,EventArgse)
{
ss_port.Write(Encoding.ASCII.GetBytes("AT+CMGL=0\r"));//列出SIM卡中未读短信
stringresponse=Encoding.ASCII.GetString(ss_port.Read(512));
if(response.IndexOf("\r\n+CMGL:
",0)>-1)
{
response=response.Substring(response.IndexOf("\r\n+CMGL:
",0));
response=sms.smsunPDU(response);
smsState.Text="收到新的短消息\r\n"+response;
}
}
//发送情况
privatevoidsendstate_Click(objectsender,EventArgse)
{
smsState.Text=state+"\r\n"+"已发送成功"+x.ToString()+"条,失败"+y.ToString()+"条。
";
}
privatevoidclearsend_Click(objectsender,EventArgse)
{
state="";
}
//定时发送1
privatevoidtimer3_Tick(objectsender,EventArgse)
{
stringdecodedSMS=sms.smsDecodedsms(message1.center,message1.number,message1.mess);
byte[]buf=Encoding.ASCII.GetBytes(String.Format("AT+CMGS={0}\r",sms.nLength));
ss_port.Write(buf);
stringresponse=Encoding.ASCII.GetString(ss_port.Read(128));
stringSendState="";
if(response.Length>0&&response.EndsWith(">"))
{
ss_port.Write(Encoding.ASCII.GetBytes(String.Format("{0}\x01a",decodedSMS)));
SendState="发送成功!
\r";
x+=1;
}
else
{
SendState="发送失败。
\r";
y+=1;
}
stringResult=String.Format("{0}内容:
{1}{2}\r\n",message1.number,message1.mess,SendState);
smsState.Text+=Result;
state+=Result;
timer3.Stop();
radioButton1.Enabled=true;
}
//定时发送2
privatevoidtimer4_Tick(objectsender,EventArgse)
{
stringdecodedSMS=sms.smsDecodedsms(message2.center,message2.number,message2.mess);
byte[]buf=Encoding.ASCII.GetBytes(String.Format("AT+CMGS={0}\r",sms.nLength));
ss_port.Write(buf);
stringresponse=Encoding.ASCII.GetString(ss_port.Read(128));
stringSendState="";
if(response.Length>0&&response.EndsWith(">"))
{
ss_port.Write(Encoding.ASCII.GetBytes(String.Format("{0}\x01a",decodedSMS)));
SendState="发送成功!
\r";
x+=1;
}
else
{
SendState="发送失败。
\r";
y+=1;
}
stringResult=String.Format("{0}内容:
{1}{2}\r\n",message2.number,message2.mess,SendState);
smsState.Text+=Result;
state+=Result;
timer4.Stop();
radioButton2.Enabled=true;
}
//定时发送3
privatevoidtimer5_Tick(objectsender,EventArgse)
{
stringdecodedSMS=sms.smsDecodedsms(message3.center,message3.number,message3.mess);
byte[]buf=Encoding.ASCII.GetBytes(String.Format("AT+CMGS={0}\r",sms.nLength));
ss_port.Write(buf);
stringresponse=Encoding.ASCII.GetString(ss_port.Read(128));
stringSendState="";
if(response.Length>0&&response.EndsWith(">"))
{
ss_port.Write(Encoding.ASCII.GetBytes(String.Format("{0}\x01a",decodedSMS)));
SendState="发送成功!
\r";
x+=1;
}
else
{
SendState="发送失败。
\r";
y+=1;
}
stringResult=String.Format("{0}内容:
{1}{2}\r\n",message3.number,message3.mess,SendState);
smsState.Text+=Result;
state+=Result;
timer5.Stop();
radioButton4.Enabled=true;
}
//定时读取区域1
privatevoidradioButton1_CheckedChanged(objectsender,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 短信 收发 程序 c# 欧阳 创编