- 1、本文档共2页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AT指令发送短信流程
HYPERLINK /linfeng999/article/details/6121003 AT指令发送短信流程
一、英文短信
发:AT
收:OK
发:AT+CMGF=1
收:OK
发:AT+CMGS收:
发:data→ //test 为发送内容,→为发送符(ctrl+z,十六进制0x1A)
收:+CMGS: 54 OK
二、中文PDU短信
本文以一个实例来解说AT指令发送PDU短信的全过程,假如我要发送下面的短信:
接收号码:+8613902433649
短信内容:工作愉快!
短信中心号码:+8613800100500
1、短信中心号码处理:用字符串 addr 表示
a、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
即 addr = +8613800100500
= addr = 8613800100500F
b、将奇数位和偶数位交换。
= addr = 683108100005F0
c、将短信息中心号码前面加上字符91,91是国际化的意思
= addr = 91683108100005F0
d、算出 addr 长度,结果除2,格式化成2位的16进制字符串,16 / 2 = 8 = 08
= addr = 0891683108100005F0
2、手机号码处理:用字符串 phone
a、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
即 phone = +8613902433649
= phone = 8613902433649F
b、将手机号码奇数位和偶数位交换。
= phone = 683109423346F9
3、短信息部分处理:用字符串 msg 表示
a、转字符串转换为Unicode代码,例如“工作愉快!”的unicode代码为 5DE54F5C61095FEBFF01,(转换在linux里可用iconv函数实现。)
b、将 msg 长度除2,保留两位16进制数,即 5DE54F5C61095FEBFF01 = 20 / 2 = 0A,再加上 msg
= msg = 0A5DE54F5C61095FEBFF01
4、组合
a、手机号码前加上字符串 11000D91(1100:固定,0D:手机号码的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81)
即 phone = 11000D91 + phone
= 11000D91683109423346F9
b、手机号码后加上 000800 和刚才的短信息内容,000800也写死就可以了
即 phone = phone + 000800 + msg
即 11000D91683109423346F9 + 000800 + 0A5DE54F5C61095FEBFF01
= phone = 11000D916831094233465DE54F5C61095FEBFF01
c、phone 长度除以2,格式化成2位的十进制数
即 11000D916831094233465DE54F5C61095FEBFF01 = 50位 / 2 = 25
11000D916881012796115DE54F5C61095FEBFF01
5、所以要发送的内容为
发:AT
收:OK
发:AT+CMGF=0
收:OK
发:AT+CMGS=25
收:
发:addr+phone→ //→为发送符(ctrl+z,十六进制0x1A)
收:+CMGS: 54 OK
0891683108100005F011000D91688101279611F70008 000A 5DE5 4F5C 6109 5FEB FF01
6、如果返回不是ERROR,恭喜你,发送成功了
三、几个要注意的问题
1、发送的指令用0x0D结尾,注意不是通常认为的0x0D,0x0A。
特别是在发送PDU短信的AT+CMGS=25命令时,
一定只能以0x0D结尾。
2、在发送短信内容时,以0x1A(代表ctrl+Z的虚拟键值)结尾。
3、用AT+CMEE=1命令,可以在短信猫返回ERROR时带上原因,这样方便调试。
文档评论(0)