文章目录

  • 一、模块连接方式
  • 二、开机测试
  • 三、SMS简介
  • 四.短信的控制模式与编码
    • 4.1 Text Mode
    • 4.2 PDU Mode
    • 4.3 GSM编码
    • 4.4 UCS2编码
  • 五、收发英文短信
    • 5.1 AT+CPMS查询短信数量
    • 5.2 AT+CNMI设置新消息提示类型
    • 5.3 AT+CMGF选择短信模式
    • 5.4 AT+CSCS设置编码
    • 5.5 AT+CSMP设置短信文本模式
    • 5.6 AT+CMGS发送消息到指定手机号
    • 5.7 实践操作
  • 六.收发中文短信
  • 七、基础指令

一、模块连接方式

联通移动都可以的,不支持电信,联通2G不支持。此模块供电要求:5V

连接方式:

二、开机测试

先安照ttl连接方式连接到电脑,并插上 SIM 卡
打开串口,一定要勾选住“发送新行”,否则模块识别不出

能够正常使用模块的前提有:

  • 模块的串口通信正常
  • 可以检测到SIM卡
  • 信号强度足够(10以上)
  • 注册到网络
  • 附着到GPRS
    下面是开机测试的流程图,只有开机测试通过,才可以执行下一步的操作!!!
    模块开机后应该执行下面初始化流程:
AT         // 测试串口通讯是否正常
OKAT+CPIN?   // 查询是否检测到SIM卡
+CPIN: READYAT+CSQ   // 查询信号质量
+CSQ:18,0
OKAT+CREG?   // 查询模块是否注册网络
+CREG: 0,1
oK

以上全部正常再进行其它功能操作

三、SMS简介

SMS(Short Messaging Service)中文名称短信服务,它是在手机之间发送文字信息或从个人计算机或手持设备向手机发送信息的一种方式,其文本信息的最大发送量为160个字符(字母、数字或者拉丁字母中的字符),对于中文一般最大发送量为70个字符。
这里我想用SIM900A模块实现短信的收发。

四.短信的控制模式与编码

采用 Text Mode下使用GSM编码收发英文短信、使用UCS2编码收发中文短信
对于短信的控制一共有三种模式:Block Mode、基于AT指令的Text Mode、基于AT指令的PDU Mode 。目前手机中默认使用PDU Mode,通过PDU编码的短信可以是文字、声音或者图像。Text Mode只能用于发送ANSI范围的字符,发送方式比较简单。
SIM900A模块只提供Text Mode 和PDU Mode。
中文短信中,所有汉字和字符都是采用UNICODE编码。

4.1 Text Mode

Text Mode下,发送及接收到的数据均以ASCII码的显示来表示,可以发送指令"AT+CMGF=1",将GSM短信发送方式更改为文本模式。文本模式下接收的数据会自动解码,比如你收到一条短信息,GSM会返回:
+CMGR: “REC UNREAD”,"+8613806XXXXXX",“11/10/21,13:22:13+32”
hello (短信内容会自动换行)
不需要自己解码,便可得到短信的发送者、发送时间和短信内容,比较容易操作。
理论上Text Mode下,是只能够收发英文短信,但是SIM900A模块可以在Text Mode下使用UCS2编码,从而可以发送接收中文短信。

4.2 PDU Mode

PDU相当于一个数据包,它由SMS的信息组成,作为一种数据单元,必须包含源地址、目的地址、有效时间、数据格式、协议类型、正文、正文长度(可达140字节),这些信息都以十六进制表示。
PUD Mode被所有手机支持,可以使用任何字符集,其编码方式分为:7bit、8bit、UCS2。
7-bit编码用于发送普通的ASCII字符,它将一串7-bit的字符(最高位为0)编码成8-bit的数据,每8个字符可“压缩”成7个;8-bit编码通常用于发送数据消息,比如图片和铃声等;而UCS2编码用于发送Unicode字符。在这三种编码方式下,PDU串的用户信息(TP-UD)段最大容量(可以发送的短消息的最大字符数)分别是160、140和70。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。
理论上发送中文短信需要使用PDU Mode的UCS2编码,上面也说了,SIM900A模块可以使用Text Mode发送UCS2编码,而且PDU Mode比Text Mode更加复杂,所以我采用了Text Mode收发中英文短信。
PDU Mode的详细讲解可以借鉴此博客:点击链接跳转

4.3 GSM编码

在GSM编码模式下,收发消息的内容和电话号码,都是以ASCII字符的形式显示的,发送英文短信时使用十分方便。
所以我使用GSM编码来收发英文短信。

4.4 UCS2编码

谈到UCS2编码就不得不说UNICODE,UNICODE又叫统一码、万国码,是计算机科学领域里的一项行业标准,包括字符集、编码方案等。UNICODE 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。简单来说,UNICODE编码可以表示世界上任意一种语言(有点夸张),自然也可以表示中文。
而UCS2编码是UNICODE的一种,UCS2中每个字符都占俩个字节。
使用UCS2编码后,发送短信的手机号码、短信内容都要经过UCS2编码转换才可以,但UCS2编码发送的消息在手机上可以直接显示为中文。
所以,需要UCS2与中文的转换软件,如下,可以实现中文和UCS2的双向转换

五、收发英文短信

采用Text Mode 的GSM编码。首先,模块要通过一系列开机测试指令(详情见 二、开机测试),才可以收发短信。这里介绍一下常用的对短信操作的一些AT指令:

5.1 AT+CPMS查询短信数量

AT+CPMS?   查询SIM卡内短消息使用状态
+CPMS: "SM",0,50,"SM",0,50,"SM",0,50
OK

需要定期查询SIM卡中短信息存储量,一旦SIM卡中短消息存满,将无法继续接收外部发过来的短信。

5.2 AT+CNMI设置新消息提示类型

5.3 AT+CMGF选择短信模式

AT+CMGF=1    文本模式

5.4 AT+CSCS设置编码

AT+CSCS="GSM"

5.5 AT+CSMP设置短信文本模式

使用Text Mode的GSM编码时,短信文本模式设置为:

AT+CSMP=17,167,0,240(消息显示在终端)
AT+CSMP=17,167,0,241(消息存储在SIM卡中)

5.6 AT+CMGS发送消息到指定手机号

AT+CMGS="xxx"

使用Text Mode的GSM编码时,直接AT+CMGS="手机号"即可,然后,在>后输入要发送的内容(不要勾选发送新行),最后发送HEX(十六进制)的:1A 即可。

5.7 实践操作

使用SIM900A向其他手机号发送一条英文短信的完整步骤如下:

AT
OKAT+CPIN?
+CPIN: READY
OKAT+CREG?
+CREG: 0,1
OKAT+CGATT?
+CGATT: 1
OKAT+CMGF=1      设置为文本模式
OKAT+CSCS="GSM"   设置编码
OKAT+CSMP=17,167,0,241(消息存储在SIM卡中,发送给其他手机号时选这个,否则会报错)
OKAT+CMGS="1395566xxxx"  手机号
>Hello World!
(再发送16进制的 1A,先勾选16进制发送,再输入1A )
+CMGS: 10
OK

1A的发送:

发送成功后截图如下:

我的手机号成功收到了信息

六.收发中文短信

收发中文短信利用的是Text Mode下的UCS2编码。相比于收发英文短信,收发中文短信需要修改的地方有:
修改编码:AT+CSCS=“UCS2”
手机号码要用UNICODE码
发送的消息要用UNICODE码(有专门的转换软件)
实践操作:
我向我另外一张手机卡发送信息:天气真不错;并且收到后回复消息:是的呢。用软件将UNICODE码转换为中文,串口操作界面如示:

AT+CMGF=1  文本模式
OKAT+CSCS="UCS2"   编码设置
OKAT+CSMP=17,167,0,241(消息存储在SIM卡中)
OKAT+CMGS="00310033003900350035003600360037003800300032"  (手机号,要用 对应的UNICODE码,中间不能留空格)
>59296C14771F4E0D9519  ("天气真不错"的对应的UNICODE码)
+CMGS: 16
OK再收到信息
+CMTI: "SM",3   信息提示
AT+CMGR=3      查询短信
+CMGR: "REC UNREAD","002B0038003600310033003900350035003600360037003800300032","","21/03/03,17:19:28+32"
662F76845462
OK

发消息如示:

收消息如示:

七、基础指令

AT+CGATT?   查询GPRS网络附着状态,返回1表示已附着
AT+CMGR=x   查询排序为 x 的短信信息,显示到终端

未完待续

SIM900A 发送中英文短信相关推荐

  1. 基于STM32与GSM模块发送中英文短信

    基于STM32与GSM模块发送中英文短信 最近在做毕业设计有用到GSM模块进行短信报警,模块的功能比较多这里就不介绍了,一般的拨打电话都很简单就只需要一条指令即可,发送英文短信也很简单也只要几条命令也 ...

  2. STM32使用GSM模块发送中英文短信(TEXT模式到PDU模式的转换)

    STM32使用GSM模块发送中英文短信(TEXT模式到PDU模式的转换) 目的是按下按键,短信发送 PDU转换网站 链接: PDU转换网站. 使用硬件: ··· 开发板:正点原子战舰V3 GSM模块: ...

  3. MTK之后台发送中英文短信篇

    个人理解和收集所书,有误请指出,转载请注明出处 从网上看到很多关于后台发送中英文短信的方法,先自己总结了两种,并予以比较. 方法一 这种方法支持两种编码格式,SMSAL_DEFAULT_DCS(7bi ...

  4. 通过STC15F2K60S2控制SIM900A发中英文短信,打电话

    本文通过串口通信,使用STC15系列单片机实现发短信打电话功能. 一. 注意事项 1. 首先要确定手机卡已经注册到网络,具备打电话发短信功能 2. 正确的硬件连接: P3.0-----STXD或者5V ...

  5. 4G模块AT指令发送中英文短信详细流程

    文章目录 Text 格式短信发送短信步骤 1.检查SIM状态 2. 发送短信 AT+CMGF=1 (设置短信格式为Text) AT+CMGS="1559xx08257" Ctrl+ ...

  6. (六)Linux 4G模块Text格式和PDU格式实现中英文短信发送

    文章目录 一.前言 二.Text格式发送英文 三.PDU格式发送中文 (1)获取短信中心号 (2)发送PDU短信 四.程序流程图 五.主程序 六.运行结果 七.问题解决 一.前言 在上一篇:(五)Li ...

  7. Linux 串口 gprs at,linux下GPRS模块使用AT命令实现拨接电话,发中英文短信

    开发板           :fl2440 cpu                :  s3c2440(arm9) 开发模块       :A7(GPRS/GPS) 远程登陆软件:PUTTY **** ...

  8. 通过短信猫发送手机短信

    wavecom短信猫常用AT命令 一.一般命令 1. AT+CGMI 给出模块厂商的标识. 2. AT+CGMM 获得模块标识.这个命令用来得到支持的频带 (GSM 900,DCS 1800 或PCS ...

  9. 完全免费的手机短信天气预报与免费发送祝福短信(谷歌短信服务)

    相信很多朋友都喜欢手机订购一些天气预报等短信服务,但一般这些天气预报都需要付费的,虽然价格不贵,但如果有免费且稳定的天气预报短信订阅那该多好呢! 谷歌Google在进入中国市场后,不断在努力提供一些本 ...

  10. GPRS使用AT命令拨接电话,发收中英文短信

    **************************************************************************************************** ...

最新文章

  1. php语句拼装,Thinkphp语句拼接
  2. 自认为有必要学习的Sql 总结,积累 mybatis
  3. Hadoop官方文档翻译——MapReduce Tutorial
  4. POJ 1007 DNA排序解题
  5. Tomcat设置cmd窗口的title属性
  6. 基于Tkinter和百度Aip的人体关键点检测
  7. 优化算法之遗传算法(Genetic Algorithm, GA)
  8. win10电脑桌面透明便签_win10系统在桌面添加透明便签的操作方法
  9. 20172328《程序设计与数据结构》第二周学习总结
  10. unrecognized selector sent to instance XXXXX
  11. android root查看目录权限,Android真机获取root权限,进入data目录
  12. CSS3(新增样式)
  13. 高级信息系统项目管理师(高项)高分通过经验分享
  14. Android:在PC屏幕上显示Android手机屏幕
  15. (很全)英文外贸网站从建站到推广流程,外贸企业SEOer大菜鸟分享
  16. iPhone6和iPhone6p放大显示模式下的分辨率
  17. wireshark+网管交换机抓包教程
  18. tdms matlab 批量打开,matlab读取tdms文件
  19. 兄弟一体机硒鼓清零7195 7500 7530DN 7895DW 7700D B7720硒鼓清零方法
  20. 中纪委网站|元宇宙:下一代互联网的发展目标 要点提炼

热门文章

  1. Python 寻找完美数
  2. snownlp中文文本情感分析
  3. 深度学习 机器学习 花书免费下载《Deep Learning》
  4. python 批量word文档转pdf
  5. 一张图看懂Resnet50与Resnet101算法
  6. Junos 操作系统
  7. 可视化编辑json数据——json editor
  8. oracle中group by rollup函数的的用法
  9. Android系统模块编译Makefile编写规则
  10. FasterRCNN理解