http://blog.sina.com.cn/s/blog_524846000101cwtr.html
部分摘自华清远见网上资料。
在超级终端输入:
At
OK
返回OK则说明你的模块可以正常工作,否则出现故障。
第一、文本模式下发送短信流程
文本模式下发送信息基本分三步骤:
1. 设置发送模式
AT+CMGF=1
CMGF为0是以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”
信息段是最简单的,大家需要了解GPRS以PDU模式发送信息时,其内容是以unicode的方式编码的。
其中:
“534E6E058FDC89C1FF01”
还原成GB汉字编码为:
“华清远见!”
其编码(十六进制)长度是20位,20/2=10,10的十六进制表示方式是0X0A。因此信息段的最终编码为:
“0A534E6E058FDC89C1FF01”
3. 组合。
如果把发短信比喻为一次快递的投递过程,那么过程如下:
首先是中心号码(相当于我们的邮局);
接着是接收方号码段(相当于我们的收信人地址);
最后是信息段(就是你的信件了)。
OK,组合结果就是:
“0891683108100005F011000D91685110906474F90008000A534E6E058FDC89C1FF01”
至此,PDU的编码就正式结束了。
不过我们还有最后一件事,那就是前面提到的那个“信息长度”。
邮局是国家的公有的,我们无权去干涉,但是收信人和信息是我们自己制定的,因此我们要精确掌握自己所属的信息。
于是我们将中心号码段剔除,变为:
“11000D91685110906474F90008000A534E6E058FDC89C1FF01”
计算一下字符串长度,50位。OK,50/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