短消息类(class)的概念:根据指定储存的位置,短消息分为class 0 – 3四个类。也可以不指定类(no class),由ME按默认设置进行处理,存储到内存或者SIM卡中。在TPDU的TP-DCS字节中,当bit7-bit4为00x1, 01x1, 1111时,bit1-bit0指出消息所属类:
00 – class 0:只显示,不储存
01 – class 1:储存在ME内存中
02 – class 2:储存在SIM卡中
03 – class 3:直接传输到TE
GSMModem一般都支持一条“AT+CNMI”指令,可用于设定当有某类短消息到达时,如何处置它:只储存在指定的内存(易失的/非易失的)中,先储存后通知TE,还是直接转发到TE,等等。
“AT+CNMI”指令语法为
AT+CNMI=[<mode>[,<mt>[,<bm>[,<ds>[,<bfr>]]]]]
mode -通知方式:
0 – 不通知TE。
1 – 只在数据线空闲的情况下,通知TE;否则不通知TE。
2 – 通知TE。在数据线被占用的情况下,先缓冲起来,待数据线空闲,再行通知。
3 – 通知TE。在数据线被占用的情况下,通知混合在数据中一起传输。
mt - 消息储存或直接转发到TE:
0 – 储存到默认的内存位置(包括class 3)
1 – 储存到默认的内存位置,并且向TE发出通知(包括class 3)
2 – 对于class 2,储存到SIM卡,并且向TE发出通知;对于其它class,直接将消息转发到 TE
3 – 对于class 3,直接将消息转发到 TE;对于其它class,同mt=1
bm,ds, bfr的含义,请参考相关标准文档。一般不需要去关心它们。
在程序中具体实现时,使用mode=2,mt=1,比较简单。对所有类型的短消息,只要在收到ME送来的“+CMTI”通知后,用“AT+CMGR”指令读取消息内容就行了。TE与ME之间的通信过程,举例如下:
(初始化)
AT+CNMI=?(查看能支持的设置范围)
+CNMI:(0-2),(0-3),(0,2,3),(0,1),(0,1)
OK
AT+CNMI?(查看当前设置)
+CNMI:0,0,0,0,0
OK
AT+CNMI=2,1(设置为mode=2, mt=1)
OK
AT+CNMI?(再查看当前设置)
+CNMI:2,1,0,0,0
OK
(过了一段时间,有一条消息到达)
+CMTI “ME”,8 (通知:消息已经存储在ME内存中,序号为8)
AT+CMGR=8(读第8条消息)
+CMGR:8,27
0891683108200505F0240D91683158812764F80000402052110373800741E19058341E01
OK
AT+CMGD=8(删除第8条消息)
OK
还有一种方式mode=2,mt=2也很令人感兴趣。在这种方式下,除了class 2外,消息不存储,直接转发到TE。需要处理消息通知和内容两种情况,复杂一些。但如果发送方也由程序控制,可以只发noclass或class 1的消息,这样不存储在接收方ME内存(一般是闪存,非易失性的)中,肯定能延长它的使用寿命。TE与ME之间的通信过程,举例如下:
AT+CNMI=2,2(设置为mode=2, mt=2)
OK
(过了一段时间,有一条消息到达)
+CMT:,26
0891683108200505F0040D91683158812764F8000840205211639180064F60597D0021
转自bbs.sendsms.cn
分享到:
相关推荐
### AT+CNMI 的使用详解 #### 一、引言 在移动通信领域,AT+CNMI 是一个非常重要的命令,用于配置短信消息的通知模式、存储位置以及其他相关参数。通过合理配置这一命令,用户可以更好地管理和接收短信消息,特别...
在接收到新短信时,通过AT+CNMI指令设置提示,TC35T会返回+CMTI指示,然后使用AT+CMGR读取短信内容。 在进行短信通信时,需要注意短信中心地址一般不变,但更改后需要重启模块才能生效。部分SIM卡可能需要输入密码...
* AT+CNMI:选择如何接收短信息 * AT+CMGR:读取短信息 * AT+CMGL:按要求列出存储的短信息 * AT+CMGS:发送短信息 * AT+CMGW:写短信息存入存储区 * AT+CMSS:发送存储在存储区的短信息 * AT+CSMP:TEXT 短信模式...
"GSM常用AT指令列表与实例" AT指令是GSM(Global System...AT+CNMI:新信息指示,选择如何从网络上接收短信息。 AT+CMGR:读短信,从+CPMS命令设定的存储器读取。 AT+CMGW:写短信,写入短信到+CPMS命令设定的存储器。
短信指示(SMS Indication)的设置也很重要,通过`AT+CNMI`命令可以控制新短信的提示方式。在示例中,`AT+CNMI=2,1`表示当新短信到达时,会立即显示并保存在SIM卡上。 最后,我们可以通过`AT+CMTI`命令获取SIM卡上...
- `AT+CNMI`:控制新消息通知方式,如`AT+CNMI=2,1,0,0,0`将新短信存储到SIM卡,`AT+CNMI=2,2,0,0,0`则直接通过串口输出,不存入SIM卡。 - `AT+CREG?`:查询网络注册状态,如`CREG: 0,1`表示已注册本地网络,1和5都...
- **新消息提示**:`AT+CNMI=,,,,<d>` - **读取短消息**:`AT+CMGR=<index>` - **列举短消息**:`AT+CMGL=<status>` - **发送短消息**:`AT+CMGS="<phone number>"<text>` - **向内存写入消息**:`AT+CMGW=,...
* AT+CNMI:选择如何接收短信息 * AT+CMGR:读取短信息 * AT+CMGL:按要求列出存储的短信息 * AT+CMGS:发送短信息 * AT+CMGW:写短信息存入存储区 * AT+CMSS:发送存储在存储区的短信息 * AT+CSMP:TEXT 短信模式...
1. **设置AT指令**:首先确保AT+CNMI指令设置正确,即`AT+CNMI=3,1`,以便模块能在收到短信时发送无响应消息。 2. **PPP数据包分析**:仔细分析PPP数据包格式,识别出短信触发的特定模式。案例中提到,每当短信到来...
9. **AT+CNMI** - 显示新收到的短消息。 10. **AT+CPMS** - 选择短消息内存。 11. **AT+CSCA** - 设置短消息中心地址。 12. **AT+CSCB** - 选择蜂窝广播消息。 13. **AT+CSMP** - 设置短消息文本模式参数。 14. **AT...
- **AT+CNMI**: 新消息提示,设置接收到新短信后的通知方式。 - **AT+CMGR**: 读取短消息,从存储区中读取一条或多条短信。 - **AT+CMGL**: 列举短消息,列出存储区中所有短信的信息。 - **AT+CMGS**: 发送短消息,...
- **CNMI**: 控制短信的输出方式,例如 `AT+CNMI=2,2,0,0,0` 会使得接收到的短信立即显示,而 `AT+CNMI=2,1,0,0,0` 则会将短信保存在内存中。 在实际应用中,开发者和系统管理员可以利用这些AT指令对短信猫进行...
- `AT+CNMI`: 控制新消息的即时通知。 6. **网络和SIM卡状态查询**: - `AT+COPS`: 查询或设置网络运营商。 - `AT+CPIN`: 检查或输入SIM卡的PIN码。 - `AT+CREG`: 查询网络注册状态。 7. **其他高级功能**: ...
- **AT+CNMI**:新消息提示,用于设置接收到新短消息时的通知方式。 - **AT+CMGR**:读取短消息,用于读取存储区中的短消息。 - **AT+CMGL**:列举短消息,用于显示所有存储的短消息。 - **AT+CMGS**:发送短消息,...
- `AT+CNMI`:设置新消息通知方式。 - `AT+CMGR`:读取指定的短消息。 - `AT+CMGL`:列出存储的短消息。 - `AT+CMGS`:发送短消息。 - `AT+CMGW`:写入短消息到内存。 - `AT+CMSS`:从内存发送短消息。 - `AT...