基于GSM模块实现短信发送
摘要: 短信的发送需要 GSM 模块和处理器协作完成, GSM 模块与 AR M 处理器通过串口连接, 处理器向串口发送接收 AT 命令与 GSM 模块形成通信回路。中文短信的发送采用 PDU 模式, 根据 PDU 模式
形成 PDU 发送包, 实现短信发送。本文根据无线电
, 本文内容通过测试。 话项目的短信发送模块的实际开发流程编写
关键词: GSM; SMS; AT 命令; PDU
中图分类号: TN929 文献标识码: A 文章编号: 1009- 3044(2008)18- 21741- 02
Design of Message Sending with GSM Module
MIAO Yu
(Zhuhai College of Jilin University,Zhuhai 519041,China)
Abstr act:Sending a message needs GSM module and processor to work together. GSM module and AR M processor are connected through the series. AT order set is the communication protocol between the module and controller. Processor receives and sends AT order through series and forms the loop with the GSM module, then realizes the message sending and receiving. Sending message uses PDU mode. This article introduces the flow of actual research on message sending module.
Key wor ds:GSM;SMS;AT order;PDU
1 引言
2007 年全国手机短信发送量达到 5921 亿条, 日均发送量超过 16 亿条。短信的应用也扩展到各个领域, 本文介绍了多媒体电话
, 对短信息安全, 屏蔽垃 短消息发送模块的实现原理和具体的实现方法。由短消息发送流程可以了解短信息发送过程的每一个环节 圾短信有一定的作用。
2 GSM 模块及 GSM 模块的短信功能
GSM( Global System for Mobile communication) 系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的 一种系统。目前已建成的覆盖全国的 GSM 数字蜂窝移动通信网, 是我国公众移动通信网的主要方式, 主要提供话音、短信息、数据 等多种业务。基于 GSM 短消息功能可以做成传输各种检测、监控数据信号和控制命令的数据通信系统, 能广泛用于远程监控、定位 导航、个人通信终端等。由于公众 GSM 网络在全球范围内实现了联网和漫游, 建立上述系统不须再组建专用通信网络, 所以具有实
时传输数据功能的短消息应用将得到迅速普及。
SMS 是由 Etsi 所制定的一个规范( GSM 03.40 和 GSM 03.38) 。它可以发送最多 160 个字符, 当使用 7- bits 编码的时候, 8- bit 编 码(最多 140 个字符)通常无法直接通过手机显示, 通 常 被 用 来 作 为 数 据 消 息 。16- bit 信 息 ( 最 多 70 个 字 符 ) 被 用 来 显 示 Unicode (UCS2)文本信息, 可以被大多数的手机所显示。一个以 class 0 开头的 16- bit 的文本信息将在某些手机上作为 Flash SMS 显示。
有两种方式来发送和接收 信息: 使用文本模式或者使用 模式。 SMS PDU(protocol description unit)
3 实现中文短信发送
GSM 模块支持两种方式来发送和接收 SMS 短信息, 文本模式和 PDU( protocol description unit) 模式, 文本模式只能发送普通的
Ascill 字符, 要发送图片, 铃声, 其他编码的字符( 如中文) 就必须采用 PDU 模式。
PDU 模式中, 可以采用三种编码方式来编码要发送的内容, 分别是 7bit 编码, 8bit 编码, 16bit 编码, 7bit 编码用于发送普通的 Ascill 字符, 8bit 编码通常用于发送数据信息, 如图片和铃声, 而 16bit 编码用于发送 Unicode 字符。三种编码可以发送的最大字符分 别是 160, 140, 70。
发送中文短信要采用 模式的 编码方式, 具体步骤描述如下: PDU Unicode
(1)GB2321 编码到 Unicode 编码的转换
操作系统提供函数( 有些系统不提供, 如 deltaos)
手动查
(2)Unicode 编码到 16bit 编码的转换
得到的 Unicode 编码后, 还需要转换成 PDU 的 16bit 编码才可以正确的发送, 这个转换过程中
Unicode 编码最开始的 0xffff 标志要去掉, 在 0xffff 之后的内容才是真正的 Unicode 字符。
Unicode 是双字节, 根据系统如果是小端字节序( little- endian) , 也就是说, 存储的时候, 先存低位再存高位, 例如: “中”的 Uni-
需要转换了。
正确计算 16bit 编码的消息体长度, PDU 规范中, 包括消息体本身;
正确设置 First- Octet, TP- MR, TP- PID, TP- VP 在 PDU 格式中, 依次设置为: 11, 00, 00, 08, A7( 以上都为 16 进制数) 。
(3)形成标准的发送包。
3.1 短信发送过程
处理器通过向串口发送接收 AT 命令与 GSM 模块形成通信回路, 通过 AT 命令实现对 GSM 模块的基本操作, 用于发送短信的
。AT 命令如表 1 所示
表 1 发送短信的 AT 命令
发送短信可用文本模式和协议数据单元模式( PDU, protocol data unit) 。大多手机不支持文本模式, 只支持 PDU 模式。PDU 模式
是把短信正文经十六进制编码后被传送, 其编码总体上分为三个部分: 服务中心号、接收方手机号、短信内容, 如“你好”短信 PDU 编 码是这样的( 其中 xyz 是手机号具体数字) : 0891683110200005F011000B8131208698yxFz0008FF044F605970其意义如,表 2 所示。
表 发送数据分析 2
3.2 发送短信程序流程及主要函数
(1)接口函数 _SendMessage()
当调用接口函数 _SentMessage(unsigned char *message, unsigned char *telephone, unsigned char telephonetype)时, 程序开始进入 短信发送模块, 流程如图 1 所示。
图 1 SendMessage(函数流程)图 (2)发送短信主体函数 Send_SMS(); ( 下转第 1753 页)
参考文献:
[1] 恩云飞,罗宏伟.电子元器件失效分析及技术发展[J].失效分析与预防,2006,1(1):40 -44.
[2] 左万里,武小悦.电子设备智能故障诊断技术发展综述[J].系统工程与电子技术,2003,25(12):1572 -1575. [3] 周晓,杨成德,舒德强,张景.复杂电子装备的智能诊断技术[J].武器装备自动化,2006,25(5):42 -45.
谭阳红何怡刚电子电路故障诊断的新方法电路与系统学报 [4] ,.[J].,2004,9(5): 72- 75.
( 上接第 1742 ) 页
完成 _SMS_appUnit 结构填写以后, 短信发送的内容及所需信息提取到结构 _SMS_appUnit 中, 为下面对数据的处理提供了原 始数据, 接下来就调用 Send_SMS 函数, 函数中的结构 _SMS_SUBMIT 按照发送格式定义的结构体, 把转换后的标准数据存在结构
中形成发送包。程序流程如图 所示。 _SMS_SUBMIT ,2
图 2 Send_SMS()函数流程图 (3)数据处理函数 MakeSSP() 函数 MakeSSP 是短信发送部分重要函数, 把 struct _SMS_appUnit 结构中的数据转换成 struct _SMS_SUBMIT_PDU结构 , 形成发
送包。
4
以上详述了短信发送模块实现的步骤, 本文内容通过测试。可以实现短信的发送, 响应时间等参数符合
。但如果要连续发 送短信, 或短信发送量要求比较高的情况还需要设计数据库实现数据的管理。
参考文献:
[1] 北京科银京成.Delta System 用户使用手册[M].北京:北京科银京成,2003.
[2] 爱赛德无线小组.GSM 模块使用文档( 短信部分) [M].杭州:爱赛德无线小组,2002.
[3] Wavecom 公司.AT Commands Interface[S].2000.
杜春雷体系结构与编程北京清华大学出版社 [4] .ARM [M].:,2003.