GPRS短信整理

来源:互联网 发布:stc单片机远程升级 编辑:程序博客网 时间:2024/05/17 02:49

      这些天玩了一下SIM300C的短信功能,感觉还是有点意思,呵呵!经过几个昼夜的把玩终于搞定了,收到了发到自己手机上的短信,感觉还是很好的,在这里将整个过程整理一下。

   短信分为TEXT模式和PDU模式,前者只能发送字符和英文,比较简单所以就不在多写。重点看看后者是如何发送中文短信的。发送短信需要两个AT指令:1. at+cmgf=0(0为PDU格式);2:AT+CMGS=**这里是短信的(所有的字节长度-18)/2,之后模块返回>符号,就可以输入短信的编码了!

  下面就重点说一下短信的编码:

1.    所有编码是以字符的方式发送的,例如:

>0011 000D 9168 3107 0482 06F0 0004 0103 4141 41<^Z>

00:SMSC地址信息的长度;即中心号码长度,00代表为空.

11:基本参数(TP-MTI/VFP);

00:消息基准值(TP-MR);//信息类型(TP-Message-Reference)

0D:目标地址数字个数;

91:目标地址格式(TON/NPI);

68 3107 0482 06F0:目标地址(TP-DA);

00:协议标识(TP-PID);TP-Protocol-Identifier

04:用户信息编码方式(TP-DCS);TP-Data-Coding-Scheme

01:有效期(TP-VP);TP-Valid-Period

03:用户信息长度(TP-UDL);(此处的长度为16进制)

4141 41:用户信息(TP-UD);//其内容是三个大写AAA

说明:18是PDU长度 17 + 1

第一,对模块写入 AT+CMGF=0<回车> 的AT命令(<回车> 要用 \r 来实现),之后应该得到一个 OK 响应,才能继续进行下一步;

第二,对模块写入 AT+CMGS=<length><回车> 的AT命令(其中 <length> 是一个数字,该数字是代表了PDU串中某一部分的长度,这一部分就是指除了SMSC地址之外的那一部分),之后应该得到一个 \r\n> \r\n 响应(特别要注意:\r是回车,\n是换行,>是一个大于号,>后面还有一个空格!),才能继续进行下一步;

第三,可以开始写入要发送的内容了。这一部分只是PDU串中的一部分,并不是完整的PDU串(如前所述,去掉了SMSC地址那一部分),这一部分要以 Ctrl+Z 结尾,但是我们要知道,在字符串中要带上 Ctrl+Z 的话,必须是用ACSII码。Ctrl+Z的ASCII码是16进制的 1A ,所以你可以在你的字符串后面用strcat函数附加上 "\x1A " 来实现。

这样之后,如果发送成功,你就会收到GSM模块的一个发送成功的响应,形如:

         +CMGS: 246

         OK

 

原创粉丝点击