极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13807|回复: 0

GSM模块辅助理解

[复制链接]
发表于 2016-2-24 13:21:30 | 显示全部楼层 |阅读模式
上一篇帖子的附加篇,如果有不够清楚的的可以参照以下内容进行理解;
我用了比较长时间摸索清楚arduino GSM模块发送中文短信的方法,上一篇更清晰明确,这篇附加内容多一些,可以参考
用两条AT指令发中文短信
设置为PDU模式
AT+CMGF=0或1回车 //设置短信编码方式  0为PDU模式 1为TEXT模式 TEXT模式只支持字母或数字,要发中文短信,只能用PDU模式 C表达如下:
"AT+CMGF=0/r/n"
发送短信
"AT+CMGS="
pdu的编码格式
08 //短消息中心长度
91 //短消息中心有国家编码 没有为81
68 31 08 02 00 05 f0 //短消息中心
31 //需要状态报告//不需为11
00 //永远为00 //分割符
0D //目标号码的长度14位
91 //有国家编码//没有为81
68 31 36 32 64 49 F0 //目标号码 +8613632346940
00 //TP-PID.协议标识,一般为00 是普通 GSM  类型,点到点方式
08 //是否免提//是为18
A7 //有效期标志
04 //正文4字节
4F 60 59 7D //你好 短消息内容
若没有短消息中心,编码为:
00 //表示默认短消息中心
31 //需要状态报告//不需为11
00 //永远为00 //分割符
0D //目标号码的长度14位
91 //有国家编码//没有为81
68 31 36 32 64 49 F0 //目标号码 +8613632346940
00  //TP-PID.协议标识, 是普通 GSM  类型,点到点方式
08 //是否免提//是为18
A7 //有效期标志
04 //正文4字节
4F 60 59 7D //你好 短消息内容
以上是有位兄台博客上写的,简单说,短信的PDU编码包格式如下
短信中心号码 机器配置标志 目标电话号码 机器配置标志 短信内容
短信中心号码:
      短信中心号码长度:(连后面的91有没发送国家编码标示符一起算 字符总数除以2 的十六进制数的 ASCII码值)
      是否发送国家编码标示符(91为有发送 则电话号码前加86,81没有发送)
      短信中心号码:福州联通的为13010380500(各个地区不一样)如果前面的是否发送国家编码 标志
           为91则 号码前应加86(中国的国际编码) 即8613010380500  如果号码的字符个数为奇数则号码最后要补个 F 来凑成偶数 即8613010380500F 最后把字符奇偶位对调 短信中心号码就变成这样 683110300805F0
   是不是快晕了??幸运的是一般来说SIM卡出厂时会预先存好短信中心号码 用指令 AT+CSCA?回车 来获取短信中心号码看看就 知道了 如果看到返回如下 +CSCA: "+8613010380500",145 则已经存在  如果没有,也可以用指令 AT+CSCA="+8613010380500"回车 来设置短信中心号码  现在就可以用 00 代替上面那么麻烦的一串。
机器配置标志:3100 或 1100
目标电话号码:
     目标电话号码长度:目标电话号码(不包含 91哦!)的字符数 的十六进制数的ASCII码值
     是否发送国家编码标示符:91
     目标电话号码:打包方式和上面短信中心一样
   比如我我的电话13860619634 打包好就成了 0D91683168609163F4  目标电话号码是不能省的,当然如果你要发给自己的话,也可以用 00 代替上面这么麻烦的一串,呵呵。
机器配置标示:000800
短信内容:
     短信长度:短信内容的UNICODE编码(Big-Endian的哦)十六进制数 的ASCII字符长度 除以2(即短信字数乘于2 也就是短信占用的字节数 UNICODE编码一个字符占两个字节) 的十六进制数 的ASCII码值
     短信内容:你要说的话的UNICODE编码十六进制数 的ASCII字符  比如 我想你 621160F34F60
发送一条短信的过程大致如下:
AT指令  短信字节数   换行符 /r   短信的PDU编码包   十六进制数0x1A(就是Ctrl+Z的码值)
具体说 发送过程是这样的:
1.发AT指令 AT+CMGS= 的字符串(即ASCII码值)
2.发短信PDU编码包的长度(PDU编码包 除短信中心外 的字符个数除以2) 的BCD码 的ASCII码值
3.发'/r'
4.发上面打包好的短信PDU编码包
5.发0x1A
现在你可以试试了,接好手机打开串口调试助手选好串口 然后发送下面的
AT+CMGF=0
AT+CMGS=21
0011000D91683185292747F000080006621160F34F60
发给我,内容 我想你
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 02:11 , Processed in 0.064410 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表