GPRS模块发送短信

时间:2023-01-03 19:45:52

http://blog.sina.com.cn/s/blog_524846000101cwtr.html


部分摘自华清远见网上资料。


GPRS 模块,是具有GPRS数据传输功能的GSM模块。GPRS模块就是一个精简版的手机,集成GSM通信的主要功能于一块电路板上,具有发送短消息、通话、数据传输等功能。GPRS模块相当于手机的核心部分,如果增加键盘和屏幕就是一个完整的手机。普通电脑或者单片机可以通过RS232串口与GPRS模块相连,通过AT指令控制GPRS模块实现各种基于GSM的通信功能。

GPRS 模块,是具有GPRS数据传输功能的GSM模块。GPRS模块就是一个精简版的手机,集成GSM通信的主要功能于一块电路板上,具有发送短消息、通话、数据传输等功能。GPRS模块相当于手机的核心部分,如果增加键盘和屏幕就是一个完整的手机。普通电脑或者单片机可以通过RS232串口与GPRS模块相连,通过AT指令控制GPRS模块实现各种基于GSM的通信功能。

在超级终端输入:

At

OK

 

返回OK则说明你的模块可以正常工作,否则出现故障。


第一、文本模式下发送短信流程

文本模式下发送信息基本分三步骤:

1.      设置发送模式

AT+CMGF=1

CMGF0是以PDU模式发送,为1则是以文本方式发送。

2.接收方电话号码

AT+CMGS=138XXXXxxxx

3.输入内容

>hello world 

 

注意:每敲完一条指令都要按回车,直到返回“>”后开始输入信息,但是在输入完短信内容后不能敲回车而应该按组合键“ctrl+z”作为结束符。回车键在ascii码中的数值是“\r”,“ctrl+z”在ascii码中的数值是“0x1a,所以在编程时可以直接在信息内容后进行字符串拼接。

 

示例:

=====================================================

AT

OK

AT+CMGF=1

OK

AT+CMGS=1380189xxxx

>hello word !

=====================================================

提示:AT指令不区分大小写,所以无论是大写还是小写都可以识别。

返回OK则说明你的模块可以正常工作,否则出现故障。


第二、PDU模式下发送短信流程

 

Pdu模式发送信息仍然是三步搞定,只不过我们在前期得做一些稍微麻烦的数据转换工作。

我们先来看流程理清脉络:

1.AT+CMGF=0 设置为PDU模式发送中文编码短信

2.AT+CMGS=信息长度

3.发送短信

示例:

======================================================================

AT

OK

AT+CMGF=0

OK

AT+CMGS=25

>0891683108100005F011000D91685110906474F90A534E6E058FDC89C1FF01

======================================================================

前面的我们容易理解:

AT+CMGF=0将发送模式置为PDU模式;

AT+CMGS=25这句CMGS后面跟的不再是电话号码了,而是“信息长度”,这里我加了双引号表示有独特的含义后面解释。

现在分析最关键的地方:

0891683108100005F011000D91685110906474F90008000A534E6E058FDC89C1FF01

我们可以将这段头疼的字符串分为三段:

-----------------------------------------------------------------------------------------

0891683108100005F0                                       中心号码段

11000D91685110906474F9000800                     收信方号码段

0A534E6E058FDC89C1FF01                            信息段

-------------------------------------------------------------------------------------------

1.       先来看中心号码段。

关于什么是中心号码我想百度比我解释的更清楚,这里不再赘述了。

我们其实还可以将其再细分:

08           91           683108100005F0

其中91是国际化的意思,这个作为前缀必须加上。

683108100005F0是什么意思呢?我们将它奇数位和偶数位反转看看:

683108100005F0

8613800100500F

熟悉吗?13800100500是中国移动北京地区的中心号码,86是中国地区的前缀这个大家应该清楚。F呢?因为在进行PDU编码的时候规定了如果号码位数是奇数位那么就要在末尾加F进行补齐,由于我们国家的手机号码位数都是11位,因此要在末尾补F。于是中国移动北京地区的中心号码加86补齐F再奇偶位反转最后加91国际化前缀就由原来的:

13800100500

变成了:

91683108100005F0

接着我们数一下它有多少位,16位,16/2=8,所以我们把整个中心号码组合编码后的长度除以2,最后以十六进制的表示方式加在它的前端就大功告成了。

0891683108100005F0

Ok搞定,下一步继续。

======================================================================

1.       收信方号码段。

11000D91685110906474F9000800

同样将其细分:

1100       0D91      685110906474F9           000800

其中“1100”和“000800”分别是收信方号码段固定的前缀和后缀,所以一定要记得加上。

685110906474F9”不用讲了,和中心号码段一样的编码方式,原型是:

8615010946479”(华清远见北京总部执勤电话)。

0D91”需要注意一下,其中这里的“91”和中心号码段的“91”意义不一样了,这里是表示接收方的设备是手机的意思,“81”则是小灵通。“0D”是一个十六进制数,还原为十进制后是13,什么意思呢?接受方的号码是“8615010946479”共13位。

因此接收方电话经偶数位<补齐F>

然后<奇数偶数位反转>

<加上号码长度>

最后<加上前后缀>最终由:

8615010946479

转型为:

11000D91685110906474F9000800

======================================================================

2.       信息段。

0A534E6E058FDC89C1FF01

信息段是最简单的,大家需要了解GPRSPDU模式发送信息时,其内容是以unicode的方式编码的。

其中:

534E6E058FDC89C1FF01

还原成GB汉字编码为:

“华清远见!”

其编码(十六进制)长度是20位,20/2=1010的十六进制表示方式是0X0A。因此信息段的最终编码为:

0A534E6E058FDC89C1FF01

3.       组合。

如果把发短信比喻为一次快递的投递过程,那么过程如下:

首先是中心号码(相当于我们的邮局);

接着是接收方号码段(相当于我们的收信人地址);

最后是信息段(就是你的信件了)。

OK,组合结果就是:

0891683108100005F011000D91685110906474F90008000A534E6E058FDC89C1FF01

至此,PDU的编码就正式结束了。

不过我们还有最后一件事,那就是前面提到的那个“信息长度”。

邮局是国家的公有的,我们无权去干涉,但是收信人和信息是我们自己制定的,因此我们要精确掌握自己所属的信息。

于是我们将中心号码段剔除,变为:

11000D91685110906474F90008000A534E6E058FDC89C1FF01

计算一下字符串长度,50位。OK50/2=25

于是在PDU模式下,我们所谓的“信息长度”:AT+CMGS=25

回顾一下PDU模式下的发信息流程:

======================================================================

AT

OK

AT+CMGF=0

OK

AT+CMGS=25

>0891683108100005F011000D91685110906474F90A534E6E058FDC89C1FF01

======================================================================

一定要记得最后输完信息编码后要按“ctrl+z”而不是回车。

我做GPRS模块实验,用的是NeoWay“有方”的GPRS模块,M660+。


短信中心号码,需要根据SIM所在地址更换,下面列举中国移动的短信中心号码,备查。

中国移动短消息中心号码大全

省份 城市 短消息中心号码 
北京 北京 13800100500 
天津 天津 13800220500 
河北 石家庄 13800311500 
保定 13800312500 
衡水 13800318500 
邢台 13800319500 
邯郸 13800310500 
张家口 13800313500 
承德 13800314500 
唐山 13800315500 
廊坊 13800316500 
沧州 13800317500 
秦皇岛 13800335500 
山西 太原 13800351500 
大同 13800352500 
阳泉 13800353500 
朔州 13800349500 
吕梁 13800358500 
忻州 13800350500 
榆次 13800354500 
长治 13800355500 
晋城 13800356500 
临汾 13800357500 
运城 13800359500 
内蒙古 呼和浩特 13800471500 
包头 13800472500 
集宁 13800474500 
东胜 13800477500 
临河 13800478500 
锡林浩特 13800479500 
海拉尔 13800470500 
赤峰 13800476500 
乌海 13800473500 
阿拉善左旗 13800483500 
通辽 13800475500 
乌兰浩特 13800482500 
辽宁 沈阳 13800240500 
大连 13800411500 
鞍山 13800412500 
抚顺 13800413500 
本溪 13800414500 
丹东 13800415500 
锦州 13800416500 
营口 13800417500 
阜新 13800418500 
辽阳 13800419500 
铁岭 13800410500 
朝阳 13800421500 
盘锦 13800427500 
葫芦岛 13800429500 
吉林 长春 13800431500 
吉林 13800432500 
延吉 13800433500 
四平 13800434500 
通化 13800435500 
白城 13800436500 
辽源 13800437500 
松源 13800438500 
白山 13800439500 
黑龙江 哈尔滨 13800451500 
齐齐哈尔 13800452500 
牡丹江 13800453500 
佳木斯 13800454500 
大庆 13800459500 
上海 上海 13800210500 
江苏 苏州 13800512500 
镇江 13800511500 
南通 13800513500 
常州 13800519500 
无锡 13800510500 
南京 13800250500 
扬州 13800514500 
盐城 13800515500 
徐州 13800516500 
淮阴 13800517500 
连云港 13800518500 
泰州 13800523500 
宿迁 13800527500 
浙江 杭州 13800571500 
宁波 13800574500 
嘉兴 13800573500 
金华 13800579500 
温州 13800577500 
衢州 13800570500 
舟山 13800580500 
湖州 13800572500 
绍兴 13800575500 
台州 13800576500 
丽水 13800578500 
安徽 滁州 13800550500 
合肥 13800551500 
蚌埠 13800552500 
芜湖 13800553500 
淮南 13800554500 
马鞍山 13800555500 
安庆 13800556500 
宿州 13800557500 
阜阳 13800558500 
黄山 13800559500 
淮北 13800561500 
铜陵 13800562500 
宣城 13800563500 
六安 13800564500 
巢湖 13800565500 
贵池 13800566500 
福建 福州 13800591500 
厦门 13800592500 
宁德 13800593500 
莆田 13800594500 
泉州 13800595500 
漳州 13800596500 
龙岩 13800597500 
三明 13800598500 
南平 13800599500 
江西 南昌 13800791500 
上饶 13800793500 
鹰潭 13800701500 
抚州 13800794500 
九江 13800792500 
宜春 13800795500 
吉安 13800796500 
赣州 13800797500 
景德镇 13800798500 
萍乡 13800799500 
新余 13800790500 
山东 青岛 13800532500 
济南 13800531500 
淄博 13800533500 
潍坊 13800536500 
烟台 13800535500 
威海 13800631500 
临沂 13800539500 
莱芜 13800634500 
聊城 13800635500 
日照 13800633500 
枣庄 13800632500 
德州 13800534500 
济宁 13800537500 
荷泽 13800530500 
泰安 13800538500 
东营 13800546500 
滨州 13800543500 
河南 郑州 13800371500 
许昌 13800374500 
开封 13800378500 
商丘 13800370500 
漯河 13800395500 
周口 13800394500 
平顶山 13800375500 
信阳 13800376500 
南阳 13800377500 
洛阳 13800379500 
焦作 13800391500 
新乡 13800373500 
鹤壁 13800392500 
驻马店 13800396500 
濮阳 13800393500 
安阳 13800372500 
三门峡 13800398500 
湖北 武汉 13800270500 
襄樊 13800710500 
孝感 13800712500 
咸宁 13800715500 
荆州 13800716500 
宜昌 13800717500 
恩施 13800718500 
十堰 13800719500 
随州 13800722500 
荆门 13800724500 
江汉 13800728500 
湖南 长沙 13800731500 
常德 13800736500 
衡阳 13800734500 
邵阳 13800739500 
岳阳 13800730500 
益阳 13800737500 
湘潭 13800732500 
株州 13800733500 
张家界 13800744500 
郴州 13800735500 
娄底 13800738500 
吉首 13800743500 
怀化 13800745500 
永州 13800746500 
广东 广州 13800200500 
深圳 13800755500 
汕头 13800754500 
韶关 13800751500 
清远 13800763500 
潮州 13800768500 
揭阳 13800663500 
湛江 13800759500 
茂名 13800668500 
江门 13800750500 
东莞 13800769500 
河源 13800762500 
梅州 13800753500 
汕尾 13800660500 
佛山 13800757500 
云浮 13800766500 
顺德 13800765500 
肇庆 13800758500 
江门 13800750500 
阳江 13800662500 
珠海 13800756500 
中山 13800760500 
惠州 13800752500 
广西 南宁 13800771500 
柳州 13800772500 
桂林 13800773500 
梧州 13800774500 
玉林 13800775500 
百色 13800776500 
钦州 13800777500 
河池 13800778500 
北海 13800779500 
防城港 13800770500 
海南 海口 13800898500 
重庆 重庆 13800230500 
四川 成都 13800280500 
攀枝花 13800812500 
自贡 13800813500 
绵阳 13800816500 
南充 13800817500 
广安 13800826500 
宜宾 13800831500 
内江 13800832500 
乐山 13800833500 
西昌 13800834500 
雅安 13800835500 
康定 13800836500 
马尔康 13800837500 
德阳 13800838500 
广元 13800839500 
泸州 13800830500 
遂宁 13800825500 
巴中 13800827500 
达川 13800818500 
贵州 贵阳 13800851500 
云南 昆明 13800871500 
玉溪 13800877500 
曲靖 13800874500 
保山 13800875500 
思茅 13800879500 
楚雄 13800878500 
文山 13800876500 
丽江 13800888500 
个旧 13800873500 
大理 13800872500