金笛工业手机论坛  

返回   金笛工业手机论坛 > 开发者乐园 > 短信开发资料

短信开发资料 短信开发技巧,代码分析

回复
 
LinkBack 主题工具 显示模式
旧 2012-08-25   #1 (permalink)
论坛管理员
 
admin 的头像
 
注册日期: 2009-06-30
帖子: 861
admin 的声望功能已被禁用
默认 使用TC35的AT 命令收发短信息

使用TC35的AT 命令收发短信息


摘要:
一、 介绍:
需要说明的是TC35 具有自动识别串行接口速率的能力,但要求速率范围在1200Bps至115200Bps 之间,并且设置为8Bit 数据,无校验,1 位停止位
二、AT 命令形式及返回形式
1. 在TC35 所支持命令集中根据命令名称可简单分为:
“ATxx”及少量”AT+xxx”为V.25 标准命令集;
”AT+Cxxx”为GSM 标准所扩展的AT 命令;
“AT^Sxxx”为SIEMENS 定义扩展的AT 命令。另外,
2. 命令形式:
”AT+Cxxx=?”为测试命令(Test Command),执行此种命令将返回此命令所支持的参数及参数范围;
“AT+Cxxx?”为读命令(Read Command),执行此种命令将返回此命令当前的参数值;
“AT+Cxxx=<…>”为写命令(Write Command),执行此种命令将设置此命令的参数值;
“AT+Cxxx”为无参数的执行命令(Execution Command)。
3. 命令的返回形式:
<CR><LF>Response<CR><LF>
在本文数据实录中未将<CR><LF>显式地打印出来,但切记TC35 回送时含有这些
字符,这对于编写程序来比对TC35 回送值以确定TC35 工作是否正常非常重要。
在本文中:
<CR> 代表ASCII 中回车字符,值为0x0D;
<LF> 代表ASCII 中换行字符,值为0x0A;
<SP> 代表ASCII 中空格字符,值为0x20;
<CTRL+Z> 代表ASCII 中文件结束字符,值为0x1A;
所有TC35 回送的字符以下画线表示,所有上位机发送给TC35 的字符以正常字符表示。
三、准备工作:
使用TC35 收发短信息,用户必须准备一张已开通短信息服务SIM 卡,并将其插入MC2002 之TC35 扩展模块SIM 卡座中或TC35T 的SIM 卡座中。
使用PC 配合TC35T 收发短信,用户需开启TC35T 电源,通过串行数据线联接到PC 机,并在PC 端安装串口读写软件,如超级终端,Telix 等。通过终端软件发送AT 命令,察看返回数据。
使用MC2002GSM 模块TC35 时,用户需通过编程选用MODEM 端口,TC35 将自动上电再通过编程发送AT 命令和处理返回数据。MC2002 在关闭TC35 电源前,首先要向其发送AT^SMSO”命令,并确认返回为“OK”或0 (即中断与TC35 网络连接) 后,才可关闭MODEM端口。

四、使用AT 命令实现收发短信
1. 收发短信及相关操作AT 命令
ATZ 软复位;
ATE 本地回线设置;
ATV 设置返回结果码形式;
AT+CMEE 错误报告设置;
AT+CSCA 短消息中心地址;
AT+CMGR 读短消息;
AT+CMGS 发送短消息;
AT+CMGC 发出一条短消息命令;
AT+CMGL 列出SIM 卡中的短消息;
AT+CMGF 选择短消息信息格式:0 PDU,1 文本;
AT+CSCS 设置字符集;
AT+CSMP 设置短消息文本模式参数;
AT+CMGW 向SIM 内存中写入待发的短消息;
AT+CMNI 显示新收到的短消息;
AT+CMGD 删除SIM 卡内存的短消息;
AT+CPBR 读取当前电话本信息;
AT+CSQ 检查信号质量;
AT^SMSO 中断网络连接。
TC35 提供Text 和PDU(Protocol Data Unit)两种模式来处理短信,
在Text 模式下可进行GSM 字符集与8Bit 数据的收﹑发等操作,但不支持中文或UCS2 字符集字符的收发操作;
在PDU 模式下可支持上述所有操作,但需要理解收发PDU 数据格式。在Text 模式与PDU 模式下,上述命令使用方法会有所不同。详细的内容请参阅相关资料。
2. 发送短信实例
SMS 是由ETSI 所制定的一个规范(GSM 03.40 和 GSM 04.11),规定当使用7Bits编码(GSM 字符集)时最多可以发送160 个字符;当使用8Bit 编码(数据消息,如:铃音、图片) 时最多可以发送140 个字符(通常无法直接通过手机显示);当使用16Bit 编码 (UCS2)时最多可以发送70 个字符,用来显示Unicode 文本信息,可以被大多数的手机所显示。实
例:
(1)发送英文短信
AT+CMGF=1 设置为Text 模式
AT+CSMP=17,167,0,0 设置Text 模式参数。最后一个参数是数据编码类型(DCS—Data Coding Scheme),0 表示默认字符集(GSM).
AT+CSCS=GSM 设置为GSM 字符集
AT+CMGS 输入对方电话号码
><SP>为TC35 提示,”TEST LINE!”短信息内容,<Ctrl+Z>表示结束.
数据实录:
AT<CR>
OK
AT+CMGF=1<CR>
OK
AT+CSMP=17,167,0,0<CR>
OK
AT+CSCS=GSM<CR>
OK
AT+CMGS=13699809470<CR>
><SP>TEST LINE!<CTRL+Z>
+CMGS: 86
OK
(2)发送8Bit 数据
AT+CMGF=1 设置为Text 模式
AT+CSCS=GSM 设置为GSM 字符集
AT+CSMP==17,167,0,4 设置Text 模式参数。最后一个参数是数据编码类型
(DCS—Data Coding Scheme), 4 表示8Bit 数据.
AT+CMGS 输入对方电话号码
><SP>为TC35 提示,”3534454345STD6456576”短信息内容,<Ctrl+Z>表示
结束.
数据实录:
AT<CR>
OK
AT+CMGF=1<CR>
OK
AT+CSCS=GSM<CR>
OK
AT+CSMP=17,167,0,4<CR>
OK
AT+CMGS=13699809470<CR>
><SP>3534454345STD6456576<CTRL+Z>.
+CMGS: 88
OK
(3)发送Unicode 编码字符串
AT+CMGF=0 设置为PDU 模式
AT+CSCS=GSM 设置为GSM 字符集.
AT+CSMP=17,167,0,8 设置模式参数。最后一个参数是数据编码类型
(DCS—Data Coding Scheme),8 表示Unicode 编码。.
AT+CMGS=22 输入 PDU 长度
><SP>为TC35 提示,
“0011000B913196899074F00008AA0862116210529F4E86”为PDU 内容,
<Ctrl+Z>表示结束.其中,“62116210529F4E86”为“我成功了”中文字符
串的Unicode.
数据实录:
AT<CR>
OK
AT+CMGF=0<CR>
OK
AT+CSCS=GSM<CR>
OK
AT+CSMP=17,167,0,8
OK
AT+CMGS=22<CR>
><SP>0011000B913196899074F00008AA0862116210529F4E86<CTRL+Z>
//PDU 内容
+CMGS: 89
OK
3. 接收短信实例
(1) 接收英文短信
AT+CMGF=1 设置为Text 模式
AT+CSCS=GSM 设置为GSM 字符集. .
AT+CMGL=ALL 列出所有短信息
请注意其中第一条及第三条为中文短信,它们在Text 模式下无法显示出正确的内
容,只能列出其中的英文字符; +CMGL 后的数字(如1)表示记录号,"REC
READ"表示已读,(未读为"REC UNREAD"),"+8613699809470"表示发方
号码,"02/05/19,22:17:31+00"表示时间邮截。
AT+CMGL=UNREAD 可以列出所有未读短信息,注意:未读短信一旦列出一次即变
为已读短信
数据实录:
AT<CR>
OK
AT+CMGF=1<CR>
OK
AT+CSCS=GSM<CR>
OK
AT+CMGL=ALL<CR>
+CMGL: 1,"REC READ","+8613699809470",,"02/05/19,22:17:31+00"

+CMGL: 7,"REC READ","+8613902909595",,"02/05/17,16:23:31+00"
1234567890ABC
+CMGL: 10,"REC READ","+8613902909595",,"02/05/17,16:41:19+00"
1234567890ABC
OK
(2) 接收中文短信
AT+CMGF=0<CR> 设置为PDU 模式
AT+CMGL=4<CR> 列出所有短信息
+CMGL 后的首个数字(如7)表示记录号;第二个数字表示短信状态(0—未读短信;
1—已读短信);其后一个数字(如28)表示PDU 长度,最后为该条短信的PDU
数据。
数据实录:
AT<CR>
OK
AT+CMGF=0<CR>
OK
AT+CMGL=4<CR>
+CMGL: 1,1,,28
0891683108705505F0040D91683196899074F0000820509122711300085
3D17ED981EA5DF1
+CMGL: 7,1,,32
0891683108705505F0240D91683109929095F50000205071613213000D3
1D98C56B3DD703958503804
+CMGL: 10,1,,50
0891683108705505F0240D91683109929095F50008205071611491001E0
0310032003300340035003600370038003900300041004200438FD84E2A
OK
4. 删除短信实例
接收的SMS 存储在SIM 卡中,如不及时删除则在SIM 卡存储满后无法接收新的短信,建议用户将短信列出/读回并转存储在上位机(MC2002 或PC)后,及时将TC35 中内容删除。删除的命令为:AT+CMGD=<index> .其中,index 为记录号.要说明的是即使在index
处无记录,此命令也会返回OK.
数据实录:
AT<CR>
OK
AT+CMGD=1
OK
五、收发PDU 的数据格式
PDU 串不仅仅 包含了短消息内容,而且还包含其它信息,如:发送者的信息﹑短信中心址﹑时间标志等等。这些都是以8 位字节的16 进制数或者半8 位字节的十进制数下的字符。
1. 收PDU 的数据格式
在这里给出一个例子:接收到源地址为“13677328099”发来的内容为“Hi”的PDU,其数据为:08 91 683108701305F0 00 0D 91 683109929095F5 00 002050716132130002 C834
下面进行详细分析:
(1)08—短信息中心地址字节长度。
指(91)+(683108701305F0)的长度,两个数字计为一个字节长度;
(2)91— 短信息中心号码类型(Type of Number) 。
91 是TON/NPI 遵守International/E.164 标准,指在号码前需加‘+’号.此______外还有其它数值,但91 最常用;
(3)683108701305F0—短信息中心号码,
注意其每两位是位置颠倒的。实际号码应为:8613800731500.由于电话号码位奇数(11), 因此加入F 来保证8 位;(1)、(2)、(3)通称短消息中心地址(Address o
__________________

让世界倾听我们的笛声
admin 当前离线   回复时引用此帖
回复

书签


当前查看此主题的会员: 1 (0 位会员和 1 位游客)
 

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为北京时间。现在的时间是 16:13


Powered by vBulletin® 版本 3.8.3
版权所有 ©2000 - 2024,Jelsoft Enterprises Ltd.