基于C#平台的短信发送软件设计.doc

上传人:仙人指路1688 文档编号:2389382 上传时间:2023-02-17 格式:DOC 页数:42 大小:1.10MB
返回 下载 相关 举报
基于C#平台的短信发送软件设计.doc_第1页
第1页 / 共42页
基于C#平台的短信发送软件设计.doc_第2页
第2页 / 共42页
基于C#平台的短信发送软件设计.doc_第3页
第3页 / 共42页
基于C#平台的短信发送软件设计.doc_第4页
第4页 / 共42页
基于C#平台的短信发送软件设计.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《基于C#平台的短信发送软件设计.doc》由会员分享,可在线阅读,更多相关《基于C#平台的短信发送软件设计.doc(42页珍藏版)》请在三一办公上搜索。

1、浙江大学电子信息学院本科毕业设计(论文)(2012届)论文题目 基于C#平台的短信发送软件设计 (英文) Design of SMS Messages Send Software Based on C# Platform 所在学院 专业班级 学生姓名 学号 指导教师 职称 教授 完成日期 2012 年 4 月 15 日基于C#平台的短信发送软件设计 (浙江 )2012年4月摘 要随着移动通信技术的迅速发展,短信猫信息平台软件由此应运而生。短信猫信息平台不仅方便个人随时随地和互联网等远程系统相连,以完成个人各种需求,也可以帮助企业开展各种增值业务,以减轻企业对这些繁杂业务的管理,和资金的浪费。基

2、于以上原因,设计了一种基于C#利用GSM MODEM实现短信发送的方案,该方案主要分为串口部分、AT指令部分和PDU编码部分。硬件部分主要用到了GSM MODEM、SIM卡和手机,软件制作采用了Microsoft Visual Studio 2010工具,配合由Hayes公司发明的调制解调器命令语言(AT指令集)进行开发,设计了一套短信猫信息平台软件,它可以使计算机方便的同GSM设备进行数据交换,实现了短信的发送的功能。系统主要由串口程序、AT指令和PDU编码组成。PC机通过串口程序实现GSM MODEM的数据交换,利用AT指令来控制短信息的格式以及发送,短信内容则需要经过PDU编码,把发送的

3、内容编译成字符串,以字符串的形式发送到手机端,再进过反编译呈现在手机上。关键字:串口通信;AT指令;PDU编码;短信猫AbstractWith the rapid development of mobile communication technology, text messaging cat information platform software which came into being. SMS cat information platform is not only easier for individuals anywhere connected to the remote s

4、ystem and the Internet to complete the personal variety of needs can also help enterprises to develop a variety of value-added services in order to reduce the corporate management of these complex operations, and waste of capital. For the above reasons, design a program which messages sent using GSM

5、 MODEM based on C #, the program is divided into the serial port part, AT instruction part and PDU encoding part. The hardware part is mainly used in the GSM MODEM, the SIM card and mobile phone, software to make using Microsoft Visual Studio 2010 tools, and with the modem command language (AT Comma

6、nd Set) by Hayes invented to design a text messaging cat information platform software, it can make the computer with GSM equipment to exchange data and messages sent. The system mainly consists of the serial program, AT commands and PDU encoding. PC achieve data exchange of GSM MODEM through the se

7、rial port program, using AT commands to control the short message format and send, the content of SMS need to go through the PDU encoding, Compiling content of SMS into a string is sent to the mobile terminal, and then into the recompilation is presented on the phone.Key Words: serial communication;

8、 AT commands; PDU encoding; SMS cat目 录1 概述11.1 课题的背景和意义11.2 研究开发内容和论文主要内容11.2.1 主要开发内容11.2.2 论文主要内容22 GSM与SMS技术32.1 短信息系统结构32.2 GSM 技术42.3 AT指令42.4 PDU编码63 GSM MODEM短消息系统设计方案83.1 总体设计83.1.1 GSM MODEM原理83.1.2软件设计思路93.2 串口通信设计103.2.1 RS232接口简介103.2.2 RS232接口的基本应用113.2.3 串口程序设计123.3 AT指令发送133.4 PDU编码设计

9、154 调试与运行结果184.1 Microsoft Visual Studio 2010软件介绍184.1.1 Microsoft Visual Studio 2010的编程环境184.1.2 Microsoft.Net Framework技术介绍204.2调试与运行204.2.1 串口调试204.2.2 运行结果235 结论25致 谢26参考文献27附录1 系统实物图28附录2 毕业设计作品说明书29附录3 系统主要软件源代码301 概述1.1 课题的背景和意义全球移动通信系统(Global System of Mobile Communication-GSM),是一种起源于欧洲的移动通信

10、技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。GSM是目前国内覆盖范围最广、系统可靠性最高,话机拥有量最大的数字移动蜂窝通信系统1。通用分组无线服务技术(General Packet Radio Service-GPRS),它是GSM移动电话用户可用的一种移动数据业务。GPRS可说是GSM的延续。目前中国移动GPRS网络已覆盖全国所有省、直辖市、自治区,网络遍及240多个城市。无论在繁华的闹市、还是在僻静的边远地区,GPRS都能够最大限度的为新人类、商务人士和各行业集团客户提供高速数据服务。 短消息业务(Short Me

11、ssage Service, SMS)是用来实现短消息实体(SME)和短消息中心(SMSC)间的短讯传输。它是GSM系统中惟一的需要建立端到端信道的业务,是信息在移动网络上储存和转寄的过程。短消息业务具有短小、迅速、操作简便、价格低廉、用户广泛等诸多优点,日益成为人们喜闻乐见的一种通信和交流方式2。GSM网络覆盖范围广,信号稳定,容量大,具有很好的灵活性、保密性和安全性。因此GSM短信息被广泛的应用于气象、港监、水网水文、环保监测、车辆船舶、移动作业等领域。而随着时代的发展,3G时代的来临,高速网络的完善,短消息业务将被应用于各行各业,同时短消息功能也将更加丰富多彩,以满足人们的对物质文化的需

12、要。1.2 研究开发内容和论文主要内容1.2.1 主要开发内容首先通过查阅资料来熟悉和学习Microsoft Visual Studio 2010开发软件的应用,掌握相关控件的使用方法以及C语言编程基础与技巧,并且了解短信的基本结构和短信发送的原理,同时还需要掌握串口通信方面的编程,了解数据接收、数据处理、数据输入的方法,在短信发送方面,则要了解并且掌握AT指令的使用方法,了解PDU编码的方法,理解编码过程。在硬件方面,则需要学会GSM MODEM的使用方法,了解其工作原理。Microsoft Visual Studio 2010开发软件的应用,是研究的重点。不仅要熟练的掌握C语言的编程基础,

13、而且还要学会使用开发平台。这其中主要包括类的调用,控件的使用方法和属性设置,以及相关语句的使用方法。而在软件设计方面,其核心内容主要是串口通信、AT指令、PDU编码方面的知识。其中串口通信主要涉及到了串口的打开、接受、读取、关闭等方面的知识。AT指令是短信发送的关键内容,通过发送AT指令,来控制短信的发送以及查看短信的收发状态。PDU编码则是对数据的处理,因为短信内容并不能被手机所直接读取,必须经过编码,手机才会认识,才会识别。设计步骤:首先设计一个串口通信小程序,实现串口与串口之间的数据传输,在这个过程中,设计到了串口的打开、关闭、输入、输出、简单的数据处理等程序。然后在此基础上,添加PDU

14、代码和AT指令代码,实现数据的编码以及发送,通过串口调试工具来模拟短信发送。最后,通过串口数据线连接GSM MODEM实现短信发送。1.2.2 论文主要内容本文共分五章,主要介绍利用GSM MODEM和AT指令实现从PC机上发送短信到手机的设计方法。第一章介绍本课题的背景和主要工作内容。第二章介绍了GSM与SMS技术。第三章重点介绍了GSM MODEM短消息系统设计方案,详细说明了软件的设计思路,以及设计过程。第四章介绍了软件的调试过程,并给出了运行结果。第五章主要介绍了设计过程中的一些心得和体会,并进行总结。2 GSM与SMS技术2.1 短信息系统结构短信息系统主要由GSM MODEM、短信

15、息服务器、短信数据库和若干客户端组成。短信息服务器主要负责对GSM MODEM的控制、短信息的编码、收发、管理等功能。 客户端则主要实现短信的接受和发送功能。GSM MODEM是短信收发模块的核心部分,它通过接受到的AT指令来实现短信的收发3。系统总体结构如图2-1所示。图2-1 系统总体结构一般PC都有USB接口,而硬件短信猫则以串口为主,所以需要一根USB转串口的数据线将PC机与短信猫进行连接,从而使PC机与短信猫之间可以实现数据传输,这个传输则需要用串口通信来实现。PC机通过向短信猫发送AT指令进行控制,在此基础上实现短信发送操作。系统在实现操作时,主要用到了分层实现的思想,可将任务分层

16、处理,使其具有模块化。因此,利用串口通信来实现PC机与GSM MODEM之间的通信是最简单和方便的。系统底层数据通信的分层模块如图2-2所示。图2-2 系统底层数据通信分层模块在系统底层数据通信分层模块中,串口通信数据传输主要完成的是PC与短信猫之间的信息传输,该层为它的上一层提供数据通道,进行数据的收发处理。AT指令层主要是完成从数据传输层得到的AT指令进行分析,按照AT指令完成相应的操作,对数据进行相应的处理,然后再把数据交给上一层。PDU编码层则是对客户的短信内容进行编码,以便手机可以识别,然后把编码好的数据传送到AT指令层,通过AT指令把数据传输到短信猫,然后由短信猫把短信内容发送给接

17、受端的用户4。2.2 GSM 技术GSM 是全球移动通讯系统的简称,它是当前应用最为广泛的移动电话标准,也是使用人数最多的移动通信。GSM被看作是第二代(2G)移动电话系统。GSM是一个当前由3GPP开发的开放标准。GSM的优势主要体现在两个不同的方面。从用户的角度讲,GSM的主要优势在于用户可以从更高的数字语言质量和低费用的SMS之间做出选择。而从网路运营商的观点出发,则优势主要体现在他们可以给不同的客户定制他们的设备配置,因为GSM的标准允许网络运营商提供漫游服务,用户就可以在全球使用他们的移动电话了5。GSM的一个关键特征是用户身份模块(SIM),也叫SIM卡。SIM卡是一个保存用户数据

18、和电话本的智能卡。该卡所保存的数据就算更换了手机也不会丢失。SIM卡具有个人识别密码,即PIN码,有效的保护了用户的个人隐私。2.3 AT指令AT即Attention,AT指令集是从终端设备或数据终端设备向终端适配器或数据电路终端设备发送的。现在AT指令已经成为一种标准,被所有调制解调器制造商采用的一个调制解调器命令语言。AT指令的每条命令都以“AT”字母开头,因而得名。AT后跟字母和数字表明该命令的具体功能。主要的移动电话生产商诺基亚、爱立信、摩托莫拉和PH共同为GSM研制了一套AT指令,其中包括对SMS的控制。AT指令在此基础上演化并被加入GSM07.05标准以及现在的GSM07.07标准

19、。AT指令在执行过程中都有相应的握手协议,即每个命令执行成功与否都有相应的返回值。通过返回值,可以判断出每条命令的执行状态,并做出相应的处理。AT指令有很多,但在此只介绍与SMS有关的一些常用的AT指令。如表2-1所示6。表2-1 SMS常用AT指令AT指令功能AT+CMGCSend an SMS command(发出一条短消息命令)AT+CMGDDelete SMS message(删除SIM卡内存的短消息)AT+CMGFSelect SMS message format(选择短消息信息格式,0-PDU;1-文本)AT+CMGLList SMS message from preformed

20、store(列出SIM卡中的短消息PDU/text:0/R EC UNREAD:未读;1/REC READ:已读;2/STO UNSENT:待发;3/STO SENT:已发;4/ALL:全部的)AT+CMGRRead MS message(读取消息)AT+CMGSSend SMS message(发送短消息)AT+CMGWWrite SMS message to memory(向SIM内存中写入待发的短消息)AT+CMSSSend SMS message from storage(从SIM内存中发送短消息)AT+CNMINew SMS message indications(显示新受到的短消息

21、)AT+CPMSPreformed SMS message storage(选择短消息内存)AT+CSCASMS service center address(短消息中心地址)AT+CSCBSelect cell broadcast messages(选择蜂窝冠博消息)AT+CSMPSet SMS text mode parameters(设置短消息文本模式参数)AT+CSMSSelect Message Service(选择短消息服务)在使用AT指令前,先要对串口进行设置,将串口的波特率设置成相应的波特率,以确保正常通信。在确保能正常通信后,可以发送“AT”进行检测,GSM MODEM是否支

22、持AT指令,如果返“OK”则表明PC机与GSM MODEM连接正常,可以执行其他AT指令。AT+CMGF:选择短信息格式。一般的短信息格式有2种:一种是TEXT方式(AT+CMGF=1),还有种是PDU方式(AT+CMGF=0)。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信,而PDU模式不仅支持中文短信,也能发送英文短信。所以本次设计采用的是PDU模式。AT+CSCA:获取短信中心号。短信的发送建立在信息中心平台上,而短信中心号则是该平台的通行证,只有获取了短信中心号,才可以正常的收发短信。在设计中通过AT+CSSA指令,可以很快的获取GSM MODEM中

23、SIM卡的短信中心号,以便短信的发送。AT+CMGS:发送短信。这是短信发送中的核心指令。短信内容结果编码后会得到一串数据,然后对数据的位数进行处理,得到一个数字,通过AT+CMGS=?,来控制短信的发送,如果返回值不为“ERROR”,这表明短信发送成功。2.4 PDU编码发送SMS信息的模式有3种:Block模式,Text模式和PDU模式。PDU模式的SMS信息可以被所有手机支持,可以使用任何字符集,同时这也是所有手机默认的编码方式。短信发送的PDU编码主要包括以下内容:短信息中心号码、信息类型、被叫号码、协议标识、编码方式、短信内容和短信长度。PDU模式收发短信可以使用3种编码:7-bit

24、、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符7。具体实例:接受的手机号:15067425329短信中心号:8613800574500短信内容:你好,Hello!这些内容,并不能被手机直接执行,只有通过编码手机才可以识别。编码后的信息如下:0891683108504705F011000D91685160475223F9000800124F60597DFF0C00480065006C006C006F0021。编码后的字符串都有分段,每个分段都有各自的含义,该字符串的含义如表2-2所示。表2-2 P

25、DU串的结构和编码方式分段含义说明08短信中心号的长度共8个八位字节(包括91)91短信中心号类型(TON/NPI)国际格式号码(前面加“+”)683108504705F0短信息中心号码(既8613800574 500)补“F”凑成偶数11文件头字节00信息类型0D被叫号码长度共13个十进制数(不包括91和“F”)91被叫号码类型(TON/NPI)国际格式号码(前面加“+”)685160475223F9被叫号码(既8615067425329)补“F”凑成偶数00协议标识TP-PID普通GSM类型,点对点方式08数据编码方案TP-DCS(TP-Data- Coding-Scheme)USC2数据

26、编码00有效期TP-VP(TP-Valid-Period)12长度TP-UDL ( TP-User-Data-L ength )实际长度12个字节4F60597DFF0C00480065006C006C006F0021短信内容你好,Hello!3 GSM MODEM短消息系统设计方案3.1 总体设计整个软件系统主要目的是通过短信猫,从PC机上发送短信给手机。利用Visual C#模板中的Windows窗体应用程序来编写一个短信发送界面程序,使用PDU的编码对短信进行编码,并通过AT指令来实现短信的发送。在收发短信方面,有三种模式:Blocked MODE、基于AT指令的Text Mode、基于

27、AT指令的PDU Modem。本次设计采用了PDU模式,因为它支持大多数手机,而且支持中、英文短信。PDU模式是发送或接受手机SMS信息的一种方法,短消息正文经过十六进制编码后被传送。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。本次设计采用了UCS2编码,用于发送Unicode字符,实现发送中、英文短信。UCS2编码,可以被大多数手机所显示,它最多只能发送70个字符,不管是中文还是英文。AT指令一般应用于终端设备与PC应用之间的连接与通信。本次设计主要研究的是短信发送,所以用到的AT指令并不是很多,主要的几个AT指令分别用于短信格式的选择、短信中心号的获取和短消息

28、的发送这三个方面8。3.1.1 GSM MODEM原理GSM MODEM,也叫做GSM调制解调器或短信猫,所谓短信猫,其实是一种用来收发短信的设备,他和我们用的手机一样,需要手机SIM卡的支持,在需要收发短信的时候,在短信猫里面插入一张我们平时用的手机卡,插上电源,通过(USB或者串口)数据线和电脑相连,在电脑的应用管理软件中就可以实现短信收发的功能9。它是在随着无线数据业务的快速发展,越来越多的设备开始要求具备无线通讯能力的这种背景下诞生的。许多从来没有的应用从理想变成了现实,如无线上网、远程监控远程数据采集等。GSM MODEM能提供短信息、语音通讯和数据通讯三大功能。其中,数据传输业务和

29、上网业务使它获得最广泛的应用,有时也将GSM MODEM简称为无线网卡。短信猫的硬件接口主要有 USB 和RS232 串口两种形式。本次设计提供的GSM MODEM用的是RS232串口,其波特率是115200bps,由于现在的PC机一般采用的外接接口都是USB接口,所以还需要一根USB转串口的数据线,来实现PC机与GPRS MODEM的连接。其具体硬件连接如图3-1所示。图3-1 短信猫的硬件连接短信猫收发短信的原理,资费和我们的平常所用的手机是一样的,但因为短信猫专注于短信收发应用,所以相对于手机,短信猫在短信收发的速度要更快,可靠性更高,实时发送等优点,在目前的企业短信中应用广泛。标准短信

30、猫等于短信猫硬件加短信猫二次开发包。标准短信猫是短信猫硬件和软件的有机结合体。短信猫的应用方式主要有三种10:(1) 直接使用AT指令:通过串口用AT指令驱动短信模块收发短信,这是最底层的开发模式,需要对短信模块的AT指令相当熟悉;(2) 短信猫开发包:短信猫厂商基于串口AT指令集成的二次开发包,开发商只需直接调用短信收发API即可;(3) 短信猫通信中间件:短信猫厂商提供的基于数据库接口的短信收发后台服务软件,是一种更高级的短信开发解决方案。3.1.2软件设计思路整个软件系统主要实现短信的发送。利用Visual Studio 2010的.NET Framework技术来编程,来设计一个用于短

31、信发送的人性化界面,使用PDU的编码对短信进行编码,并通过AT指令来实现短信的发送。短信发送的流程图如图3-2所示。图3-2 发送流程图3.2 串口通信设计串口通信是本次设计的第一个重点,其目的是实现PC机与硬件之间的数据交换。在串口通信方面主要涉及到了串口的打开、写入、读取、关闭四个主要步骤,同时也需要对串口进行设置,在通信前,必须保证串口的波特率、数据位、停止位、奇偶校验相一致,否则将无法正常通信。3.2.1 RS232接口简介串行通信在通讯领域被广泛应用,标准的RS232接口已成为计算机、外设、交换机和许多通讯设备的标准接口。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表

32、设备通用的通信协议,它具有连线简单、通讯距离长等优点。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念十分简单,就是串口按位(bit)来发送和接受数据。在收发数据时,串口可以使用一根线发送数据的同时另一根线接受数据,它很简单的就能够实现远距离的通信。RS232具有较高的性价比和传输的可靠性,在传输速率要求不是很高的情况下,串口通信具有其自身的优势。RS232串行接口属于个人计算机(PC)及电信应用领域中最为成功的串行数据标准它被定义为一种在低速率串行通信中增加通信距离的单端标准,是目前PC机与通信工业中应用最广泛的一种串行接口11。3.2.2 RS232接口的基本应用RS23

33、2接口的应用十分广泛,最典型的应用则是用于ASCII码字符的传输。在通信过程中,只需3根线就可以完成:(1)发送,(2)接受,(3)地线。串口通信是异步通信,端口能够在一根线上发送数据的同时在另外一根线上接受数据,而其它的线则可以用于握手,但这不是必须的。在串口通信中,端口的参数设置最为重要。在两个端口进行串口通信之前,必须确保波特率、数据位。停止位和奇偶效验这些参数匹配,否则将无法正常通信。(1) 波特率:这是一个衡量通信速度的参数。在电子通信领域,波特率(Baud rate)即调制速度,指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。通常电话波特率为14400,28

34、800和36600。波特率可以远远大于这些值,但是波特率和通信距离成反比。高波特率常常用于放置很远的仪器间的通信。(2) 数据位:这是衡量通信中实际数据位的参数。利用调制解调器在线路上传输数据时,每传输一组数据,都要含有相应的控制数据,包括开始发送数据和接受数据,而在该数据中最为重要的是数据位。在不同的通讯环境下,一般都会规定不同的数据位和结束位数量。(3) 停止位:用于表示单个包的最后一位。典型的值为1、1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于

35、停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。(4) 奇偶校验:在串口通信中的一种简单的检错方式。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端接收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性12。3.2.3 串口程序设计本次设计运用了Serialport控件,通过Serialport控件来完成串口的相关操作。首先需要对串口属性进行设置,把控件命名为sp,以方便编写

36、程序。第一步:选定端口。代码:sp.PortName = ConnectPort.TextPortName :获取或设置通信端口。ConnectPort.Text是一个下拉列表的复选框,用户确定选中的端口,然后通过PortName来获取用户所选的端口。第二步:设置波特率。代码:sp.BaudRate = int.Parse(ConnectBaudRate.Text)BaudRate:获取或设置串口波特率。ConnectBaudRate.Text则是一个下拉列表的复选框,用户可以根据需要来进行选择,然后通过BaudRate来获取用户所选的波特率。第三步:设置数据位。代码:sp.DataBits

37、=int.Parse(DataB)DataBits:获取或设置每个字节的标准数据位长度。 DataB是代码中所定义的 string DataB = comboBox5.Text.Substring(0,1)。此目的是为了将数据位中的汉字截掉,以便和整型变量匹配。第四步:设置停止位。代码:sp.StopBits=(StopBits)Enum.Parse(typeof(StopBits), StopB)StopBits:获取或设置每个字节的标准停止位数。StopB是代码中所定义的string StopB = comboBox6.Text.Substring(0,1)。此目的是为了将停止位中的汉字截

38、掉,以便和枚举变量匹配。串口属性设置是为了保证串口之间能够正常通信,然后通过sp.IsOpen来对串口进行打开和关闭操作。在这个过程中,还需要判断用户选用的端口是否存在或者是否被占用了。如果串口存在并且是关闭的,则需打开串口,否则。则关闭串口;如果串口不存在或者已经被占用。则提示给出提示“串口不存在或者被其他应用程序占用”。代码如下:try if (sp.IsOpen=false) /如果串口是关闭状态 SaveProperties(); sp.Open(); /打开串口 State.Text = 连接成功; /提示栏显示“连接成功” btnConnect.Text = 关闭; /连接按钮变成

39、关闭状态 else sp.Close(); /关闭串口 btnConnect.Text = 连接; /连接按钮变成连接状态catch MessageBox.Show(串口不存在或者被其他应用程序占用!,提示); State.Text = 连接失败; /提示栏显示“连接失败”串口打开后,还需要向串口输入数据才可以进行传输,简单的向串口写数据的代码是sp.Write(),但是短信发送时,发送的数据需要进行处理,并且需要通过AT指令来发送,所以在写入这一部分需要结合AT指令和PDU编码,这也是设计部分的一个重点。该重点会在AT指令和PDU编码中着重介绍。虽然本次设计没有涉及到短信接收部分,但在AT指

40、令的运用中,会有握手协议,需要读取串口所返回的数据,所以要通过sp.ReadExisting()读取串口数据,以便进行判断。3.3 AT指令发送AT指令是短信发送的关键,关于短信发送的AT指令有很多,但本次设计只涉及到短信的发送部分,所以用到的AT指令只有3个AT+CMGF、AT+CSCA和AT+CMGS。AT+CMGF:选择短消息信息格式。AT+CMGS=0为PDU格式;AT+CMGS=1为文本格式。因为发送短信时不仅要发送英文还要发送中文,所以选择PDU格式,文本格式只支持英语。AT+CSCA:获取短信息中心地址。短信发送前,必须要知道SIM卡所在地的短信中心号,而不是现在所在地方的短信中

41、心号。举个例子:SIM卡是在杭州进行注册的,那么这SIM卡短信中心号就应该是杭州地区的短信中心号,即使这张SIM漫游去了外地。但短信中心号仍是杭州。虽然AT+CSCA只是简单的获取短信中心号,但是在代码中实现却并不是那么容易。在发送AT+CSCA指令后,首先需要判断的是是否有返回值,如果有的话则需要对返回值进行取舍,以便得到正确的短信中心号13。代码如下:sp.Write (AT+CSCA?rn); /获取短信中心号Thread.Sleep (1000); /延迟1000毫秒String response = sp.ReadExisting(); /读取串口中返回的数据if(response.

42、Length 0) /判断是否有数据返回CenterNumber.Text = response.Substring (21,13); /对数据进行截取该部分代码可以放在串口的打开中,只要串口成功打开,就运行这段代码,以便在串口打开的同时就可以获取到SIM的短信中心号,快捷方便。AT+CMGS:发送短消息。该AT指令是实现短信发送的关键指令,指令虽然简单,但要实现真正意义上的短信发送,还需要经过处理。AT+CMGS=?是发一条短信的指令,问号则表示短信内容编码后字符串长度除以2得到的一个数字。具体实例:接受的手机号:15067425329短信中心号:8613800574500短信内容:你好,H

43、ello!编码后的信息如下:0891683108504705F011000D91685160475223F9000800124F60597DFF0C00480065006C006C006F0021。计算字符串长度时并不是统计所有字符串的长度,需要进行取舍,取舍后所用到的字符串是11000D91685160475223F9000800124F60597DFF0C00480065006 C006C006F0021,该字符串长度除以2可得到结果为33。然后以AT+CMGS=33即可给目标手机发送这则信息了。短信发送后,还需要判断短信是否发送成功或者接收方是否已经收到,这部分的判断则需要用到AT指令中

44、的握手协议。短信发送后,串口会返回一组数据,利用该数据来判断短信是否发送成功,如果返回的数据是“ERROR”或者为空,则短信发送失败,如果不是,则表明短信已经成功发送。实现代码如下:sp.Write(AT+CMGS= + sms.nLength.ToString() + rn); /发送短信Thread.Sleep(1000);string response = sp.ReadExisting(); /读取返回值string SendState = ; /清空信息框中的信息if( response.Length 0 & response.EndsWith( )/判断返回值是否是“” byte

45、buf= (Encoding.ASCII.GetBytes(String.Format(0x01a,decodedSMS); sp.Write(buf, 0, buf.Length); /编码后的值写入串口 Thread.Sleep(1000); String response = sp.ReadExisting(); /读取返回值 if (!response.EndsWith(ERRORrn) | !response.EndsWith() /判断是否发送成功 SendState = 发送成功!; else SendState = 发送失败!; 3.4 PDU编码设计PDU编码是本次设计的一个

46、难点,同时也是重点。在短信发送的过程中,短信的内容不能被手机直识别,需要经过编码后才可以正常显示,所以本次设计用到了PDU编码。PDU编码在此之前已经简单介绍了下,但如何来设计,则会在本节中做详细介绍。具体实例:接受的手机号:15067425329短信中心号:8613800574500短信内容:你好,Hello!首先在编码的字符串前加上0891,08代表的是SMSC地址信息的长度,共8个八位字节(包括91),91则表示是国际格式号码。然后对短信中心号进行奇数位和偶数位互换处理,用“F”凑成偶数个,此时编码后的字符串为0891683108504705F0。接下来则在字符串后面加上11000D91,这些都是PDU编码的基本格式,之前已经说明过,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号