本来毕业设计已经弄的差不多了,可惜还跟手机搞上关系了,因为我是嵌入式专业的,没办法一定要跟嵌入式有关,纠结啊!本来是做基于B/S结构的教科研管理系统,后来实在想不出办法了,就只好做一个教科研师资管理系统与手机通信开发,这总该跟嵌入式有关了吧!邱老师叫我这样做的,不然我真的想不出有什么办法了。其实我一开始的想法是如果系统有什么信息可以通过短信猫发送给用户,不过我一开始确实没什么想法,因为我压根就没弄过短信猫,我还以为短信猫是什么神秘的东西,后来才知道原来是GSM MODEM,我一想不是工作室的那个吗?不是有吗?反正有硬件就去做了吧!

其实一开始不知道怎么做的,有去网上参考别人的材料,但还是没什么想法呢?图书馆又没有什么书,纠结中!后来我想了电脑上不是有一个超级终端么,那应该可以测试一下,但是测了好几天这个短信猫都不能用呢?又一次的迷茫了!后来听人家说那个可以跟设备之类的有关呢?突然想可能跟那个串口线有关系,于是我就去换了一条新的串口线!突然间可以了,哇,太高兴了,弄了几天终于有点成果了,后来就去试一下看那个超级终端可不可以发短信,终于可以了!算是有点结果了吧!心里确实蛮兴奋的!

后来就去找材料看那个具体怎么做!我现在做的这个还是参考别人的代码,但原来的那个是用AT指令,发送的有点麻烦!后来我就去修改一下,不用AT指令,毕竟懂AT指令的人不多吗!所以现在可以了!下面的那个是修改后的页面:

首先要连接设备,然后下来就是初始化串口,包括发送方式等。

然后就是填写对方手机号码,最后就是填写短信内容,点击发送就可以了!

不过这个软件还有一个问题就是只能发送英文的,还没实现发送中文,这个后续还有继续去做!下面的是我主要的代码:

using System; using System.Collections.Generic; using System.Text; using System.IO.Ports; using System.Threading; namespace 时讯网 { class GSMMODEM { //构造函数 public GSMMODEM() { //串口初始化 _sp.NewLine = "/r/n"; _sp.ReadTimeout = 2500; _sp.RtsEnable = true; //_sp.DtrEnable = true; //_sp.Handshake = Handshake.RequestToSendXOnXOff; } public GSMMODEM(string ComPort, int BaudRate) { //串口初始化 _sp.PortName = ComPort; _sp.BaudRate = BaudRate; _sp.NewLine = "/r/n"; _sp.ReadTimeout = 2500; _sp.RtsEnable = true; //_sp.DtrEnable = true; //_sp.Handshake = Handshake.RequestToSendXOnXOff; } //属性 private SerialPort _sp = new SerialPort(); //public bool AutoDelMsg = false; //设置是否在阅读短信后自动删除SIM卡内短信存档(建议在经常接收短信时设置为 true) //设计和运行时都可以读写,true 自动删除 false 不自动删除 //默认为 true //端口号 public string ComPort { get { return _sp.PortName; } set { _sp.PortName = value; } } //波特率 public int BaudRate { get { return _sp.BaudRate; } set { _sp.BaudRate = value; } } //是否开启 public bool IsOpen { get { return _sp.IsOpen; } } //打开设备 public void OpenComm() { try { _sp.Open(); } catch (Exception ex) { throw (ex); } } //关闭设备 public void CloseComm() { try { _sp.Close(); } catch (Exception ex) { throw (ex); } } //发送AT指令,返回由设备返回的数据 public string SendATCommand(string ATCmd) { _sp.DiscardInBuffer(); try { _sp.WriteLine(ATCmd); } catch (Exception ex) { throw (ex); } try { Thread.Sleep(100); return _sp.ReadExisting(); } catch (Exception ex) { throw (ex); } } public string Write(byte[] byte1, int a, int b) { try { _sp.Write(byte1, a, b); } catch (Exception ex) { throw (ex); } try { Thread.Sleep(100); return _sp.ReadExisting(); } catch (Exception ex) { throw (ex); } } } }

本来想做到这样就不做了,后来想了我这个只做了能发短信,还没实现智能化,所以我后面跟吴强师兄商量了一下,他跟我说要让这个短信自动的发出去,就像是有一条新消息就要将发出去,主要的原理就是去查询数据表,如果有未发送的短信就将它发出去,后来我想了一下,确实不知道该怎么做,就去网上找了材料,今天早上就能它自动发短信,我的原理就是写一个延迟函数,让它延迟发送,这个可以了。

经过今天下午一条的思考,后面就想了一种方法,虽然简单,但也算是能自动发短信,就是对于每一个消息就建立一个辅助表message,它有字段名id,gh,tel,zt,其中gh表示这个人有新消息,tel表示要发送的消息号码,zt表示发送状态(否表示未发送,是表示已发送),然后当每个人有去操作的时候,自动插入到表中,当表中有重复的消息就不插入。对于手机发送消息软件,它就去查询表中的数据,如果未发送就将它的gh,tel取出来,然后就将它发出去,最后更新到数据库中。当然我有延迟函数(延迟20秒),这里面的一个死函数,因为它要一直去更新,下面就贴出我主要的代码:

//状态栏初始化 toolStripStatusLabel1.Text = "短信窗口正在初始化"; //填充comboBox_com控件,填入串口号以供选择 string[] Ports = SerialPort.GetPortNames(); //从注册表中获取串口号 foreach (string Port in Ports) { if (Regex.IsMatch(Port, @"COM[0-9]*")) { comboBox_com.Items.Add(Port); } } //默认选第一个端口 if (comboBox_com.Items.Count > 0) { comboBox_com.SelectedIndex = 0; } comboBox1.SelectedIndex = 0; //设备初始化 if (comboBox_com.Items.Count > 0) { gm.ComPort = comboBox_com.SelectedItem.ToString(); } gm.BaudRate = Convert.ToInt32(comboBox1.SelectedItem.ToString()); //状态栏 toolStripStatusLabel1.Text = "短信窗口初始化成功"; message me = new message(); //this.label_comState.Text = me.GetTEL("否"); //this.label_AT.Text = me.GetGH("否"); //string gh = this.label_AT.Text; // me.UpdateMessage(gh, "是"); // this.label_baud.Text = me.GetTEL("否"); //this.label_com.Text = me.GetGH("否"); //人为的修改 if (gm.IsOpen == false) //连接设备 { try { gm.OpenComm(); label_comState.Text = "已连接"; label_comState.ForeColor = Color.Green; button2.Text = "断开连接"; //状态栏 toolStripStatusLabel1.Text = gm.ComPort + "," + gm.BaudRate.ToString(); } catch (Exception) { label_comState.Text = "设备无法连接"; label_comState.ForeColor = Color.Red; return; } } while(true) { string teleno = me.GetTEL("否"); // string teleno = "13605986473"; string gh = me.GetGH("否"); string message = "A New Message!"; this.textBox_send.Text = message; this.textNo.Text = teleno; richTextBox1.Text += gm.SendATCommand("ATZ");//初始化短信猫 richTextBox1.Text += gm.SendATCommand("AT+CMGF=1");//选择发送方式是英文 //提交手机号码 if (gm.IsOpen == true)//串口已经打开 { try { if (stoptb2 == false)//显示发送内容 { richTextBox1.Text += gm.SendATCommand("AT+CMGS=" + teleno);//发送手机号码 richTextBox1.SelectionStart = richTextBox1.Text.Length; richTextBox1.ScrollToCaret(); } else { gm.SendATCommand("AT+CMGS=" + teleno); } } catch (Exception) { MessageBox.Show(""); return; } } else { MessageBox.Show("设备未打开,无法操作"); return; } //发送短信内容 Byte[] byte1 = new Byte[1]; byte1[0] = 0x1A; try { if (gm.IsOpen == true)//如果已经打开 { richTextBox1.Text += gm.SendATCommand(message);//提交发送内容 richTextBox1.Text += gm.Write(byte1, 0, 1); richTextBox1.SelectionStart = richTextBox1.Text.Length; richTextBox1.ScrollToCaret(); me.UpdateMessage(gh, "是"); } else { MessageBox.Show("设备未打开,无法操作"); } } catch (Exception) { MessageBox.Show(""); } timeDelay(20000);//延迟5秒 // MessageBox.Show("发送成功!"); }

延迟函数如下:

private void timeDelay(int iInterval)//延迟函数(单位为毫秒) { DateTime now = DateTime.Now; while (now.AddMilliseconds(iInterval) > DateTime.Now) { } return; }

经过我初步的验证是可以的!毕业设计终于告一段落!要好好思考工作的事情了!

简单手机短信发送软件相关推荐

  1. 学习andriod开发之 自己开发短信发送软件

    短信大家都很常用 我们往往在发短信的时候 调用的是系统的发送短信 主要原理是发送一个意图intent( 这个我们以后再说) 其实我们可以自己写一个短信发送软件 想想是不是有点激动呢 撒 一起来开始吧 ...

  2. 快递点短信发送软件(快递哥的好帮手)

    快递点短信发送软件 用户群体:固定快递点,如学校.禁止进入区域.小区集中区.高校网点,不让快递员进入的单位,有固定的店铺.每日快件量都在几百以上.特别是取货时间集中的高校网点,短信通知过后学生都是放学 ...

  3. php自动发短信,用PHP怎么实现手机短信发送

    用PHP怎么实现手机短信发送 可以的,如果是在linux下,可以结合crontab定时任务实现,如果是使用windows可以安装win32service这个扩展实现如果我的回答没能帮助您,请继续追问. ...

  4. 【转载】C语言,利用网络短信验证码接口实现手机短信发送

    利用网络短信验证码接口实现手机短信发送 (历史代码,贴出学习) resource.h //resource.h//{{NO_DEPENDENCIES}} // Microsoft Visual C++ ...

  5. KIDSMS手机短信平台软件 v1.00 公开发表

    KidSMS手机短信平台软件是一个以手机短信为平台,具有投票.评论.查询.广告功能的通信终端系统,轻量级是它最大的特点.太多短信系统是使用SP服务商+WEB管理的方式建立的,我称其为托管模式,托管模式 ...

  6. Java 实现手机短信发送

    在日常项目开发中, 会遇到短信验证码的功能需求,接下来,主要是对这个功能进行介绍... 一.实现手机短信验证的基本思路 1.用户填写手机号,点击获取验证码按钮(页面可以做一些手机号是否有效处理),发起 ...

  7. 能恢复手机短信数据恢复软件下载

    苹果手机短信删除怎么办?如果您不小心删除了手机上的重要短信,而且没有备份,通常情况下很难再恢复短信.但有了专业的数据恢复软件,恢复手机数据也是可能的. 在这里,小编推荐一款功能强大的手机数据恢复软件- ...

  8. PHP 手机短信发送验证码

    点击链接加入群[php/web 学习课堂]:https://jq.qq.com/?_wv=1027&k=5645xiw 欢迎大家加入,一起讨论学习 本篇设计的知识点有点多,我会分类将,同学们可 ...

  9. android手机短信备份软件,手机短信备份软件-SMS Backup Restore Pro(短信备份) 安卓版v7.13-PC6安卓网...

    短信备份还原 SMS Backup Restore:短信备份还是很有必要的,遇到一些重要信息的保存,定时备份比较的方便. 官方介绍 短信备份还原 SMS Backup Restore是Android平 ...

最新文章

  1. 2008春节长白山哈尔滨雪乡游
  2. boost::geometry::detail::overlay::get_turn_info用法的测试程序
  3. 阻尼衰减曲线用python_高阻尼隔震橡胶支座结构及防震效果
  4. dell服务器安装系统注意之二.(2003/xp 的sn)
  5. 计算机网络之网络概述:4、分层结构(协议、接口、服务)
  6. OpenCV-camShift 算法
  7. Zint生成多种条码及二维码
  8. 关于pandas的安装
  9. htb:Starting Point
  10. 锂电池充电器设计技巧:从太阳能电池获取更大功率
  11. markdown文件转RST文件
  12. 数据结构(二)——栈及实现、括号匹配
  13. 使用自定义注解实现接口参数校验
  14. Qt显示当前时间(年-月-日 时:分:秒 周几)
  15. matlab 椭圆方程拟合
  16. 10月书讯丨10本新书为你充电
  17. 间接解决Gson不能解决特殊符号%的问题
  18. 南邮计算机学院专业英语教材,南邮专业英语翻译(自学)
  19. Python爬虫笔记——存储数据的基础知识(Csv、Excel)
  20. poi导出Excel文件下载数据

热门文章

  1. “卖惨”的悲情牌打多了,营销终将变“悲剧”
  2. 慕课网-安卓攻城狮视频学习及练习(一)
  3. 电饭锅鸿蒙系统,有了美的轻食电饭煲,人们更加确定了做饭工具的重要性
  4. 电脑上有什么比较好用的屏幕录制软件
  5. 黑科技揭秘:面对海量的文本翻译任务,阿里翻译团队是如何解决的
  6. 好佳居软装十大品牌 软装这些知识我们要知道
  7. 安卓机更新系统会卡吗_都说安卓手机用一两年就卡到不行,但知道这3招,同样可以用很久...
  8. Redis持久化——AOF机制详解
  9. 如何快速制作gif图片
  10. android实现一键锁屏