2012-08-28 | #1 (permalink) |
论坛管理员
注册日期: 2009-06-30
帖子: 861
|
GSM模块使用文档(短信息部分)
GSM模块使用文档(短信息部分)
1.概述 参考资料: · AT_v8.6.pdf At Command Interface · SMS_PDU-mode.pdf An Introduction to the SMS in PDU mode AT命令: GSM模块与计算机之间的通信协议是一些AT指令集,详见(AT_v8.6.pdf)。每个指令以AT+开头,以回车结尾。每个命令执行成功与否都有相应的返回。其他一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。 控制符: 结束符(<CR>)十六进制的0x0D 发送符(<Ctrl/Z>)十六进制的0x1A 2.常用命令(其他一些相关命令参见附带文档) 2.1开机 首先,要插入SIM卡(插卡时要断开电源),接好天线和电源,等信号指示灯开始闪动时表示模块已经开机,并且注册GSM网络成功。此时模块处于待机状态,当有用户拨号进来时,串口将有相应的提示信息。 要测试模块在此地的信号强度,可发送命令:AT+CSQ+<CR>(返回若含99则表示无信号)。 2.2设置 1. 设置发送短信息的模式:AT+CMGF=0+<CR> 0代表PDU模式;1代表Text模式。 2. 设置短信息接收模式 · 直接串口接收:AT+CNMI=2,2,0,0,0+<CR> 有短信息来时,不经过SIM卡,直接写串口(如果此时端口没打开,则该短信息有可能丢失)。 · 通过SIM卡接收:AT+CNMI=2,1,0,0,0+<CR> 这是缺省设置,主动去读SIM卡中的短信息(建议使用该参数)。详细信息参见(AT_v8.6.pdf 96页) 3. 保存当前模块的参数设置:AT&W+<CR> 详细参数设置参见AT_v8.6.pdf 107页 2.3发送短信息CMGS 2.3.1用Text 模式发送短信息 格式(只能发送160个英文字符) at+cmgf=1<CR> //发送模式设置,设为文本模式 OK AT+CMGS=”13988888888”<CR>Send Message by Text-Mode<Ctrl/Z> // 目的手机号码|结束符|内容 |发送符| +CMGS: 199 //发送返回 OK 参考AT_v8.6.pdf 102页 2.3.2用PDU发送短信息格式(参考SMS_PDU-mode) at+cmgf=0<CR> //发送模式设置,设为PDU模式 OK AT+CMGS=<PDU包的字节数(ddd:三位十进制格式)>//不包含SMSC的长度 00 //SMSC长度,此处省略SMSC <CR> 11 //FO 00 //TP-MR 0D //号码长度 91 //Type of Address 68 //中国的国际区号 <手机号码编码> 00 //PID08 //编码模式:08为Unicode编码,00为Bit7编码,15为Bit8编码 A7 //有效期 <短信息内容编码后的字节数(ff:两位的十六进制)> <短信息内容编码> //Unicode或Bit7或Bit8 <Ctrl/Z> TPDU的组成的几点说明 1. DA目的地址 2. ASCII编码 3. 中文编码 DA 目的地址(参考SMS_PDU-mode 3.1) 例子:0D91683106318834F9 ; 8613601388439 0D(13) Address Length目的电话长度 91 Type of Address 683106318834F9 8613601388439采用Semi-octet representation (参考SMS_PDU-mode 4.5) Bit7编码 用户数据如果为非中文,可采用7-bits characters 7位编码法 此时将dcs=00 (参考SMS_PDU-mode 4.6) 中文编码 用户数据如果为中文,可采用UCS2编码法 此时将dcs=08 将中文直接转换成UniCode。采用WinAPI:MultiByteToWideChar来实现。 Bit8编码 发送任何二进制数据(0x00~0xFF),可采用Bit8编码法 此时dcs=15 每个字节按Hex格式发送,如0x86的Hex格式为:“86”,实际发送“86” 接收方须与发送方协调一致 发送举例 先发送AT+CMGS= YYY [CR] ;其中 YYY 为TPDU的十进制长度,不包括SMSC的长度 发英文用Bit7编码dcs=00,编码前用户数据最大长度为160字节 发中文用UCS2编码dcs=08,编码前用户数据最大长度为70字 发送二进制数据用Bit8编码dcs=15,编码前用户数据最大长度为140字节 1. 用Bit7编码发送英文信息 以下例子发送到13606809135 报文是1234 用Bit7译码为 0431D98C06 04 长度 数据31D98C06 1234的Bit7编码 具体AT命令 AT+CMGF=0[CR] 设为PDU格式 AT+CMGS=019[CR] 0011000D91683106869031F50000A70431D98C06[Ctrl/Z][CR] 2. 用UCS2编码发送中文信息 以下例子发送到 13603021052 报文是你好 用UCS2译码为 044F60597D 04 长度 数据 4f60597d 汉字UniCode码 具体AT命令 AT+CMGF=0[CR] 设为PDU格式 AT+CMGS=019[CR] 0011000D91683106031250F20008A7044F60597D[Ctrl/Z][CR] 3.用Bit8编码发送二进制数据 以下例子发送到 13857162075 报文是0x86 0x40 用Bit8译码为 8640 02长度 具体AT命令 AT+CMGF=0[CR] 设为PDU格式 AT+CMGS=017[CR] 0011000D91683158172670F50015A7028640[Ctrl/Z][CR] 2.4接收短信息CMGR 如果是通过SIM卡接收短信息,则应该先得到新的短信息到的通知信息(即监视串口的+CMTI<新短信息的索引号>)。 如果是不通过SIM卡接收短信息,则要实时处理串口的+CMT<短消息包结构> 用Text 模式接收短信息格式 AT+CMGR=1<CR> 按Text模式分解返回包 用PDU接收短信息格式 AT+CMGR=0<CR> 按PDU模式分解返回包 2.5删除短信息CMGD AT+CMGD=<短信息索引号><CR> 2.6列出SIM卡中短信息CMGL 利用该命令可以读出SIM卡中未读的短信息。 AT+CMGL=”ALL”<CR> //文本模式下读未读短信息 AT+CMGL=0<CR> //PDU模式下读未读短信息 3.注意事项 使用好模块的关键的两个问题: 1. 处理好发送的命令与它的返回同步; 2. 及时处理好一些非预期的事件,将没有用的信息扔掉。
__________________
让世界倾听我们的笛声 |