通过RS232发送和接收短信(三)

接收短信

接收刚收到的短信有两种方法:轮询终端;使用事件

轮询终端可以定期的使用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

猜你喜欢

转载自sunrong201504170630.iteye.com/blog/2256461