查看: 7112|回复: 0
打印 上一主题 下一主题

解决at+cnmi=2,2即时模式下收不到短信或只能设置2,1的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2014-5-22 11:09:40 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
解决at+cnmi=2,2即时模式下收不到短信或只能设置2,1的问题  
设置  AT+CSMS=1 就可以了

如果AT+CSMS=1,接收到短信时,TE需在一定的时间内发送反馈消息至模块,也就是一收到+CMT,即一收到短信必须立刻回一个AT+CNMA \r,若超时,<mode>和<mt>的值会强制复位到0,即cnmi=2,2的设置会变成cnmi=2,0。那么,再有新的短信将不能被正确处理,需要用“at+cnmi”指令重新设置参数才行。这增加了程序处理的复杂性。AT+CSMS=0不需要回确认,省去了这些麻烦。

消息接收和读出命令
5.4.1 给TE 指示新消息:AT+CNMI
当TE 处于在用状态时(如:DTR 信号处于“ON”状态),使用设置命令,可设置新消
息如何从网络侧发送到TE。若TE 处于待用状态(如:DTR 信号处于“OFF”状态),
消息接收流程应该按照GSM 03.38 的规定。
若 DTR 信号不可用或信号状态被忽略(V.25ter 命令:&D0),可使用+CNMA 确认流程
确保短消息的可靠传输。
“选择消息服务”命令+CSMS 应该用来检测ME 是否支持接收SM 和CBM,并决定直
接发送到TE 的消息是否需要确认(请参考+CNMA 命令)。
新消息确认:AT+CNMA
使用执行命令,可确认是否正确接收新消息(SMS-DELIVER 或
SMS-STATUS-REPORT),该新短消息是由MT 直接发送到TE 的。
通过 AT+CNMA 给出短信确认需要满足2 个条件:通过AT+CSMS=1,将<service>设为1;通过
AT+CNMI=,2,将<mt>设为2 或者AT+CNMI=,,1,将<ds>设为1。
在满足上述 2 个条件后,如果在收到短信后没有通过AT+CNMA 给出确认,CNMI 的参数<mt>
和<ds>会被重至为0,同时短信收发会受影响。

命令格式AT+CSMS=<service>

<service>

0 SMS 的AT 命令兼容GSM 07.05 Phase 2

1 SMS 的AT 命令兼容GSM 07.05 Phase 2+

命令:
AT+CSMS=0  
设置AT 命令兼容Phase 2

响 应  
+CSMS: 1, 1, 1

OK

支持SMS-MO, SMS-MT, SMS-CB


命 令
AT+CSMS=1

响 应

+CSMS:01

OK

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|未来时代科技 ( 粤ICP备12044031号-1

GMT+8, 2024-11-23 11:37 , Processed in 0.062488 second(s), 31 queries .

Powered by WLSD X3.1

© 2013-2014 WLSD Inc.

快速回复 返回顶部 返回列表
 
【电话】(15118131494)
【QQ】 未来时代科技01 售前咨询
【QQ】 未来时代科技02 售后技术
【旺旺】 请问有什么可以帮到您?不在线可留言.
【邮箱】
inextera@sina.com
【地址】 (深圳市龙岗坂田扬马小区)