短信收发程序c#_第1页
短信收发程序c#_第2页
短信收发程序c#_第3页
短信收发程序c#_第4页
短信收发程序c#_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Threading;using System.Text;using JustinIO;using SMS;using System.IO;using System.Timers;public struct message/定时发送相关信息 public string number; public string

2、 center; public string mess; ; message message1 = new message(); message message2 = new message(); message message3 = new message(); string state = ;/存储发送情况 int x = 0, y = 0;/发送计数 / / 应用程序的主入口点。 / STAThread static void Main() Application.Run(new Form1(); / 初始化串口 public bool InitCom(string m_port, in

3、t m_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();/打开串口 return true; catch (Exception e) MessageBox.Show(错误: +

4、 e.Message); return false; /初始化代码,并获取相关信息 private void btnConnect_Click(object sender, System.EventArgs e) bool opened = InitCom(ConnectPort.SelectedItem.ToString(), Convert.ToInt32(ConnectBaudRate.SelectedItem.ToString(); bool Connected = false; if (opened) ss_port.Write(Encoding.ASCII.GetBytes(AT+

5、CGMIr); /获取品牌 string response = 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+CGMMr);/获取型号 response = Encoding.ASCII.GetSt

6、ring(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

7、); 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 btnCon

8、nect.Enabled = true; btnSend.Enabled = false; receive.Enabled = false; unread.Enabled = false; sendstate.Enabled = false; clearsend.Enabled = false; timer2.Start();/连接成功后,每1秒自动读取一次未读信息,若有未读则显示 /发送短信 private void btnSend_Click(object sender, System.EventArgs e) /输入对方手机号码不足或短信为空时报错并重启 string num = tar

9、getNumber.Text; num = num.Substring(0, 2); bool result = 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) Mess

10、ageBox.Show(请检查对方手机号且短信内容不得为空!, 警告); return; /选择定时则启动定时器 if (radioButton1.Enabled & hour.Enabled)/定时1 message1.number = targetNumber.Text; message1.center = CenterNumber.Text; message1.mess = smsContent.Text; int second = (int.Parse(hour.Text) * 60 + int.Parse(min.Text) * 60+1;/若定时为0,防止定时出错,默认为1秒 ti

11、mer3.Interval = 1000 * second; smsState.Text = 信息将在 + hour.Text + 小时 + min.Text + 分钟之后发出。rn; timer3.Start(); radioButton1.Enabled = false; return; else if (radioButton2.Enabled & hour2.Enabled)/定时2 message2.number = targetNumber.Text; message2.center = CenterNumber.Text; message2.mess = smsContent.T

12、ext; int second = (int.Parse(hour2.Text) * 60 + int.Parse(min2.Text) * 60+1; timer4.Interval = 1000 * second; smsState.Text = 信息将在 + hour2.Text + 小时 + min2.Text + 分钟之后发出。rn; timer4.Start(); radioButton2.Enabled = false; return; else if (radioButton4.Enabled & hour3.Enabled)/定时3 message3.number = tar

13、getNumber.Text; message3.center = CenterNumber.Text; message3.mess = smsContent.Text; int second = (int.Parse(hour3.Text) * 60 + int.Parse(min3.Text) * 60 + 1; timer5.Interval = 1000 * second; smsState.Text = 信息将在 + hour3.Text + 小时 + min3.Text + 分钟之后发出。rn; timer5.Start(); radioButton4.Enabled = fals

14、e; return; Thread.Sleep(2000);/当前线程延迟2秒,提高发送成功率 string decodedSMS = sms.smsDecodedsms(CenterNumber.Text, targetNumber.Text, smsContent.Text); byte buf = Encoding.ASCII.GetBytes(String.Format(AT+CMGS=0r, sms.nLength); ss_port.Write(buf); string response = Encoding.ASCII.GetString(ss_port.Read(128); s

15、tring SendState = ; /ConnectState.Text = UCS2: + decodedSMS;/短信编码 if (response.Length 0 & response.EndsWith( ) ss_port.Write(Encoding.ASCII.GetBytes(String.Format(0x01a, decodedSMS); SendState = 发送成功!r; x += 1; else SendState = 发送失败。r; y += 1; string Result = String.Format(0 内容:1 2rn, targetNumber.T

16、ext, smsContent.Text, SendState); smsState.Text += Result; state += Result; / 关闭串口,退出程序 private void btnExit_Click(object sender, System.EventArgs e) ss_port.Close(); Application.Exit(); /断开 private void btnDisconnect_Click(object sender, EventArgs e) ss_port.Close(); state = ; btnConnect.Enabled =

17、true; btnSend.Enabled = false; receive.Enabled = false; unread.Enabled = false; sendstate.Enabled = false; clearsend.Enabled = false; CenterNumber.Text = ; ConnectState.Text = 未连接任何设备; private void Form1_Load(object sender, EventArgs e) /清空状态 private void clear_Click(object sender, EventArgs e) smsS

18、tate.Clear(); /收件箱 private void receive_Click(object sender, EventArgs e) ss_port.Write(Encoding.ASCII.GetBytes(AT+CMGL=4r); /列出SIM卡中所有短信 string response = Encoding.ASCII.GetString(ss_port.Read(5620); if (response.IndexOf(+CMGL:, 0) -1) response = sms.smsunPDU(response); smsState.Text = response; /清

19、空收件箱 private void unread_Click(object sender, EventArgs e) for (int i = 0; i -1) response = response.Substring(response.IndexOf(rn+CMGL:, 0); response = sms.smsunPDU(response); smsState.Text = 收到新的短消息rn + response; /发送情况 private void sendstate_Click(object sender, EventArgs e) smsState.Text = state

20、+ rn + 已发送成功 + x.ToString() + 条,失败 + y.ToString() + 条。; private void clearsend_Click(object sender, EventArgs e) state = ; /定时发送1 private void timer3_Tick(object sender, EventArgs e) string decodedSMS = sms.smsDecodedsms(message1.center, message1.number, message1.mess); byte buf = Encoding.ASCII.Get

21、Bytes(String.Format(AT+CMGS=0r, sms.nLength); ss_port.Write(buf); string response = Encoding.ASCII.GetString(ss_port.Read(128); string SendState = ; if (response.Length 0 & response.EndsWith( ) ss_port.Write(Encoding.ASCII.GetBytes(String.Format(0x01a, decodedSMS); SendState = 发送成功!r; x += 1; else S

22、endState = 发送失败。r; y += 1; string Result = String.Format(0 内容:1 2rn, message1.number, message1.mess, SendState); smsState.Text += Result; state += Result; timer3.Stop(); radioButton1.Enabled = true ; /定时发送2 private void timer4_Tick(object sender, EventArgs e) string decodedSMS = sms.smsDecodedsms(me

23、ssage2.center, message2.number, message2.mess); byte buf = Encoding.ASCII.GetBytes(String.Format(AT+CMGS=0r, sms.nLength); ss_port.Write(buf); string response = Encoding.ASCII.GetString(ss_port.Read(128); string SendState = ; if (response.Length 0 & response.EndsWith( ) ss_port.Write(Encoding.ASCII.

24、GetBytes(String.Format(0x01a, decodedSMS); SendState = 发送成功!r; x += 1; else SendState = 发送失败。r; y += 1; string Result = String.Format(0 内容:1 2rn, message2.number, message2.mess, SendState); smsState.Text += Result; state += Result; timer4.Stop(); radioButton2.Enabled = true ; /定时发送3 private void timer5_Tick(object sender, EventArgs e) string decodedSMS = sms.smsDecodedsms(message3.center, message3.number, message3.mess); byte buf = Encoding.ASCII.GetBytes(String.Format(AT+CMGS=0r, sms.nLength); ss_port.Write(buf); string response = Enc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论