打印

GSM 发短信设置问题 急!!

[复制链接]
3878|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
haydon|  楼主 | 2010-7-31 15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GSM, se, ST, TE, DAS
各位大侠  本人现在做一个单片机与GSM结合发送短信到手机,刚学的,遇到一些问题,请高手帮帮忙,谢谢!!!


/***********************设置短消息中心******************************
*功    能: 串口发送数组命令到TC35, AT+CSCA="+8613800200500"回车
*形    参:    uchar *canter 短消息中心    "+8613800531500"
*返 回 值:
*备    注:
*****************************************************************/
void Set_CENTER(uchar *center)
{
uchar *p,i=ATwaits; //ATwaits=10
//lcd_disp_str(RsBuf,1);
while(i--) //测试10次,在某一次成功就退出
{
   
   RsPoint=0;
  
   SendString("AT+CSCA="); //设置短消息中心
   SendASC('"');
   SendString(center);   //短消息中心号码
   SendASC('"');
   SendASC('\r');    //发送回车指令//
   //****************************等待应答"OK"
    ES=1;    //必须中断 // 串口中断应许
    delayms_100ms();//等待接受数据完成//delayms_1000ms();delayms_1000ms();
  
    p=mystrstr(RsBuf,"OK");   //接收到的数据存在RsBuf
    if(p!=NULL) //接收到"OK"
  
   {
    lcd_disp_str("Set_CENTER is OK",1);
    lcd_disp_str("CENTER contimue! ",2);
    delayms_1000ms();delayms_1000ms();//delayms_1000ms();delayms_1000ms();
    lcd_disp_str("                ",1);
    lcd_disp_str("                ",2);
    break;
   }
   lcd_disp_str("Set_CENTER failed",1);delayms_1000ms();
   lcd_disp_str("                ",1);
}
}
/***********************发送TEXT短信息********************************
*功    能: TEXT模式发送短信息
*形    参: char *dialnum 目的号码+8613333333333    char *text发送内容
*返 回 值: 1 发送成功 0 发送失败
*备    注:发送TEXT短信息 之前应该先 1,设置短消息模式   AT+CMGF=? (0)=PDU (1)=TEXT
                                  2,设置短消息中心     AT+CSCA="+8613800531500"回车                 
*****************************************************************/
char TransmitText(char *dialnum,char *text)   //发送号码 发送内容,字母或数字
{
uchar i=Sendwaits,j=Sendwaits;
uchar *p;
SendString("AT+CMGS="); //信息发送指令 AT+CMGS=//
///////////////////////////////
SendASC('"');
SendString(dialnum);   //手机号码的引号丢了!!!!!!!!! 已经加上
SendASC('"');
////////////////////////////////////
SendASC('\r');    //发送回车指令//
RsPoint=0;   //清空接收缓冲区
//delayms_1000ms();
while(i--)
{
  
   delayms_100ms();
   p=mystrstr(RsBuf,">");//">"
   if(p!=NULL) //如果接受到 > 发送text
   {
       ///////Get">"////////////////////////////
   
    SendString(text);
    RsPoint=0;   //清空接收缓冲区
    SendString("\x1a\r");//'\x1a'结束符(相当CTRL+Z) '\r'回车符
    //delayms_100ms();
    while(j--)
    {
     delayms_100ms();
     p=mystrstr(RsBuf,"OK");
     if(NULL!=p)
     {
      //发送成功
      lcd_disp_str("Transmit already",1);
     
      return 1;
     }
     lcd_disp_str("wait Transmit! ",1);
     delayms_1000ms();
     lcd_disp_str("                ",1);
     }  
   }
   //else lcd_disp_str("Transmit failure",1);
}
return 0;
}



   下面这几个东东怎么设置,我自己设置过,都是发送失败
   SendString("AT+CSCA="); //设置短消息中心
   SendASC('"');
   SendString(center);   //短消息中心号码
   SendASC('"');
   SendASC('\r');    //发送回车指令//


  SendString("AT+CMGS="); //信息发送指令 AT+CMGS=//
  ///////////////////////////////
  SendASC('"');
  SendString(dialnum);   //手机号码的引号丢了!!!!!!!!! 已经加上
  SendASC('"');
  ////////////////////////////////////
  SendASC('\r');    //发送回车指令//

相关帖子

沙发
haydon|  楼主 | 2010-7-31 15:08 | 只看该作者
例如  我要发送的信息是“你好”,接收手机是15018445062   短信中心号码是13800200500(广州)

使用特权

评论回复
板凳
928315| | 2010-7-31 19:01 | 只看该作者
最好先用电脑上的串口工具发送命令,把命令确定好。命令格式是否正确。再写程序。命令得一条一条调试。不然到后面都不知道哪里出问题了。
使用GPRS做远程唤醒。有2个致命缺点。
  1.  发送命令的实时性,有可能一条短信发送很久了对方都没有收到。
  2.移动网络的响应速度。如果在高峰期的时候发送数据,响应时间很难确定。如果没有很好的系统调度,系统死等GPRS响应的话,就没有实时性了。

使用特权

评论回复
地板
NE5532| | 2010-7-31 19:44 | 只看该作者
高手啊!连啥问题都不说……

使用特权

评论回复
5
linqing171| | 2010-8-1 10:49 | 只看该作者
波特率对了没有?
发个AT,有没有回OK?

使用特权

评论回复
6
gxst123| | 2010-8-2 10:45 | 只看该作者
赞同3楼的说法,利用串口调试助手,根据返回情况,一条一条的指令编写

使用特权

评论回复
7
annywangan| | 2014-8-5 15:45 | 只看该作者
928315 发表于 2010-7-31 19:01
最好先用电脑上的串口工具发送命令,把命令确定好。命令格式是否正确。再写程序。命令得一条一条调试。不然 ...

发送短信长度最大是多少呢?你好长度是04,最大只有FF?

使用特权

评论回复
8
xlsf1048| | 2014-8-6 16:01 | 只看该作者
5#的,先统同步波特率

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

55

帖子

0

粉丝