使用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 of the SMSC)。
(4)00—SMS_DELIVER 的第一个8 位;
(5)0D—发送方号码长度;
(6)91—发送方号码类型(同2);
(7)683109929095F5— 发送方号码,
经过了位移处理, 实际号码为“8613902909595”;
(6)、(7)、(8)通称目的地址(TP-Destination-Address);
(8)00—协议标识TP-PID(TP-Protocol-Identifier);
(9)00—数据编码方案TP-DCS(TP-Data-Coding-Scheme)
Bit No.7 与Bit No.6 :一般设置为00;
Bit No.5:0—文本未压缩,1—文本用GSM 标准压缩算法压缩;
Bit No.4:0—表示Bit No.1、Bit No.0 为保留位,不含信息类型信息,
表示Bit No.1、Bit No.0 含有信息类型信息;
Bit No.3 与Bit No.2:00—默认的字母表,01—8bit,10—USC2(16bit)
11—预留;
Bit No.1 与Bit No.0:00—Class 0,01—Class 1,10—Class 2(SIM
卡特定信息),11—Class 3;
(10)20507161321300-时间邮戳
TP-SCTS(TP-Service_Centre-Time-Stamp);
(11)02—用户数据长度TP-UDL(TP-User-Data-Length);
(12)C834—用户数据TP-UD(TP-User-Data)“Hi”;

2. 发PDU 的数据格式
在这里同样给出一个例子:向目的号码为“ 46708251358”的终端发送内容为“hellohello”PDU 数据。PDU 内容为:00 11 00 0B 91 6407281553F8 00 00 AA 0A E8329BFD4697D9EC37
下面进行详细分析:
(1)00-短信息中心地址长度。在这里为0,表示使用存储在SIM 卡中的短信息中心地址;
(2)11-SMS_SUBMIT 的第一个8 位;
(3)00-发送方地址信息。在这里为0,表示使用本机号码;
(4)0B-接收方号码长度;
(5)91-接收方号码类型(Type of Number);
(6)6407281553F8-接收方号码.实际号码为6708251358;
(7)00-协议标识TP-PID(TP-Protocol-Identifier);
(8)00-数据编码方案TP-DCS(TP-Data-Coding-Scheme)
Bit No.7 与Bit No.6 :一般设置为00;
Bit No.5:0—文本未压缩,1—文本用GSM 标准压缩算法压缩;
Bit No.4:0—表示Bit No.1、Bit No.0 为保留位,不含信息类型信息,1—表示
Bit No.1、Bit No.0 含有信息类型信息;
Bit No.3 与Bit No.2:00—默认的字母表,01—8bit,10—USC2(16bit),11—
预留;
Bit No.1 与Bit No.0:00—Class 0,01—Class 1,10—Class 2(SIM 卡特定信
息),11—Class 3;
(9)AA-有效期TP-VP(TP-Valid-Period);
(10)0A-用户数据长度TP-UDL(TP-User-Data-Length).若发送7Bit 编码数据,
则TP-UDL 为实际字符个数;若为8Bit 数据或16Bit 编码的Unicode,则
TP-UDL 为数据字节(8 位)的个数。
(11) E8329BFD4697D9EC37-用户数据TP-UD(TP-User-Data)“hellohello”;


3. PDU 模式发送7Bit 数据编码过程
在PDU 模式下发送7Bit 编码数据前首先要将数据编码为8Bit,在进行发送。还是以
发送“hellohello”为例来分析编码过程:
"hellohello"包含了10 个字符,他们必须一个个将用7-bits 来代表

 

上表中首行为7BIT 数据的ASCII 表示,次行为ASCII 值,第三行为ASCII 值的二
进制表示,第四行中有下画线的二进制数字表示将要在编码时移到前一字节。
首先将字符转换为7 位的二进制,然后,将后面字符的位调用到前面,补齐前面的差别。
例如:h 翻译成1101000,e 翻译成1100101,显然h 的二进制编码不足八位,那么就将e的最后一位补足到h 的前面。那么就成了11101000(E8)。剩余地编码看下表(表中有下画线的部分表示其为编码时移来的数据,第八字节时为空表示编码后节省出一个字节地址):

六、参考资料


(1) <<Technical Product Information TC35>>;
(2) <<AT Command Set -– Siemens Cellular Engines >>
(3) <<GSM Technical Specification – GSM07.05 >>
(4) <<GSM Technical Specification – GSM07.07 >>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值