标签:
接收短信
接收刚收到的短信有两种方法:轮询终端;使用事件
轮询终端可以定期的使用AT+CMGL=0指令读取未读取得指令。方法简单,但许多时候都在做无用功,效率低下,一般不建议采用。下面主要讲解事件法:
指令:
AT+CNMI=<mode>,<mt>,<bm>,<ds>,<brf>
参数:
mode:
0——缓存在终端
1——直接发送到TE
mt:
0——接收到新的SMS不返回事件
1——如果接收到的SMS存储在ME,则返回
+CMTI:<mem>,<index>
2——除了Class2 SMS,新的SMS直接发送到终端,返回:
+CMT:<length><CR><LF><PDU>
3——Class3 SMS使用mt=2的方法返回,其他类型的使用mt=1的方法返回。
bm:
0——小区广播不通知
2——新的小区广播通知,返回
+CBM:<length><CR><LF><pdu>
3——Class3格式的小区广播通知,使用bm=2格式
ds:
0——状态报告不通知
1——新的状态报告通知,返回:
+CDS:<length><CR><LF><pdu>
2——如果新的状态报告存储到ME,则返回:
+CDSI:<mem>,<index>
brf:
1——始终为1
例:
一般我们使用AT+CNMI=1,1,0,2,1
当收到新的短信时终端返回:
+CMTI:ME,5
新的状态报告:
+CDSI:ME,6
程序可以通过判断返回值并使用AT+CMGR指令返回新到短信。
转自bbs.sendsms.cn
标签:
原文地址:http://my.oschina.net/u/2350101/blog/529532