`
shirlly
  • 浏览: 1647648 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

[转]C#开发短信收发软件的原理

    博客分类:
  • .NET
 
阅读更多
坛子里好像很多人对如何自己用C#开发手机短信有兴趣,正好我也做过这个,不妨今天就聊聊这个话题。

要说这个功能的原理其实并不难(我可没说不复杂:P)。首先当然要把手机和PC连接起来。怎么连倒是次要的,数据线/红外/蓝牙什么的都可以。通常连接好以后PC会虚拟出一个串行通讯口,这下就好办了,我们只要把手机看作一个普通的串口终端设备来进行给它下命令就行了!当然,给手机发命令也是有标准的,通常是GSM AT指令集,不过各厂商可能会有自己的扩充。最后只要命令手机把编过码的短信(一般通用的是PDU格式)替你发出去就可以了!

所以要实现这个功能牵涉到的知识点有点多:
1 串口通讯
2 GSM AT指令
3 PDU编码(如果需要接收的话还要知道怎么解码)

一样一样来。

在VS.NET 2005里,新加了个SerialPort控件(不过我还是喜欢直接定义个SerialPort,记得要先引用IO.Ports),用起来还是很方便的,所以串口通讯应该问题不大。

PDU编码算法网上有文章的,有兴趣的不妨自己搜一下。主要关键点就是PDU字符串各个字段的编排,还有短信中心和接收方手机号码的编码(很简单,奇偶位互换,长度为奇数的话先补F。例如,1234变成2143),中文正文的编码(BigEndian字节顺序的Unicode格式编码,说白了就是汉字的“Ascii”码)等等。

GSM AT相对可能就陌生点了。不过如果以前开发过modem设备应用的话肯定会很容易上手 -- 工作方式很像的。简单来说,发送短信的过程:

向手机发送 AT+CMGS=PUD长度
成功的话手机回送> 提示符(大于符后有个空格)
接着向手机发送短信PDU字串,以0x1A(Ctrl Z)结束。
成功的话手机回送OK,整个过程结束。

这个过程如果用超级终端的话很容易看清楚。当然需要事先计算好PDU和长度。

收短信的过程要复杂点。首先要让手机在收到短信时主动通知计算机,指令是 AT+CNMI=1,1。[注:根据某些资料的说法应该设置成2,1,但是我的西门子S65不支持。这里先置疑一下吧。]
这样短消息到达时手机会自动向PC发送+CMTI消息。这个消息中,我们取出短信的存储位置和该位置下的索引号。假如发现存到了ME,那么接下来发送AT+CPMS=ME。成功的话会得到+CPMS开头的消息。再发送AT+CMGR=刚才得到的索引号,成功的话就可以得到接收到的短消息的源代码了。

接下来就是要解析这条消息,包括短信中心号码,发送方号码,接收时间,编码方式(Unicode,Utf-7等),正文内容等等。有了这些信息愿意的话甚至还可以实现自动回复。具体格式请在网上搜索一把。Wavecom和西门子诺基亚等公司也都提供相关内容的pdf电子手册,包括GSM AT、PDU格式等,网上也都有流传,应该可以下载到。


转自:http://blog.csdn.net/ki1381/article/details/1504494
分享到:
评论

相关推荐

    收发短信原理和实现方式C#

    **短信收发原理** 短信(Short Message Service,SMS)是一种通过移动通信网络发送和接收简短文字信息的服务。它的核心工作流程包括以下步骤: 1. **短信编码**:短信内容首先需要进行编码,通常采用7位ASCII编码...

    C# wince 短信收发 GPRS 3G 编解码

    本文将深入探讨“C# wince 短信收发 GPRS 3G 编解码”这一主题,这涉及到嵌入式系统、网络通信以及数据编码等多个技术领域。 首先,让我们来理解一下Windows CE(简称WinCE),它是一个微软开发的嵌入式操作系统,...

    C#写的收发短信的GSM工具

    标题中的"C#写的收发短信的GSM工具"是指使用C#编程语言开发的一个应用程序,它能够通过GSM模块与手机通信,实现短信的发送和接收功能。GSM(Global System for Mobile Communications)是全球最广泛使用的移动通信...

    C# 操作短信猫收发短信。

    首先,我们要理解C#操作短信猫的基本原理。这通常涉及到使用串口通信技术,因为短信猫通常是通过串行端口与计算机进行连接。在C#中,`System.IO.Ports`命名空间提供了SerialPort类,这个类是进行串口通信的核心。...

    短信猫收发软件源码

    在这个短信收发软件中,Access可能用于存储用户信息、短信记录、联系人列表等数据。软件可能通过ODBC(Open Database Connectivity)或者ADO(ActiveX Data Objects)与Access数据库进行连接。 在软件架构上,此...

    短信猫程序 就与c#开发的程序

    通过C#开发的软件,用户可以利用这个硬件接口,构建各种应用场景,如企业通知、自动报警系统或者远程控制等。 【标签】:“短信猫” “c#” “短信猫”标签表明了该程序的核心功能,即利用短信猫设备进行通信操作...

    C#开发终端式短信的原理和方法

    最后,对于提供的压缩包文件,其中的"C#开发终端式短信的原理和方法 - CC文文的日志 - 网易博客.htm"可能是博客文章的完整版本,包含更详尽的步骤和示例代码。而".files"文件夹可能包含了文章中引用的图片或其他资源...

    短信猫短信收发Demo

    【短信猫短信收发Demo】是一个实用的示例项目,主要展示了如何利用短信猫硬件设备进行短信的接收和发送操作。短信猫,全称为“GSM Modem”,是一种能够通过手机网络来收发短信和拨打电话的硬件设备,通常用于自动化...

    短信收发工具

    8. **编程语言**:短信收发工具的开发可以使用各种编程语言,如Python、Java、C#等。不同的语言有不同的库和框架可以用来处理网络通信和短信协议。 9. **测试与调试**:在开发过程中,需要对短信收发功能进行充分的...

    短信收发模块

    【短信收发模块】是基于C#编程语言开发的一个组件,用于实现系统与用户或不同系统之间的短信通信功能。在IT行业中,短信收发模块通常用于验证码发送、通知提醒、营销推广等多种场景。C#是一种面向对象的、类型安全的...

    C#串口收发器(源代码)

    IPP.SMS文件可能是这个项目中的一个组件,可能涉及短信收发功能。在C#中,这通常需要通过第三方库或者特定的API来实现,例如集成GSM模块或者使用网络SMS服务提供商的SDK。 总结,C#串口收发器的实现涉及了对`...

    c#开发的短信猫源代码

    2. **短信猫原理**:短信猫通过模拟手机的GSM功能,可以实现通过电脑进行短信收发。它通常使用AT命令集与计算机通信,这些命令用于控制短信猫进行发送、接收、查询等操作。 3. **Winforms**:Windows Forms是.NET ...

    c#发短信的一个例程要使用短信猫GSM的那种

    总结,使用C#开发短信发送功能涉及硬件连接、动态库的使用、GSM协议的理解以及错误处理等多个方面。通过这个例程,开发者可以学习到C#的底层通信技术和GSM短信技术,为进一步的开发工作打下基础。

    C# 短信发送网关,winform和web版

    综上所述,C#短信发送网关是结合了C#语言优势和现代软件工程理念的通信解决方案。无论是WinForm客户端还是Web版,都提供了便捷的操作方式。对于开发者来说,利用提供的C#接口进行二次开发,能够灵活地适应不同业务...

    c#直接串口通讯控制GSMModem收发短信

    通过发送AT命令,我们可以控制Modem进行拨号、数据传输、短信收发等操作。 在C# 2.0中,我们主要利用`System.IO.Ports.SerialPort`类来建立与GSM Modem的连接。这个类提供了打开、关闭串口,设置波特率、数据位、...

    C# 操作短信猫

    短信猫通常是一个硬件设备,连接到计算机后,可以通过API或SDK与软件进行交互,实现短信的收发功能。 首先,我们要理解短信猫的工作原理。短信猫通过串行通信接口(如COM口)与计算机连接,它提供了一种将短信功能...

    smsc.rar_CSharp 短信_C# 短信_c# sms_短信 csharp_短信息

    在C#编程环境中,开发手机短信收发功能是一项常见的任务,尤其在移动应用或企业级通信解决方案中。本文将深入探讨如何使用C#实现这一功能,以及如何处理SMS中心(SMSC)编码的问题。 首先,我们需要理解短信服务的...

    短信猫开发包,C C# Java vb的都有

    短信猫,全称为SMS Modem,是一种通过标准串行接口(如RS-232)或USB接口与计算机通信,实现短信收发功能的设备。它通常被用于企业级应用,如自动报警系统、远程监控、数据采集系统等。本文将深入探讨短信猫的开发包...

    c# 短信猫 at指令发短信

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、Web应用以及游戏等领域。短信猫(GSM Modem)是一种硬件设备,它能够通过标准的串行接口或者USB接口与计算机连接,实现短信的收发功能。本文将...

Global site tag (gtag.js) - Google Analytics