GSM模块,顾名思义就是用来与手机进行点对点发送短信(文字、图片以及各种数据),需要将手机卡插入模块中,再用串口线与PC机相连(嵌入式方面,与单片机或者ARM相连)。

GSM短信编码。一种是文本模式(text模式),另一种是PDU模式;

(1)文本模式,发送的数据只能是ASCII码,即普通字母和其他符号,国内不支持中文发送。通过串口通信发送"AT+CMGF=1",将GSM短信发送方式更改为文本模式。文本模式下接收的数据会自动解码,比如你收到一条短信息,GSM会返回:+CMGR: "REC UNREAD","+8613806XXXXXX",,"11/10/21,13:22:13+32"
hello;不需要自己解码,便可得到短信的发送者、发送时间和短信内容

(2)PDU模式,短信编码方式包括三种,即7-bit 编码、8-bit 编码和UCS2 编码。

PDU接收串(接收到信息的字符串)的编制原理:

08//SMSC地址信息的长度共8 个八位字节(包括91)

91//国际号码格式即"+"

683108505905F0//服务号码,即8613800595500
04 //基本参数发送
0D //13个发送号码的信息长度
91//国际号码格式即"+"

683151558321F5 //发送者的号码,即8613155538125
00  //协议标识
08  //编码方式,08--USC2,00--7-bit

01704271612023  //接收时间戳,即2010-07-24/17:16:02
04 //10进制的位数转化为16进制数
64E64F60//消息内容编码

PDU发送串(发送信息的字符串)的编制原理:

00//服务号码信息长度为0

11//没有多余信息的发送,即不包括服务号码信息

00//消息基准值(TP-MR) 0

0D//13个发送号码的信息长度

91//国际号码格式即"+"

683151558321F5//发送者的号码,即8613155538125

00//协议标识是普通GSM 类型,点到点方式

08//编码方式,08--USC2,00--7-bit

00//有效期

06//信息长度

4F60597D0021//信息内容,USC2编码

(a)、7-bit 编码:用于发送和接收ASCII编码(普通的字母和其他符号),当你收到的短信都是ASCII时,这时你的编码方式就是7-bit编码。

7-bit编码方式:就是将上面表中的源串转为目标十六进制。

源串   H   e   l   l   o   !
源十六进制   0x48    0x65    0x6c    0x6c    0x6f    0x21
源二进制    1001000 1100101 1101100 1101100 1101111 100001
编码过程    不足位时,由下一位的末尾数字补足
目标二进制   11001000    00110010    10011011    11111101    00001110    01
目标十六进制0xc8  0x32    0x9B    0xFD    0x0E    0x01
目标串 C8       32       9B       FD        0E       01

7-bit解码方式:就是将上面表中的目标十六进制转为源串。

(b)、8-bit编码:用于发送和接收数据消息,如图片或铃声等,普通的短信不回用到;

(c)、UCS2编码:用于发送和接收Unicode字符,即含有中文的信息;

接收

UCS2编码方式

1、将字符串转为unicode编码

2、将unicode编码转为UCS2编码。首先我们知道UCS2编码是将单个字符转化为16位的宽字符,即由这个字符的unicode转化为十六进制,高二位补0(注意:字符串的长度为2位的16进制数,PDU模式中字符串长度为原始消息的2倍,我要发的消息UCS2编码的头两位位字符串的长度)。

上面的内容为GSM模块接收信息的发送信息的处理,我们要怎么接收和发送信息呢?

我们需要用AT指令来操作。关于AT指令的介绍,这里不多加描述。

查看GSM是否连接正常:

AT

返回OK

设置短息存储以及提醒:

"AT+CNMI=2,1,0,0,1\r\n";

//2: 通知TE。在数据线被占用的情况下,先缓冲起来,待数据线空闲,再行通知。

//1:储存到默认的内存位置,并且向TE发出通知(包括class3)

设置回显:

ATE0 //不可回显

ATE1 //可回显

选择发送消息的格式:

AT+CMGF=0//PDU

AT+CMGF=1//TEXT

发送信息:

PDU模式:

AT+CMGS=21 ,(pdu约定固定长度15+发送的报文的长度(16进制数))
              >0011000D91683169512363F1000800064F60597D0021//末尾加0x1a

TEXT模式:

AT+CMGS="号码"

>内容//末尾加0x1a

查看短信

AT+CMGR=index //短信存储的索引号

删除短信

AT+CMGD=index

GSM模块的知识就讲到这里,欢迎评价指出不足的地方

转载请注明本文章地址:

http://blog.csdn.net/hsl17/article/details/6895100

GSM MODEN短信发送模块详解(短信的读取、发送过程和编码、解码过程)相关推荐

  1. nginx的负载均衡模块详解

    反向代理与负载均衡的概念: Nginx仅仅是作为nginx proxy反向代理使用,nginx其实是反向代理,只不过是有负载均衡的功能! 安装Nginx负载均衡 官网Nginx模块讲解 模块详解 up ...

  2. Pygame最常用的模块详解

    Pygame最常用的模块详解 参考:pygame详细教程 参考案例:游戏模块 1. Color类 class pygame.Color Pygame 中用于描述颜色的对象. Color(name) - ...

  3. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  4. python中logging模块详解_python logging日志模块详解

    logging 日志模块详解 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这 ...

  5. 基于多相滤波器的数字信道化算法详解(Python, Verilog代码已开源)

    基于多相滤波器的数字信道化算法详解 推导过程 总结 仿真 本文详细介绍了基于多相滤波器的数字信道化算法的推导过程, 如果您在阅读的过程中发现算法推导过程中有任何错误, 请不吝指出. 此外, 进入我的G ...

  6. 【Python】python之subprocess模块详解

    [Python]python之subprocess模块详解 subprocess模块 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/out ...

  7. mod_rewrite模块详解(转)

    mod_rewrite模块详解(转)[@more@] Apache模块 mod_rewrite mod_rewrite模块提供了一个基于规则的(使用正则表达式分析器的)实时转向URL请求的引擎.支持每 ...

  8. Linux智能家居m0代码,看过来!智能家居4大模块详解

    原标题:看过来!智能家居4大模块详解 关注我们 做新生代程序员! (一)什么是智能家居: 智能家居可以理解为一个控制系统,通过物联网将家里的智能设备连接起来,通过手机控制,远程控制,自动控制,语音控制 ...

  9. Python3.5 queue 模块详解 和 进程间通讯

    queue - A synchronized queue class:https://docs.python.org/3/library/queue.html 菜鸟教程 - Python3 多线程:h ...

最新文章

  1. matlab读取一个文件的图片大小,Matlab读取文件夹中子文件夹中的图片并修改尺寸...
  2. Powershell管理系列(十)邮件联系人及邮件用户的管理
  3. 机器学习:基于关联规则的多标签分类器
  4. 用DMA方式从串行USART口连续接收数据,怎样确认收到一个完整的包讨论
  5. 基于线性调频(LFM)信号分数阶傅里叶变换的多径时延估计
  6. Tomcat无需输入项目名,直接用域名访问项目
  7. QImage QPixmap Mat区别
  8. 程序员穿特步鞋相亲被拒!特步:怪我喽?
  9. 9001.消息中间件zeroMQ
  10. useState使用和原理
  11. android studio 如何导入 RecyclerView
  12. 标准盒模型和怪异盒模型小结
  13. 谈谈双活业务中心和异地容灾备份设计
  14. js打开手机摄像头实现扫描二维码功能
  15. 什么是入侵检测系统?有哪些分类?
  16. 爱普生Epson PictureMate 240 打印机驱动
  17. 支持向量机(SVM)MATLAB 实例讲解,及选择训练方式使误差率尽可能减为0
  18. uni-app【多媒体API】
  19. VC++常用功能开发汇总
  20. 机器学习中输入空间、特征空间、假设空间

热门文章

  1. JVM的GC回收算法、GC收集器以及内存分配策略
  2. python集合中的元素不允许重复_Python语言中同一个集合中的元素不会重复,每个元素都是唯一的。-智慧树Python数据分析与数据可视化章节答案...
  3. 2022 RoboCom 世界机器人开发者大赛-高职组(省赛)RC-v7 燕归来
  4. auto.js开发网课搜题浮窗软件,类似按键精灵可浮窗式快速搜题
  5. ConTeXt 插入Visio图解决方案
  6. DOS界面下的翻译软件制作
  7. 重磅开讲 | 图灵奖得主—— Joseph Sifakis
  8. Codeforces Round #628 (Div. 2) C. Ehab and Path-etic MEXs
  9. 两度冲刺港交所,润歌互动大浪淘沙如何出金?
  10. 使用ADODB在C#