`

发送短信

 
阅读更多
在整个开始的时候,你要准备以下软硬件:

   硬件:西门子3508或C35系列手机一个
   西门子手机通信数据线一条
   软件:VS.NET(C#)
   短信编码类库(PDUdecoding.cs)
   串口通信类库(JustinIO.cs)

  当所要求的软硬件都准备好后,我们就可以正式开始了。下面以我自己的测试用例为大家详细介绍。

  做什么事情都应该有计划,虽然我们的测试用例很简单,但还是画个简单的流程图:



  有了流程图,还只是明白了程序怎么运行,再看看界面,会让你更心动的了。


图二、短信终端C#版界面图

  再不开始,就有人骂我了。下在我讲的开发环境是在VS.NET(C#)中。COME GO,GO…

  步骤一、打开VS.NET,新建项目->Visual C#项目->Windows应用程序,名称中输入你的工程名就行啦,我的是smsForCsharp

  步骤二、参照上面的界面图,设计你的程序界面,下面是我程序中各控件的主要属性

控件名称 控件Name属性 说明
TextBox targetNumber 接收手机号码
TextBox CenterNumber 短信中心号
TextBox smsState 发送短信后,返回的信息。注意设置控件为多行
TextBox smsContent 短信内容,同样,注意设置为多行
ComboBox ConnectPort 连接手机的端口,例:COM1\COM2
ComboBox ConnectBaudRate 串口连接的波特率,在串口通信中很重要的
Button btnSend 发送按钮
Button btnConnect 连接按钮,主要用于程序的初始化
Button btnExit 退出按钮

  步骤三、将PDUdecoding.cs与JustinIO.cs拷入刚刚新建工程目录,并打开解决方案资源管理器,右键添加现有项,选中两个文件就行了,这里再打开类视图,里面是不是多了两个类,JustinIO与SMS类啊,如图三,要是没有,那你再试。


图三,添加类后的类视图

  步骤四、引用命名空间,用代码查看方式打开Form1.cs(这里以我电脑为准,如果你自己更改过,请以你电脑为准),在代码前面加上

using JustinIO;
using SMS;
using System.IO;
using System.Text;

  步骤五、在smsFormCsharp类中,添加两个字段ss_port、sms,分别为JustinIO及SMS的对象,如下



  步骤六、添加串口初始化代码,如下:

/// <summary>
/// 初始化串口
/// </summary>
public bool InitCom(string m_port, int 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("错误:" + e.Message);
  return false;
 }
}

  将上述代码直接拷入你的程序中,并确保添加在Main主函数的后面,按F5,调试应该没什么问题,不过上面还没有实际任何看得见的功能,仅仅是打开了串口而以。

  步骤七、打开串口后,我们就应该初始化程序,取得手机的名牌,型号,以及短信中心号,双击连接按钮,并把下面代码拷入程序中:

/// <summary>
/// 初始化代码,并获取手机相关信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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+CGMI\r")); //获取手机品牌
  string response = Encoding.ASCII.GetString(ss_port.Read(128));
  if (response.Length > 0)
  {
   ConnectState.Text = response.Substring(10,7);
   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(10,5) + " 连接中......";
   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(20,13);
   Connected = true;
  }
  else
  {
   Connected = false;
  }
  if (Connected == true)
  {
   btnConnect.Enabled = false;
   btnSend.Enabled = true;
  }
  else
  {
   btnConnect.Enabled = true;
   btnSend.Enabled = false;
  }
 }
}

  到这里,你可以按F5,编译调试,通过,在确保你的手机与电脑连接正常下,点击连接按钮看看,是不是像我的一样,手机型号及短信中心号者正常显示出来了。


图四、连接后程序界面

  步骤八、看到上在的结果,是不是感觉到离成功发送短信很近啦,看这么长的文章,费了大家不少时间,再不亮出发短信部份,对不起大家了。

  双击发送按钮,将下面代码拷入程序中。

/// <summary>
/// 发送短信
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSend_Click(object sender, System.EventArgs e)
{
 string decodedSMS = 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);
 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("{0}\x01a",decodedSMS)));
  SendState = "发送成功!";
 }
 else
 {
  SendState = "发送失败";
 }

 string Result = String.Format("{0},{1},{2},\n\r",targetNumber.Text,smsContent.Text,SendState);
 smsState.Text += Result;
}

  快按F5吧!神啊,快通过吧!不用求神了,已经通过了,现在你就可以发短信了,请确保手机可以正常连接电脑。按连接,然后填入你要的发送的目标手机号,并在内容中添入你要发送的内容,发送吧!成功了!成功了是这样子的!看你的跟我的一样吗?


图五、发送成功

  还有一些事 不要忘了,记得添加退出代码。双击退出,添加下面代码:

/// <summary>
/// 关闭串口,退出程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExit_Click(object sender, System.EventArgs e)
{
 ss_port.Close();
 Application.Exit();
}

  到这里都告一个段落了,所有的功能都完成了!不过由于这仅仅是一个演示用例,还有很多没有考虑,像串口通信中的,在实际操作不可这样操作的,应该用多线程来处理,一个专门用来读串口,一个专门用来写串口。还有程序中很多防出错代码没有添加进去,希望有心有朋友添加,并公布出来,这也是我写这篇文章希望看到的结果。请勿将本程序直接用于实际中,真诚提醒你!

  终于写完了,我也放松了许多,本来很早就应该完成了,因为一些个人原因,没有及时写完,向那些曾经问过我相关问题,没有及时回复的朋友,抱歉一声,希望你们继续支持我!

  调试环境:

  Windows 2000 Professional、Visual Studio.NET、西门子3508手机、西门子专用数据线。
分享到:
评论

相关推荐

    4G模块发短信源码

    总的来说,这个4G模块发短信的源码项目涉及到串口通信、短信编码、错误处理和AT命令集的使用等多个方面,是一个结合硬件通信与软件编程的实例。通过学习和理解这些代码,我们可以掌握在Linux环境下通过4G模块进行...

    发短信小例子(Android)

    这个"发短信小例子"就是一个简单的实现,旨在帮助开发者理解如何在Android应用中集成短信发送功能。下面将详细讲解这个功能的实现步骤、核心代码以及需要注意的关键点。 首先,Android系统提供了一个名为`...

    短信猫C#、asp.net webservice发短信

    综上所述,短信猫C#、ASP.NET WebService发短信项目涉及到了C#编程、短信猫API接口的使用、长短信处理、Web服务开发、网络通信、安全性、错误处理等多个方面的知识,是一个综合性的IT实践项目。通过这个项目,开发者...

    给自己发短信的Shell脚本利用飞信

    标题中的“给自己发短信的Shell脚本利用飞信”指的是使用Linux Shell脚本来通过中国移动的飞信服务发送短信给自己。这个方法通常适用于自动化任务或者在没有手机网络的情况下,通过电脑来提醒自己某些重要事件。 ...

    免费发送短信(无需登陆)

    比如,“免费短信发发发V3.0 (仅发英文字符)”可能是该软件的一个版本,主要用于发送英文短信;“全球短信免费发1.51 (仅发英文字符)”可能类似,但可能支持全球范围内的发送;而“中文短信免费发1.2”则表明有专门...

    java代码实现短信猫发短信

    Java代码实现短信猫发送短信是一项常见的通信应用,主要利用了串行通信技术。短信猫,又称GSM调制解调器,是一种硬件设备,通过USB或串口与计算机连接,可以实现短信的收发功能。在Java编程环境中,我们可以利用Java...

    vb短信接口开发_vb发送短信验证码通知_Visual Basic短信demo示例.docx

    在VB(Visual Basic)开发中,短信接口的集成是一个常见的需求,例如用于发送验证码或订单通知。本示例介绍如何使用VB与互亿无线短信服务进行接口开发。 首先,要使用互亿无线短信接口,您需要在他们的官方网站...

    Spring Boot阿里云短信:如何实现发送短信

    与之结合,阿里云提供了高效的短信服务,使得应用能够轻松地发送验证码、通知等短信。本篇文章将详细阐述如何在Spring Boot项目中集成阿里云短信服务,实现发送短信的功能。 首先,我们需要在阿里云官网注册账号并...

    GSM(A6)发送短信 C语言代码

    GPRS模块,是具有GPRS数据传输功能的GSM模块。GPRS模块就是一个精简版的手机,集成GSM通信的主要功能于一块电路板上,具有发送短消息、通话、数据传输等功能。...1. 以文本方式发送短信; 2. 以PDU模式发送短信;

    GSM标准发短信程序

    在这个“GSM标准发短信程序”中,我们主要探讨的是如何通过编程实现利用GSM模块发送中文短信的功能。 在编程实现GSM短信发送功能时,通常需要以下几个关键知识点: 1. **GSM模块**:GSM模块是硬件设备,它能够与...

    PLC发短信 组态王发短信

    【PLC发短信 组态王发短信】技术详解 在工业自动化领域,PLC(可编程逻辑控制器)常用于设备控制,而短信发送功能则能实现远程监控和报警。本文将详细介绍如何利用西安达泰电子有限责任公司的DTP_S09C短信模块,...

    阿里云发送短信C++源码、实测通过

    阿里云短信服务是一种高效、可靠的云通信解决方案,广泛应用于验证码发送、通知提醒、营销推广等场景。本示例主要关注如何使用C++编程语言在Windows环境下通过VS2019集成开发环境与阿里云API接口进行集成,实现短信...

    SMS.zip_labview发送短信_短信_短信发送

    在这个特定的“SMS.zip_labview发送短信_短信_短信发送”项目中,用户可以找到一个利用LabVIEW实现短信发送功能的源代码。这个功能对于远程监控、自动化系统以及实时数据通信等应用场景非常有用。 首先,我们要理解...

    局域网内连接短信平台发短信

    "局域网内连接短信平台发短信"这个主题涉及到网络通信、服务器连接以及短信服务的使用。以下将详细介绍相关知识点: 1. **局域网基础**: - 局域网是一种在有限地理范围内的计算机网络,通常覆盖办公楼、家庭或...

    PB发短信程序

    PB发短信程序是一款基于PowerBuilder(PB)开发的短信发送工具。PowerBuilder是Sybase公司推出的一种可视化的、面向对象的编程环境,主要用于快速开发数据库应用程序。本程序的开发者利用PB的强大功能,创建了一个...

    网页免费发短信

    网页免费发短信是一种技术,它允许用户通过网页接口发送和接收短信,通常与特定的服务提供商如飞信(Fetion)关联。飞信是中国移动推出的一款即时通讯服务,支持通过互联网与手机用户进行免费或低成本的短信交流。在...

    c用#实现手机发短信功能的源代码

    在本案例中,我们关注的是一个使用C#实现的手机发短信功能。这个功能允许程序通过连接到手机或者利用网络服务来发送文本消息,极大地便利了自动化通信和通知系统。以下是对这个"发短信"功能的详细解读。 1. **C#...

    用短信接口发送短信的程序

    发短信在编程领域通常指的是通过程序自动化发送短信的过程。这种功能在许多场景下都很有用,如验证码发送、通知提醒、营销推广等。发短信涉及的主要步骤包括:连接到短信网关、构建短信内容、指定接收方手机号码、...

    用web发送短信,找我要源代码,不管用什么编程语言都可以

    在现代的IT应用中,通过Web发送短信是一种常见的通信方式,尤其在验证码验证、通知服务、营销推广等方面有着广泛的应用。这个标题和描述都指向了同一个主题:如何使用不同的编程语言通过Web接口来发送短信。这里我们...

Global site tag (gtag.js) - Google Analytics