虽说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的应用——短信的更多相关文章

  1. Moto C118 基于 Osmocom-BB 和 OpenBTS 搭建小型GSM短信基站

    此文章PDF文档下载地址:点击下载 0x00 写在前面 大家应该都听说过摩托罗拉C118配合Osmocom-BB实现GSM网络下的短信拦截功能吧,在14年左右新出了一种玩法就是Osmocom-BB的s ...

  2. android-----test------模拟来电提醒和短信提醒

    为了测试应用是否能处理来电提醒和短信提醒时正常处理,我们需要做个测试,怎么模拟来电提醒和短信提醒呢?? 采用Telnet 命令来模拟. 1.首先看看Telnet 命令是否可以使用,如果不可以使用,则需 ...

  3. VB短信猫开发包,支持超长短信

    一.短信猫开发包(长短信/异步调用)说明:   短信猫开发包以OCX控件的形式提供,支持Windows平台下常用的开发工具:如VB.VB.net.VC++.Power Builder.C#.DELPH ...

  4. 【转】如何向Android模拟器打电话发短信

    转载地址:http://hi.baidu.com/jeremylai/item/420f9c9fe4881fccb62531f7 1. 启动Android Emulator, 查看标题栏找出端口.一般 ...

  5. 黑客炼金术士 Seeker:可以攻破 4G 摸到你短信,还要为朝阳群众提供谍战工具

    在北京上地的一家咖啡馆里,我在等待黑客 Seeker 的到来. 我对黑客 Seeker 颇有期待.他曾在黑客大会 KCon 上演讲<伪基站高级利用技术——彻底攻破短信验证码>,介绍利用 L ...

  6. 【Android】Android 发送短信和打电话的方法

    发送短信的方法 有两种方法可以实现发送短信,其一是使用intent-startActivity,URI数据格式为"smsto:num",调用的action为Intent.ACTIO ...

  7. SIM900A—发送、接收中英文短信

    文章目录 一.SMS简介 二.短信的控制模式与编码 1.Text Mode 2.PDU Mode 3.GSM编码 4.UCS2编码 三.收发英文短信 1.AT+CPMS查询短信数量 2.AT+CNMI ...

  8. GSM 短信相关AT指令(转)

    // AT+CSMS 选择消息业务AT+CSMS=0 // SMS 的AT 命令兼容GSM 07.05 Phase 2AT+CSMS=1 // SMS 的AT 命令兼容GSM 07.05 Phase ...

  9. GSM短信侦听的便宜方案

    侦听GSM短信常用的是OsmocomBB + C118方案,主要是用luca/gsmmap分支.使用ccch_scan这个程序可以把通信封装成GSMTAP发给本机,然后用WireShark接收GSMT ...

随机推荐

  1. MVC5网站开发之一 总体概述

    由于前几次都没能写完,这次年底总算有自由时间了,又想继续捣鼓一下.于是下载了VS 2015专业版(不知为什么我特别钟爱专业版,而不喜欢企业版).由于以前的教训,我这次决定写一个极简的Deom,简到什么 ...

  2. 了解HTML表单之form元素

    前面的话 表单是网页与用户的交互工具,由一个<form>元素作为容器构成,封装其他任何数量的表单控件,还有其他任何<body>元素里可用的标签 表单能够包含<input& ...

  3. Java 快速排序两种实现

    快速排序,只要学习过编程的人肯定都听说过这个名词,但是有时候写的时候还真蒙住了,网上搜罗了下以及查阅了"introduction to algorithm",暂时找到两种实现快排的 ...

  4. SSRS 实用技巧 ---- 为表格添加展开/折叠操作(明细报表)

    相信很多人都会遇到这样的需求:当表格按照某几个列分组时,需要为组添加展开和折叠的操作. 最初展现表格的时候只展现最外层分组,然后点击展开后可以查看分组内的明细情况. 先来一张效果图,然后再看具体如何实 ...

  5. 利用Python进行数据分析 基础系列随笔汇总

    一共 15 篇随笔,主要是为了记录数据分析过程中的一些小 demo,分享给其他需要的网友,更为了方便以后自己查看,15 篇随笔,每篇内容基本都是以一句说明加一段代码的方式, 保持简单小巧,看起来也清晰 ...

  6. Angular 基础入门

    简介 什么是AngularJS 一个功能非常完备的前端框架,通过增强HTML的方式提供一种便捷开发Web应用程序的方式 其核心特点就是几乎无任何DOM操作,让开发人员的精力和时间全部集中于业务 MVC ...

  7. User Growth Using Deeplink. (part1)

    转载请注明来源 http://www.cnblogs.com/hucn/p/5917924.html 活跃人数是衡量app一项关键指标, dau, mau, 有了流量才能给业务发展提供养分和空间. a ...

  8. 怎样在Redis通过StackExchange.Redis 存储集合类型List

    StackExchange 是由StackOverFlow出品, 是对Redis的.NET封装,被越来越多的.NET开发者使用在项目中. 绝大部分原先使用ServiceStack的开发者逐渐都转了过来 ...

  9. ASP.Net MVC——DotNetZip简单使用,解决文件压缩问题。

    准备工作: 在vs工具栏中找到NuGet 下载DotNetZip 现在就可以使用DotNetZip强大的类库了,在这里我给出一些简单的使用. public ActionResult Export() ...

  10. 严重: Exception sending context initialized event to listener instance of class

    问题描述:Exception sending context initialized event to listener instance of class org.springframework.w ...