【GSM】GTM900C的应用——短信
虽说GSM已经很老旧,但其低廉的价格,非常适合一些需要小数据上网传输和短信等功能的应用场合。 不知道GSM能否像51单片机一样,在低端应用中长久不衰。GTM900C发送短信,支持两种模式,TXT和PDU。TXT模式指令简单,操作方便,但不支持中文。PDU模式最通用,因为能发送所有的世界上所有国家的字符,但操作稍微有些复杂。本文介绍使用PDU模式开发收、发短信功能。
避免重复造轮子:请参考网友博客。注意:AT指令均以回车换行结尾。
拿到GTM900C,成功发送一条短信需要以下步骤:
1、初始化模块
步骤1:上电
说明:模块上电后,自我初始化成功,会通过串口输出AT-Command Interpreter ready

步骤2:测试串口
说明:串口通信不成功,主控模块应做处理
发送指令:AT
应答指令:AT
OK

步骤3:关闭回显
说明:串口通信成功,指令不管正常或异常都有应答,就不再需要回显。
发送指令:ATE
应答指令:OK

步骤4:测试SIM卡
说明:SIM不存在,应做处理。
发送指令:AT%TSIM
应答指令:%TSIM 1
OK

步骤5:测试信号质量
说明:质量太差,应做处理。
发送指令:AT+CSQ
应答指令:+CSQ:20,99
OK

2、短信编码
短信编码就是按照固定的协议,把用户短消息内容加上各种协议内的配置参数,封装成一条可以传输、解析的数据流。具体编码函数可以拿来主义,验证下即可,不要重复造轮子。
举个例子:一条完整的PDU编码后的短信如下:
0891683108200505F011000D91683196032930F000000006C8329BFD0E01
08,91,68 31 08 20 05 05 F0,11 00 0D ,91 ,68 31 96 03 29 30 F0 ,00 00 00 06 C8 32 9B FD 0E 01 //(加逗号间隔开)
其中,此PDU编码结构如下:
08:短信中心号码长度(+8613800250500转换成91683108200505F0,一共8个字节)。
91:国际格式(号码前的符号“+”)。
682108200505F0:短信中心号码(8613800250500,规律:末尾补F,每两位内翻转)
11:固定,基本参数。
00:固定,消息基准值。
0D:目标号码数字个数(不包含“+”和“F”),有可能此值为0B(目标号码格式就不带86)。
91:国际格式(号码前的符号“+”),81是小灵通。很奇怪的事,使用81能成功发送短信,也能正确接收,但使用91能成功发送,但接收不到。
683196032930F0:目的手机号码(8613693092030)
00:固定,协议标识。
00:编码模式,00-7bit,04-8bit,08-USC2。
00:00-有效时长5分钟。
06:用户信息长度,不同编码下,用户数据长度(字节)不同。
C8329BFD0E01:用户信息内容。
3、发送
步骤1:设置PDU模式
发送指令:AT+CMGF=0
应答指令:OK

步骤2:发送PDU编码长度
说明:PDU编码长度是源手机号码之后的字节数。
发送指令:AT+CMGS=16
接收指令:>

步骤3:发送1A
说明:发送1A(Hex)后,有应答,此时才发送成功。
发送指令:1A
应答指令:+CMGS: 35
OK
【GSM】GTM900C的应用——短信的更多相关文章
- Moto C118 基于 Osmocom-BB 和 OpenBTS 搭建小型GSM短信基站
此文章PDF文档下载地址:点击下载 0x00 写在前面 大家应该都听说过摩托罗拉C118配合Osmocom-BB实现GSM网络下的短信拦截功能吧,在14年左右新出了一种玩法就是Osmocom-BB的s ...
- android-----test------模拟来电提醒和短信提醒
为了测试应用是否能处理来电提醒和短信提醒时正常处理,我们需要做个测试,怎么模拟来电提醒和短信提醒呢?? 采用Telnet 命令来模拟. 1.首先看看Telnet 命令是否可以使用,如果不可以使用,则需 ...
- VB短信猫开发包,支持超长短信
一.短信猫开发包(长短信/异步调用)说明: 短信猫开发包以OCX控件的形式提供,支持Windows平台下常用的开发工具:如VB.VB.net.VC++.Power Builder.C#.DELPH ...
- 【转】如何向Android模拟器打电话发短信
转载地址:http://hi.baidu.com/jeremylai/item/420f9c9fe4881fccb62531f7 1. 启动Android Emulator, 查看标题栏找出端口.一般 ...
- 黑客炼金术士 Seeker:可以攻破 4G 摸到你短信,还要为朝阳群众提供谍战工具
在北京上地的一家咖啡馆里,我在等待黑客 Seeker 的到来. 我对黑客 Seeker 颇有期待.他曾在黑客大会 KCon 上演讲<伪基站高级利用技术——彻底攻破短信验证码>,介绍利用 L ...
- 【Android】Android 发送短信和打电话的方法
发送短信的方法 有两种方法可以实现发送短信,其一是使用intent-startActivity,URI数据格式为"smsto:num",调用的action为Intent.ACTIO ...
- SIM900A—发送、接收中英文短信
文章目录 一.SMS简介 二.短信的控制模式与编码 1.Text Mode 2.PDU Mode 3.GSM编码 4.UCS2编码 三.收发英文短信 1.AT+CPMS查询短信数量 2.AT+CNMI ...
- GSM 短信相关AT指令(转)
// AT+CSMS 选择消息业务AT+CSMS=0 // SMS 的AT 命令兼容GSM 07.05 Phase 2AT+CSMS=1 // SMS 的AT 命令兼容GSM 07.05 Phase ...
- GSM短信侦听的便宜方案
侦听GSM短信常用的是OsmocomBB + C118方案,主要是用luca/gsmmap分支.使用ccch_scan这个程序可以把通信封装成GSMTAP发给本机,然后用WireShark接收GSMT ...
随机推荐
- 利用select实现IO多路复用TCP服务端
一.相关函数 1. int select(int maxfdp, fd_set *readset, fd_set *writeset, fd_set *exceptset,struct timeva ...
- 前端学HTTP之代理
前面的话 Web代理(proxy)服务器是网络的中间实体,位于客户端和服务器之间,扮演“中间人”的角色,在各端点之间来回传送HTTP报文.本文将介绍HTTP代理服务器相关内容 中间实体 Web上的代理 ...
- jvm系列(三):java GC算法 垃圾收集器
GC算法 垃圾收集器 概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计 ...
- 读书笔记--SQL必知必会12--联结表
12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...
- J2EE 邮件发送那些事儿
距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...
- VS中C++ 项目重命名
应该都有过这样的经历,在Visual studio中创建解决方案,添加几个项目进去,然后开始愉快的敲代码....写代码正欢的时候,却总是感觉那里有些不舒服,一细看,这项目名称取的真心挫,修改个吧.直接 ...
- 国内maven镜像,快的飞起
在oschina关来关去的烦恼下,终于受不了去寻找其他公共库了. 阿里云maven镜像 <mirrors> <mirror> <id>alimaven</id ...
- 联想 Thinkpad X230 SLIC 2.1 Marker
等了好久,终于等到了 X230 的 SLIC 2.1 的 Marker !特发帖备份... 基本情况 笔记本:Lenovo X230(i5+8G+500G) 操作系统:Windows 7 Pro x6 ...
- Docker 基础 : 数据管理
用户在使用 Docker 的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据的共享,这必然涉及容器的数据管理操作.容器中管理数据主要有两种方式:数据 ...
- Linux下的解压命令小结
Linux下常见的压缩包格式有5种:zip tar.gz tar.bz2 tar.xz tar.Z 其中tar是种打包格式,gz和bz2等后缀才是指代压缩方式:gzip和bzip2 filename. ...