高通平台用at怎么发短信平台

免费发短信的网站 LuSir亲测好用 完全匿名并且免费 - Lu福利&& 您当前的位置: - 新闻中心
短信猫AT指令发短信集
发布者:maln2008 发布时间: 14:06:14 阅读:<font color="#FF次
一、英文短信发:AT收:OK发:AT+CMGF=1 收:OK发:AT+CMGS=
收:&发:data→ //test 为发送内容,→为发送符(ctrl+z,十六进制0x1A)收:+CMGS: 54 OK
二、中文PDU短信本文以一个实例来解说AT指令发送PDU短信的全过程,假如我要发送下面的短信:接收号码:+9短信内容:工作愉快!短信中心号码:+0
1、短信中心号码处理:用字符串 addr 表示a、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F即 addr = "+0"=& addr = "0F"b、将奇数位和偶数位交换。=& addr = "F0"c、将短信息中心号码前面加上字符91,91是国际化的意思=& addr = "05F0"d、算出 addr 长度,结果除2,格式化成2位的16进制字符串,16 / 2 = 8 =& "08"=& addr = "0005F0"
2、手机号码处理:用字符串 phonea、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F即 phone = "+9"=& phone = "9F"b、将手机号码奇数位和偶数位交换。=& phone = "F9"
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=& b、手机号码后加上 000800 和刚才的短信息内容,000800也写死就可以了即 phone = phone + "000800" + msg即
+ 000800 + 0A5DE54F5C61095FEBFF01=& phone = F5C61095FEBFF01c、phone 长度除以2,格式化成2位的十进制数即 F5C61095FEBFF01 =& 50位 / 2 =& 25
5、所以要发送的内容为发:AT收:OK发:AT+CMGF=0 收:OK发:AT+CMGS=25收:&发:addr+phone→ //→为发送符(ctrl+z,十六进制0x1A)收:+CMGS: 54 OK
6、如果返回不是ERROR,恭喜你,发送成功了
三、几个要注意的问题1、发送的指令用0x0D结尾,注意不是通常认为的0x0D,0x0A。
特别是在发送PDU短信的AT+CMGS=25命令时,
一定只能以0x0D结尾。2、在发送短信内容时,以0x1A(代表ctrl+Z的虚拟键值)结尾。3、用AT+CMEE=1命令,可以在短信猫返回ERROR时带上原因,这样方便调试。
北京志诚科技有限公司 2012 版权所有 京ICP备号 电话:400-687-5186 手机:&& &
友情连接: & & &&&&下面介绍WINCE下面AT指令发送中文短信
1、设置CSCA
int __stdcall setCSCA()
int isOK=-1;
DWORD dwWritenSize = 0;
DWORD dwReadS
if(m_serial == INVALID_HANDLE_VALUE)
RETAILMSG(1,(TEXT(&m_serial == INVALID_HANDLE_VALUE \r&)));
return isOK;
CString m_quest(&at+csca=\&+0\&\r&);
//CString m_quest(&at+csq\r&);
int j=m_quest.GetLength();
unsigned char *rel = new unsigned char[50];
memset(rel,0,sizeof(rel));
unsigned char *buf = new unsigned char[j];
for(int i = 0; i &i++)
buf[i] = (unsigned char)m_quest.GetAt(i);
/* 转换为单字节字符 */
WriteFile(m_serial,buf,j,&dwWritenSize,NULL);
Sleep(200);
if(ReadFile(m_serial,rel,50,&dwReadSize,NULL))
//tmp.Format(_T(&%s&),rel);
DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, (LPCSTR)rel, -1, NULL, 0);
wchar_t *pwT
pwText = new wchar_t[dwNum];
MultiByteToWideChar (CP_ACP, 0, (LPCSTR)rel, -1, pwText, dwNum);// 开始转换
if(tmp.Find(L&OK&)!=-1)
//RETAILMSG(1,(TEXT(&isOK %d&),isOK));
delete []pwT
return isOK;
2、设置CMGF
int __stdcall setCMGF()
//return 0;
int isOK=-1;
DWORD dwWritenSize = 0;
DWORD dwReadS
if(m_serial == INVALID_HANDLE_VALUE)
RETAILMSG(1,(TEXT(&m_serial == INVALID_HANDLE_VALUE \r&)));
return isOK;
CString m_quest=L&at+cmgf=0\r&;
//CString m_quest(&at+csq\r&);
int j=m_quest.GetLength();
unsigned char *rel = new unsigned char[50];
memset(rel,0,sizeof(rel));
unsigned char *buf = new unsigned char[j];
for(int i = 0; i &i++)
buf[i] = (unsigned char)m_quest.GetAt(i);
/* 转换为单字节字符 */
WriteFile(m_serial,buf,j,&dwWritenSize,NULL);
Sleep(200);
if(ReadFile(m_serial,rel,50,&dwReadSize,NULL))
DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, (LPCSTR)rel, -1, NULL, 0);
wchar_t *pwT
pwText = new wchar_t[dwNum];
MultiByteToWideChar (CP_ACP, 0, (LPCSTR)rel, -1, pwText, dwNum);// 开始转换
if(tmp.Find(L&OK&)!=-1)
delete []pwT
return isOK;
}3、发送短信
int __stdcall sendMessage(const char *strNumber,const char *strContent)
SM_PARAM SmP
j=strlen(strNumber);
if(j & 11)
return 2;//手机号长度不对
CString strU
WCHAR wchar[1024];
CString strSmsc=L&0&;
int nConut=strlen(strContent);
//RETAILMSG(1,(TEXT(&content:%d &),strlen(strContent)));
if(nConut&=1)
else if(nConut&140)
char phoneNum[100];
memset(phoneNum,0,sizeof(phoneNum));
if(strNumber[0]!='8'&& strNumber[0]!='6')
phoneNum[0]='8';
phoneNum[1]='6';
strcpy(phoneNum+2,strNumber);
strcpy(phoneNum,strNumber);
for(int i=0;i&strSmsc.GetLength();i++)
SmParam.SCA[i]=strSmsc.GetAt(i);
strcpy(SmParam.TPA,phoneNum);
strcpy(SmParam.TP_UD, strContent);
//RETAILMSG(1,(TEXT(&\r\nTP_UD lenght:%d&),strlen(SmParam.TP_UD)));
SmParam.TP_PID = 0;
SmParam.TP_DCS = 8;//使用UCS2编码
if(setSMS(&SmParam)==0)
return -1;
4、通过设置短信中心发短信
int __stdcall sendMessage1(const char *strsmsc,const char *strNumber,const char *strContent)
SM_PARAM SmP
j=strlen(strNumber);
m=strlen(strsmsc);
if(j & 11 || m& 11)
return 2;//手机号长度不对
CString strU
WCHAR wchar[1024];
//CString strSmsc=L&0&;
int nConut=strlen(strContent);
//RETAILMSG(1,(TEXT(&content:%d &),strlen(strContent)));
if(nConut&=1)
else if(nConut&140)
char phoneNum[100];
memset(phoneNum,0,sizeof(phoneNum));
if(strNumber[0]!='8'&& strNumber[0]!='6')
phoneNum[0]='8';
phoneNum[1]='6';
strcpy(phoneNum+2,strNumber);
strcpy(phoneNum,strNumber);
char smcs[100];
memset(smcs,0,sizeof(smcs));
if(strsmsc[0]!='8'&& strsmsc[0]!='6')
smcs[0]='8';
smcs[1]='6';
strcpy(smcs+2,strsmsc);
strcpy(smcs,strsmsc);
strcpy(SmParam.SCA,smcs);
strcpy(SmParam.TPA,phoneNum);
strcpy(SmParam.TP_UD, strContent);
//RETAILMSG(1,(TEXT(&\r\nSmParam.SCA&)));
SmParam.TP_PID = 0;
SmParam.TP_DCS = 8;//使用UCS2编码
if(setSMS(&SmParam)==0)
return -1;
5、其它用到的函数和结构体
int __stdcall setSMS(SM_PARAM* pSrc)
// PDU串长度
unsigned char nSmscL // SMSC串长度
// 串口收到的数据长度
char cmd[16];
char pdu[512];
char ans[128];
int isOK=-1;
DWORD dwWritenSize = 0;
DWORD dwReadS
//RETAILMSG(1,(TEXT(&setMessage\r&)));
if(m_serial == INVALID_HANDLE_VALUE)
//RETAILMSG(1,(TEXT(&m_serial == INVALID_HANDLE_VALUE \r&)));
return isOK;
nPduLength = gsmEncodePdu(pSrc, pdu); // 根据PDU参数,编码PDU串
strcat(pdu, &\x001a&);
// 以Ctrl-Z结束
gsmString2Bytes(pdu, &nSmscLength, 2); // 取PDU串中的SMSC信息长度
nSmscLength++;
// 加上长度字节本身
// 命令中的长度,不包括SMSC信息长度,以数据字节计
sprintf(cmd, &AT+CMGS=%d\r&, nPduLength / 2 - nSmscLength); // 生成命令
//for(i&strlen(cmd);i++)
RETAILMSG(1,(TEXT(&%c&),cmd[i]));
//RETAILMSG(1,(TEXT(&\r\n&)));
//for(j&strlen(pdu);j++)
//RETAILMSG(1,(TEXT(&%c&),pdu[j]));
WriteFile(m_serial,cmd,strlen(cmd),&dwWritenSize,NULL);
//RETAILMSG(1,(TEXT(&%s&),tmp3));
Sleep(200);
unsigned char *rel = new unsigned char[1024];
memset(rel,0,sizeof(rel));
if(ReadFile(m_serial,rel,50,&dwReadSize,NULL))
//tmp.Format(_T(&%s&),rel);
DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, (LPCSTR)rel, -1, NULL, 0);
wchar_t *pwT
pwText = new wchar_t[dwNum];
MultiByteToWideChar (CP_ACP, 0, (LPCSTR)rel, -1, pwText, dwNum);// 开始转换
if(tmp.Find(L&&&)!=-1)
WriteFile(m_serial,pdu,strlen(pdu),&dwWritenSize,NULL);
int counter=0;
unsigned char *rel1 = new unsigned char[1024];
while(counter&10)
Sleep(300);
if(ReadFile(m_serial,rel1,200,&dwReadSize,NULL))
//RETAILMSG(1,(TEXT(&ReadFile\r\n&)));
DWORD dwNum3 = MultiByteToWideChar (CP_ACP, 0, (LPCSTR)rel1, -1, NULL, 0);
wchar_t *pwText3;
CString tmp3;
pwText3 = new wchar_t[dwNum3];
MultiByteToWideChar (CP_ACP, 0, (LPCSTR)rel1, -1, pwText3, dwNum3);// 开始转换
tmp3 = pwText3;
//RETAILMSG(1,(TEXT(&%s&),tmp3));
if(tmp3.Find(L&OK&)!=-1)
delete []pwText3;
if(isOK==0)
counter++;
delete []rel1;
delete []pwT
return isOK;
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:36064次
排名:千里之外
原创:20篇
评论:16条
(1)(1)(3)(1)(3)(1)(1)(3)(7)(1)(1)高通平台软件下载指南_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
高通平台软件下载指南
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢

我要回帖

更多关于 发短信平台 的文章

 

随机推荐