at指令发短信at指令发篇一:AT指令发送短信流程AT指令发送短信流程一、英文短信发:AT收:OK发:AT+CMGF=1收:OK发:AT+CMGS=**********收:发:data→//test为发送内容,→为发送符(ctrl+z,十六进制0x1A)收:+CMGS:54OK二、中文PDU短信本文以一个实例来解说AT指令发送PDU短信的全过程,假如我要发送下面的短信:接收号码:+86**********短信内容:工作愉快!短信中心号码:+86138001005001、短信中心号码处理:用字符串addr表示a、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F即addr=+86**********=addr=86**********Fb、将奇数位和偶数位交换。=addr=683108100005F0c、将短信息中心号码前面加上字符91,91是国际化的意思=addr=91683108100005F0d、算出addr长度,结果除2,格式化成2位的16进制字符串,16/2=8=08=addr=0891683108100005F02、手机号码处理:用字符串phonea、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F即phone=+86**********=phone=86**********Fb、将手机号码奇数位和偶数位交换。=phone=683109423346F93、短信息部分处理:用字符串msg表示a、转字符串转换为Unicode代码,例如“工作愉快!”的unicode代码为5DE54F5C61095FEBFF01,(转换在linux里可用iconv函数实现。)b、将msg长度除2,保留两位16进制数,即5DE54F5C61095FEBFF01=20/2=0A,再加上msg=msg=0A5DE54F5C61095FEBFF014、组合a、手机号码前加上字符串11000D91(1100:固定,0D:手机号码的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81)即phone=11000D91+phone=11000D91683109423346F9b、手机号码后加上000800和刚才的短信息内容,000800也写死就可以了即phone=phone+000800+msg即11000D91683109423346F9+000800+0A5DE54F5C61095FEBFF01=phone=11000D91683109423346F90008000A5DE54F5C61095FEBFF01c、phone长度除以2,格式化成2位的十进制数即11000D91683109423346F90008000A5DE54F5C61095FEBFF01=50位/2=2511000D91688101279611F70008000A5DE54F5C61095FEBFF015、所以要发送的内容为发:AT收:OK发:AT+CMGF=0收:OK发:AT+CMGS=25收:发:addr+phone→//→为发送符(ctrl+z,十六进制0x1A)收:+CMGS:54OK0891683108100005F011000D91688101279611F70008000A5DE54F5C61095FEBFF016、如果返回不是ERRO
at指令发短信 来自淘豆网www.taodocs.com转载请标明出处.