查看: 3634|回复: 8

[原创] LY_KL26Z板学习之 GSM的短信发送

[复制链接]
  • TA的每日心情
    开心
    2019-7-11 19:28
  • 签到天数: 141 天

    连续签到: 1 天

    [LV.7]常住居民III

    34

    主题

    1067

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2492
    最后登录
    2020-9-16
    发表于 2015-9-22 17:38:48 | 显示全部楼层 |阅读模式
    先说下GSM短信发送的串口控制流程,之后再kl26上去实现
    1,先发AT,等待回复OK ,没有成功一直发,成功后转向下一步
    2,发送AT+CPIN? ,查询SIM卡是否正常,否一直查询,不过要有一个小延时后再去发送,成功转向下一步
    3,发送 AT+CEG? ,查询是否正常注册到GSM网络,否一直查询,正常转向下一步
    4,发送 AT+CMGF=1 ,发送英文短信,查询状态 是OK
    5,AT+CMGS="15000268662" ,向15000298662发送一条英文短信,收到回复转向下一步
    6,TEST ,这里要在最后加一个16进制的 1A做结束,进行内容发送,
    7,等待发送完成后 停止
    初学暂时只能做简单的修改 ,源码原型为.\YL-KL26Z 开发板\测试源码\MDK\YL-K26Z_demo\UART\Demo_Uart_Int先增加了 两个数组 用于AT指令的发送与接收,一个全局指针做 接收累加用,
    采用串口2 中断方式 接收内容
    源码更改为
    void  UART1_IRQHandler (void)
    {
       UART_MemMapPtr uartPtr = UART1_BASE_PTR;                     
       #if UART1_SEND_IRQ                                               
       #endif
       #if UART1_RECEIVE_IRQ
       while (UART_S1_REG(uartPtr) & UART_S1_RDRF_MASK){            
    //接收的内容放入at_buff2 中,每放一个at_cont2加1
    at_buff2[at_cont2++]=UART_D_REG(uartPtr);
       }   
       #endif   
    }

    发送采用及时发送,接收用延时做等待 之后分析结果
    以下是部分源码

    //----------------------------------------------------
    INT8U strsearch(  INT8U *ptr2, INT8U *ptr1)//²é×Ö·û´®*ptr2ÔÚ*ptr1ÖеÄλÖÃ
    //±¾º¯ÊýÊÇÓÃÀ´¼ì²é×Ö·û´®*ptr2ÊÇ·ñÍêÈ«°üº¬ÔÚ*ptr1ÖÐ
    //·µ»Ø:  0  Ã»ÓÐÕÒµ½
    //       1-255 ´ÓµÚN¸ö×Ö·û¿ªÊ¼Ïàͬ
    {
    // uchar max_length;
    INT16U i,j,k;
    // unsigned char flag;
    if(ptr2[0]==0) return(0);
    //max_length=strlen(ptr)+1;
    // flag=0;
    for(i=0,j=0;i<500;i++)
    {
            if(ptr1==ptr2[j])
            {//µÚÒ»¸ö×Ö·ûÏàͬ
             for(k=i;k<500;k++,j++)
             {
             if(ptr2[j]==0)//±È½ÏÕýÈ·
             return(i+1);               //·µ»ØÖµÊÇÕûÊý£¬²»º¬0
             if(ptr1[k]!=ptr2[j]) break;
             }
             j=0;
            }
    if(ptr1==0) break;//±È½ÏÕýÈ·
    }
    return(0);
    }


    INT8U com1_send(INT8U *ptr)
    {  at_cont2=0;
        while(*ptr)
        {
            uart1SendChar(*ptr);
            if(*ptr==0)
            { break;}
          ptr++;
    }
    myDelay(10); //myDelay(2000);
    if(at_cont2)
    {  myDelay(20);at_cont2=0;  return(1);
    }
    return(0);
    }

    /*********************************************************************************************************
    ** Function name:           main
    ** Descriptions:            UARTÖжϽÓÊÕÀý³Ì
    **                          ÊµÑéÏÖÏó£ºÉÏλ»ú·¢ËÍÊý¾Ý£¬MCU·µ»Ø½ÓÊÕµ½µÄÊý¾Ý
    ** input parameters:        none
    ** output parameters:       none
    ** Returned value:          none
    ** Created by:            
    ** Created Date:            
    **--------------------------------------------------------------------------------------------------------
    ** Modified by:
    ** Modified date:
    *********************************************************************************************************/
    int  main (void)
    {   INT8U i,j=0,t=0;;
        SystemCoreClockUpdate();                                            /* ʱÖÓÅäÖà                    */

        PORT_ENABLE_CLK(MKL_PORTA);                                         /* GPIOʱÖÓʹÄÜ                 */
        PORT_ENABLE_CLK(MKL_PORTB);
        PORT_ENABLE_CLK(MKL_PORTC);
        PORT_ENABLE_CLK(MKL_PORTD);
        PORT_ENABLE_CLK(MKL_PORTE);

        uart0Init(115200,0,0,8,1);                                            /* UART0³õʼ»¯                 */
        uart1Init(115200,0,0,8,1);  
         strcpya(tmp_buff,"AT+CPIN?");
      strcata(tmp_buff,"\x0d");at_cont=0;
      at_cont2=0;
    for(i=0;i<20;i++)
    {  if(tmp_buff==0) break;
    uart0SendChar(tmp_buff);
    }
       com1_send(tmp_buff);
    myDelay(10);
    // printf("\n\rMCU Start,Now you can input anykey... \r\n");   
        while(1){myDelay(20);
       if(j==0)//AT
    {  strcpya(tmp_buff,"ATE0V1\x0d");  
    i=com1_send(tmp_buff);  
    if(i)
      {  
    /*AT OK
      41 54 0D 0D 0A 4F 4B 0D 0A
    */
    i= strsearch("OK",at_buff2);
      if(i)
       {j++;}

      }
    }
    else  if(j==1)//²éѯSIM¿¨ÊÇ·ñÕý³£   AT+CPIN?
    {   strcpya(tmp_buff,"AT+CPIN?\x0d");
    i=com1_send(tmp_buff);  
    if(i)
      {  //SIM¿¨Õý³£
    i= strsearch("+CPIN: READY",at_buff2);
      if(i) {j++;}  
      }
    }
    else  if(j==2)//²éѯGSMÍøÂçÊÇ·ñ×¢²á
    {   strcpya(tmp_buff,"AT+CREG?\x0d");
    i=com1_send(tmp_buff);  
    if(i)
      {  // +CREG: 0,1 »ò("+CREG: 0,5 ±íʾÒѾ­×¢²áÉÏÍøÂç
    i= strsearch("+CREG: 0,1",at_buff2);
      if(i) {j++;}  
                 else
                 {   i= strsearch("+CREG: 0,5",at_buff2);
          if(i)
                      {j++;}
    else  myDelay(100);
    }
      }

    }
        else  if(j==3)//½øÐжÌÐÅ·¢ËÍ
    {   strcpya(tmp_buff,"AT+CMGF=1\x0d");
    i=com1_send(tmp_buff);
    //Ô­ÐÍ AT+CMGS="13818120592"
       strcpya(tmp_buff,"AT+CMGS=\"");
    strcata(tmp_buff,"15000298662");
    strcata(tmp_buff,"\"\x0d");
    i=com1_send(tmp_buff);
    //-----ÄÚÈÝ  TEST-----------------------
    strcpya(tmp_buff,"TEST\x1a");
      i=com1_send(tmp_buff);
    /* ÕâÀïÌØ±ð×¢Ã÷£¬·¢¶Ì·¢Ë͵Äʱ¼äÒª±ÈÕý³£Ö¸ÁîµÈ´ýµÄʱ¼ä»¹Òª³¤
    //+CMGS: 144
    */
    for(t=0;t<200;t++)
    {   myDelay(100);
      i= strsearch("+CMGS: ",at_buff2);
      if(i)
    {j++;break;
    }  
    }


    }
    //strsearch

        }    ;
    }


    如果以上看不明白,可以下载源码
    Demo_Uart_Int.zip (833.92 KB, 下载次数: 3)

    评分

    参与人数 1NXP金币 +20 收起 理由
    小七 + 20

    查看全部评分

    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-8-30 16:02
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    36

    主题

    1065

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1851
    最后登录
    2019-11-19
    发表于 2015-9-22 18:23:40 | 显示全部楼层
    支持一个。只是没有GSM模块
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-11 19:28
  • 签到天数: 141 天

    连续签到: 1 天

    [LV.7]常住居民III

    34

    主题

    1067

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2492
    最后登录
    2020-9-16
     楼主| 发表于 2015-9-22 19:07:46 | 显示全部楼层
    通过 串口2连的GSM模块,短信是发送成功的
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13275
    最后登录
    2019-1-27
    发表于 2015-9-22 21:31:28 | 显示全部楼层
    不错,支持
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13275
    最后登录
    2019-1-27
    发表于 2015-9-22 21:32:26 | 显示全部楼层
    楼主,下次可以直接使用添加代码的功能。会美观很多
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-11 19:28
  • 签到天数: 141 天

    连续签到: 1 天

    [LV.7]常住居民III

    34

    主题

    1067

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2492
    最后登录
    2020-9-16
     楼主| 发表于 2015-9-22 22:29:18 | 显示全部楼层
    添加代码功能怎么使用
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-22 23:11:11 | 显示全部楼层
    学习了,谢谢分享
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5788
    最后登录
    2025-5-7
    发表于 2015-9-23 09:25:18 | 显示全部楼层
    谢谢分享

                            154120hhw0q0e0hpw374yw.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    61

    主题

    965

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2394
    最后登录
    1970-1-1
    发表于 2015-9-23 13:27:00 | 显示全部楼层
    谢谢分享            
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-13 19:37 , Processed in 0.116422 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表