欢迎来到天天文库
浏览记录
ID:37625016
大小:133.11 KB
页数:15页
时间:2019-05-26
《AT指令发送PDU短信详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、AT指令发送PDU短信详解AT指令发送PDU短信详解(支持发送到小灵通)本文以一个实例来解说AT指令发送PDU短信的全过程,假如我要发送下面的短信:接收号码:+8613602433649短信内容:工作愉快!短信中心号码:+8613800200500一、短信中心号码处理:用字符串addr表示1、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F即addr="+8613800200500"=>addr="8613800200500F"2、将奇数位和偶数位交换。=>addr="683108200005F0"3、将短信息中心号码前面加上字符91,
2、91是国际化的意思=>addr="91683108200005F0"4、算出addr长度,结果除2,格式化成2位的16进制字符串,16/2=8=>"08"=>addr="0891683108200005F0"二、手机号码处理:用字符串phone1、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F即ph=>ph2、将手机号码奇数位和偶数位交换。=>phone="683106423346F9"三、短信息部分处理:用字符串msg表示1、转字符串转换为Unicode代码,例如“工作愉快!”的unicode代码为5DE54F5C61095FEBFF01
3、,(转换函数见最后附录)2、将msg长度除2,保留两位16进制数,即5DE54F5C61095FEBFF01=20/2=>"0A",再加上msg=>msg="0A5DE54F5C61095FEBFF01"四、组合1、手机号码前加上字符串11000D91(1100:固定,0D:手机号码的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81),即phone="11000D91"+phone=>11000D91683106423346F92、手机号码后加上000800和刚才的短信息内容,000800也写死就可以了即phone=phone+"
4、000800"+msg即11000D91683106423346F9+000800+0A5DE54F5C61095FEBFF01=>phone=11000D91683106423346F90008000A5DE54F5C61095FEBFF013、phone长度除以2,格式化成2位的十进制数即11000D91683106423346F90008000A5DE54F5C61095FEBFF01=>50位/2=>25五、所以要发送的内容为AT+CMGF=0<回车>OKAT+CMGS=25<回车>>addr+phone六、如果返回不是ERR
5、OR,恭喜你,发送成功了^_^//-----------------------------------------------------//7bit编码//输入:pSrc-源字符串指针//nSrcLength-源字符串长度//输出:pDst-目标编码串指针//返回:目标编码串长度intgsmEncode7bit(constchar*pSrc,unsignedchar*pDst,intnSrcLength){intnSrc;//源字符串的计数值intnDst;//目标编码串的计数值intnChar;//当前正在处理的组内字符字节的序号,范围是0-7un
6、signedcharnLeft;//上一字节残余的数据//计数值初始化nSrc=0;nDst=0;//将源串每8个字节分为一组,压缩成7个字节//循环该处理过程,直至源串被处理完//如果分组不到8字节,也能正确处理while(nSrc7、Char))8、nLeft;//将该字节剩下的左边部分,作为残余数据保存起来nLeft=*pSrc>>nChar;//修改目标串的指针和计数值pDst++;nDst++;}//修改源串的指针和计数值pSrc++;nSrc++;}//返回目标串长度returnnDst;}//7bit解码//输入:pSrc-源编码串指针//nSrcLength-源编码串长度//输出:pDst-目标字符串指针//返回:目标字符串长度intgsmDecode7bit(constunsignedchar*pSrc,char*pDst,intnSrcLength){intnSrc;/9、/源字符串的计数值intnDst;//目标解码串的计数值intnByte;//当
7、Char))
8、nLeft;//将该字节剩下的左边部分,作为残余数据保存起来nLeft=*pSrc>>nChar;//修改目标串的指针和计数值pDst++;nDst++;}//修改源串的指针和计数值pSrc++;nSrc++;}//返回目标串长度returnnDst;}//7bit解码//输入:pSrc-源编码串指针//nSrcLength-源编码串长度//输出:pDst-目标字符串指针//返回:目标字符串长度intgsmDecode7bit(constunsignedchar*pSrc,char*pDst,intnSrcLength){intnSrc;/
9、/源字符串的计数值intnDst;//目标解码串的计数值intnByte;//当
此文档下载收益归作者所有