欢迎看看我的另一个小窝,可能会有意外的惊喜哦^_^ www.devres.info

本文以一个实例来解说AT指令发送PDU短信的全过程。

在说明PDU编码规则之前,提示一下刚接触到GPRS模块的同仁。我用的是西门子的GPRS模块,开始用它自带的九针转十五针的串口线来连接PC机,然后用超级终端来写AT指令发送数据,发现在终端界面里写不了任何指令。后来发现该模块所带的串口线为直连的,所以我自已做了一根交叉串口线来连接PC和GPRS,结果就好了。

假如我要发送下面的短信:
接收号码:+8613602433649
短信内容:工作愉快!
短信中心号码:+8613800200500

一、短信中心号码处理:用字符串 addr 表示
1、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
即 addr = "+8613800200500"
=> addr = "8613800200500F"
2、将奇数位和偶数位交换。
=> addr = "683108020005F0"
3、将短信息中心号码前面加上字符91,91是国际化的意思
=> addr = "91683108020005F0"
4、算出 addr 长度,结果除2,格式化成2位的16进制字符串,16 / 2 = 8 => "08"
=> addr = "0891683108020005F0"

二、手机号码处理:用字符串 phone
1、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
即 phone = "+8613602433649"
=> phone = "8613602433649F"
2、将手机号码奇数位和偶数位交换。
=> phone = "683106423346F9"

三、短信息部分处理:用字符串 msg 表示
1、转字符串转换为Unicode代码,例如“工作愉快!”的unicode代码为 5DE54F5C61095FEBFF01, 
2、将 msg 长度除2,保留两位16进制数,即 5DE54F5C61095FEBFF01 = 20 / 2 => "0A",再加上 msg
=> msg = "0A5DE54F5C61095FEBFF01"

四、组合
1、手机号码前加上字符串 11000D91(1100:固定,0D:手机号码的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81),
即 phone = "11000D91" + phone
=> 11000D91683106423346F9
2、手机号码后加上 000800 和刚才的短信息内容,000800也写死就可以了
即 phone = phone + "000800" + msg
即 11000D91683106423346F9 + 000800 + 0A5DE54F5C61095FEBFF01
=> phone = 11000D91683106423346F90008000A5DE54F5C61095FEBFF01
3、phone 长度除以2,格式化成2位的十进制数
即 11000D91683106423346F90008000A5DE54F5C61095FEBFF01 => 50位 / 2 => 25

五、所以要发送的内容为
AT+CMGF=0 <回车>
OK
AT+CMGS=25<回车>
> addr+phone <Ctrl+Z发送>

六、如果返回不是ERROR,恭喜你,发送成功了^_^
http://blog.sina.com.cn/s/blog_465acfe10100cnwa.html

GPRS模块中AT指令发送短信的PDU编码规则相关推荐

  1. SMS短信的PDU编码规则

    先来看两张图: 1. 发送方PDU格式SMS-SUBMIT-PDU *1Message type (1 octet)                                           ...

  2. java 指令发送短信_Java短信发送机的实现

    今天早上回来就产生了一个想法,不如用j2me实现一个短信发送机的程序,然后只需要填入几个数字就可以实现短信的自动发送等. 经过大概2个小时的奋斗,终于写好了,并且在多部不同品牌的机器运行良好,而且很实 ...

  3. twilio php 发送短信,在PHP中通过twilio发送短信

    我正在尝试通过php发送短信,但我听不到我的问题. 我的帐户已经过验证并且是高级帐户(不是免费的),URL正确后即需要,并且我更改了accountSid和AuthToken, require_once ...

  4. linux 下GPRS模块使用sim900打电话发短信

    ---------------------------------------------  主机操作系统:Centos 6.7 开发板平台: FL2440  Linux内核版本: linux-3.0 ...

  5. AT指令发送短信流程及接听、拨打电话

    一.英文短信 发:AT 收:OK 发:AT+CMGF=1  收:OK 发:AT+CMGS="+8615083111880" 收:> 发:data       //data 为 ...

  6. 短信猫编程的一些资料1(At指令发送短信)

    现在正在做TC35的项目, 下面分享一下这几天在网上找到的资料: 手机 SMS PDU 格式参考手册 1.相关的GSM   AT指令     与SMS有关的GSM   AT指令(from   GSM0 ...

  7. 【毕业设计教程】单片机发送短信消息(GMS模块) - 物联网 嵌入式 stm32

    文章目录 1 简介 2 GMS模块 3 技术规格 3.1 适应性 4 arduino + GMS 示例代码 5 实现效果 6 最后 1 简介 Hi,大家好,这里是丹成学长,今天向大家介绍如何使用GMS ...

  8. GSM/GPRS之三-短信格式及编码

    目录: 概述 短信传输 一.短信猫操作分为三种模式: Block.PDU 和 Text 二.短信传送有三种编码: 7 位, 8 位, UniCode 三.地址编码 四.编码示例 1.发送信息的 PDU ...

  9. 短信猫AT+CMGL指令接收短信明明有短信但串口调试就是错误

    本文章主要给新手不常看AT指令详细说明书进行快速参考,或者有些老手一时大意忘记了,AT+CMGL读取指令的前提设置导致无法读取短信的问题.我偶尔给客户检测设备售后也会因为忘记了前置设置而无法读取短信, ...

最新文章

  1. 效能改进之项目例会导入实践
  2. 搭建Python+Eclipse开发环境
  3. ArrayBlockingQueue原理分析
  4. 安全编程: 防止缓冲区溢出
  5. php thumbs.db,window_Win8系统删除thumbs.db文件的方法,  最近有Win8系统用户反映, - phpStudy...
  6. 使用Java Servlet,JSP标签和Stormpath快速构建Java Web App
  7. idea提高调试超时_如何提高您的调试技能
  8. Shell declare的使用方法
  9. python 回归 显著_Python数分:回归分析
  10. python基础--合并两个列表
  11. 【渗透测试】kali使用教程(一):常用命令和基本工具使用
  12. linux系统中打rz命令后出现waiting to receive.**B0100000023be50
  13. web前端学习的职业发展方向
  14. 16S多样性测序,到底该选啥引物?!
  15. 开源项目——小Q聊天机器人V1.3
  16. 数据分析大数据面试题大杂烩01
  17. 为什么用python画图_怎么用python画图
  18. Class Activation Mapping(CAM)介绍
  19. 微信小程序开发-开发入门(一)
  20. 可视化脑洞|1896年以来奥运奖牌数据背后的故事

热门文章

  1. BIM轻量化技术解析
  2. [敏捷开发]研发管理 开发过程管理
  3. IPD的决策评审DCP(1):概念、战略性
  4. 指针:C语言二级指针与二维数组
  5. DCDC开关电源学习
  6. js在html之前加载,js加载前显示loading(页面加载前)
  7. 计算机硬件英语词汇,计算机硬件英语词汇
  8. 机器学习算法之聚类算法拓展:K-Means和Mini Batch K-Means算法效果评估
  9. 无线局域网(WLAN)
  10. 【合天网安】FCKeditor 2.4.3文件上传漏洞