用单片机控制手机收发短信息

[10-10 20:38:44]   来源:http://www.88dzw.com  单片机学习   阅读:8997

文章摘要:手机回答:OK发送:AT+CSMS=0{检测手机是否支持SMS命令}手机回答:OK发送:AT+CMGS=52{发送短信息,52 octets(不包括最初9个短信息元字节)}手机回答:>{允许上传数据,ASCII码是($20H,$2EH)}发送:0891683108701305F011000B813179133208F10000AA2632184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D97A02451068B19834926081A不计最初9个短消息信元字节,本短信息有52字节(104个字符)。AT+CMGS仅说明了SMSC信息内容

用单片机控制手机收发短信息,标签:单片机开发,单片机原理,http://www.88dzw.com

手机回答:OK

发送:AT+CSMS=0{检测手机是否支持SMS命令}

手机回答:OK

发送:AT+CMGS=52{发送短信息,52 octets(不包括最初9个短信息元字节)}

手机回答:>{允许上传数据,ASCII码是($20H,$2EH)}

发送:0891683108701305F011000B813179133208F10000AA2632184CF682D95

E30DC2B36D3D170A0243106933D97A0243106933D97A02451068B19834926081A

不计最初9个短消息信元字节,本短信息有52字节(104个字符)。AT+CMGS仅说明了SMSC信息内容的长度,在收到手机回答的>符号手才发送PDU数据串,并以(CTRL^Z)结束。

www.88dzw.com

现在市场上大多数手机均支持GSM07.05规定的AT指令集。该指令集是ETSI(欧洲通信技术委员会)发布的,其中包含了对SMS的控制。利用GSM手机的串行接口,单片机向手机收发一系列的AT命令,就能达到控制手机收发SMS的目的。ETSI的GSM07.05中用于SMS收发控制的主要AT命令见表1。

表1 常用AT指令

GSM07.05 Function(功能)
ATE0 RESET
AT+CSMS 选择短信息服务
AT+CPMS 选择短信息内存
AT+CMGF 选择短信息格式
AT+CSCA 短信息中心地址
AT+CNMI 显示新收到的短信息
AT+CMGR 读短信息
AT+CMGS 发送短信息
AT+CMGL 列出SIM卡中短信息
AT+CMSS 从SIM内存中发短信息
AT+CMGW 向SIM内存中写入待发短信息
AT+CMGD 删除SIM内存中的短信息
AT+CSCB 选择蜂窝广播信息

GSM手机通过异步通信接口实现对SMS的控制共有三种接入协议:Block Mode;基于AT命令的TextMode;基于AT命令的PDU Mode。PDU模式是发送或接收手机SMS信息的一种方法,短信息正文经过十六进制编码后被传送。目前,PDU Mode应用最为广泛,基本上全国所有的电信局都提供支持PDU Mode的短消息业务。有些地址则不支持Text Mode和Block Mode,这就限制了这两种接入协议的应用,而且PDU Mode已有取代Block Mode的趋势。为了保证系统具有广泛的适用性,本文采用PDU模式收发SMS。

PDU相当于一个数据包,它由构成消息(SMS)的信息组成。作为一种数据单元,它必须包含源/目的地址、保护(有效)时间、数据格式、协议类型和正文,正文长度可达140字节,它们都以十六进制表示。PDU结构根据短消息由移动终端发起或以移动终端为目的而不同。

当由移动终端发起时,PDU的格式为:

SMSC PDU类型 MR DA PID DCS VP UDL UD(0~140octed)

当以移动终端为目的时,PDU的格式为:

SMSC PDU类型 OA PID DCS SCTS UDL UD(0~140octed)

其中,SMSC为短消息业务中心地址,DA/OA为源/目的地址,PID为协议识别,DCS为数据编码,UDL为用户数据长度,UD为用户数据,VP为有效时间,MR指明是发出信息,SCTS指明短消息到达业务中心的时间。

2 PDU格式下短信息的接收

根据设置不同,手机将收到的短消息保存在缓存单元或存入SIM卡,单片机从手机中接收短消息实质上就是从SIM或缓存中读出信息。这主要利用AT+CMGR和AT+CMGL两条指令来完成,其工作过程见图2。

由于不同的厂商对AT指令集的解释代码和响应信息不一样,所以单片机首先要确认能否与手机建立起通信,一般用ATE指令完成此确认;然后用AT+CMGF指令选定短消息的数据格式;在收到手机的正确回答反以AT指令完成读出功能。一般用AT+CMGL读取以前的信息,在收到手机的RING(振铃)数据时,用AT+CMGR读取实时信息。

以下是笔者设计的物流数据采集系统中用到的接收SMS的一个实例,它说明了PDU模式的应用。单片机发送和接收(手机回答)均为ASCII码。所用手机为SIEMENS S3508i。

操作过程如下({}内为注释):

发送:ATE

手机回答:OK {已建立联接}

发送:AT+CMGF=0 {选用PDU格式}

手机回答:OK {允许选择PDU格式}

发送:AT+CMGL=2 {列出已有的短信息}

手机回答:+CMGL:1,2,,24{1表示信息个数,2表示未发信息,24表示信息总容量}

0D71683108370105F004000D81683179133208F10000026080410033802632184CF682D

95E0DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608

OK

以上这组PDU格式的十六进制字符串,不但包含了短消息的内容,同时包含了发送者的手机号码、短信息中心号码、短消息发送时间等。

下面对信息内容进行分析:

0D:短信息中心地址(号码)长度。

91:短信息中心号码类型,91是TON/NPI。TON/NPI遵守International/E.164标准,指在号码前需加'+'号;此外还可直有其他数值,但91最常用。

上一页  [1] [2] 


Tag:单片机学习单片机开发,单片机原理维修教程知识 - 单片机学习