|
有些客户在使用中间件或者二次开发包进行开发时,开始测试成功,1-2个月都没问题,但是后面就有时会出现软件提示不能正常发送短信的,基本都发送失败。客服让他把SIM卡放到手机上能发送,然后删除完SIM卡里的短信后又能正常发送了,过1-2个月又出现了。
对于这样的情况,是因为你的手机卡SIM卡里面堆满了短信,导致短信发送不出去的。你可以在超级终端里给短信收发设备设置一下储存和发送短信的指令“at+cnmi=2,2”,让猫接收到短信后都发送到串口上接收,不要通过SIM卡接口。
下面是指令cnmi的解析:
AT+CNMI 新消息提示
命令格式:
AT+CNMI=<mode>,<mt>,<bm>,<ds>,<bfr>
<mode> :控制主动提供结果码的过程只支持<mode>=2, 对于值013只是接受并返回OK其执行的过程与值2 一样。
0:结果代码缓冲区在TA如果TA 的缓冲区满则提示信息存储在其他地方或者删除最旧的提示信息以新的代替。
1:当TA-TE 链接保留时拒绝新消息结果码否则直接将其传送给TE。
2:当TA-TE 链接保留时结果代码缓存在TA预约后发送给TE否则直接将其传送给TE。
3:否则直接将结果码传送给TE当TA 处于在线数据模式时特殊波段内的TA-TE 链接用来嵌入结果码和数据
<mt> : 为SMS-DELIVERs 设置结果码提示发送路径缺省值为0 0SMS-DELIVER 提示不需要发送路径 1SMS-DELIVER 由+CMTI : SM,<index> 来提示发送路径 2SMS-DELIVER 除了class 2 消息由2 种结果码来发送
+CMT : [<alpha>,] <length> <pdu> (PDU 方式)
+CMT : <oa>,[<alpha>,] <scts> [,<tooa>, <fo>, <pid>, <dcs>, <sca>, <tosca>, <length>] <data> TEXT 方 式 3class 3 的SMS-DELIVER 消息采用<mt>=2 中的结果码来发送其他类型的消息 用 <mt>=1的格式
<bm> : 设置存储接收的广播消息的规则:
0:不向TE 发送广播消息提示信息广播消息已存储缺省值。
1:广播消息已存储并以格式+CBMI:BMl, <index>向用户显示存储位置。
2:新的广播消息采用2 种格式直接发送给TE 。
+CBM : <length> <pdu> PDU 方式 。
+CBM :<sn>,<mid>, <dcs>,<page>,<pages> <data> Text 方式。
3:对class 3 的广播消息采用<bm>=2 的操作,其他类型的消息采用<bm>=1 的操作
<ds> :用于SMS_STATUS_REPORT, 缺省值为0。
0:不发送SMS-STATUS-REPORT。
1:采用如下格式发送SMS-STATUS-REPORT
+CDS : <length> <pdu> (PDU 方式)
+CDS : <fo>,<mr>, [<ra>] , [<tora>], <scts>,<dt>,<st> (Text 方式)
<bfr> :缺省值为0
0:当<mode> 取值为1-3 时TA 缓冲区中的结果码发送给TE。
1:当<mode> 取值为1-3 时清除TA 缓冲区中的结果码。
命 令:
AT+CNMI=2,1,0,0,0 //<mt>=1
响 应:
OK
响 应:
+CMTI : "SM", 1 //收到新消息的提示
|
|