OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3327|回复: 4

GSM收到短信led亮问题

[复制链接]

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-4
在线时间
29 小时
发表于 2017-2-19 17:02:50 | 显示全部楼层 |阅读模式
void sim800c_sms_read_test(void)
{
        u8 *p,*p1,*p2;
        u8 timex=0;
        u8 msgindex[3];
        u8 msglen=0;
        u8 msgmaxnum=0;                //¶ìDÅ×î′óìõêy
        u8 key=0;
        u8 smsreadsta=0;        //êÇ·ñÔú¶ìDÅÏÔê¾×′ì¬
        p=mymalloc(SRAMIN,200);//éêÇë200¸ö×Ö½úμÄÄú′æ
        LCD_Clear(WHITE);
        POINT_COLOR=RED;
  sim800c_send_cmd("AT+CNMI=2,1","OK",200);       
        Show_Str_Mid(0,30,"ATK-SIM800C ¶á¶ìDÅ2aêÔ",16,240);                                             
        Show_Str(30,50,200,16,"¶áè¡:     ×üDÅÏ¢:",16,0);        
        kbd_fn_tbl[0]="¶áè¡";
        kbd_fn_tbl[1]="·μ»Ø";
        sim800c_load_keyboard(0,180,(u8**)kbd_tbl1);//ÏÔê¾¼üÅì  
        while(1)
        {
                key=sim800c_get_keynum(0,180);
        if(sim800c_check_cmd("+CMTI:"))//½óêÕμ½DÂÏûÏ¢
                    {
                       Show_Str(40,500,200,16,"hhh",16,0);        
                                         LED1=0;
                    }
                        
                if(key)
                {  
             if(smsreadsta)
{
                                                                                LCD_Fill(30,75,239,179,WHITE);//Çå3yÏÔê¾μĶìDÅÄúèY
                                                                                u3_printf("AT+CTTS=0\r\n");
                                                                                smsreadsta=0;
                                                        }
                         if(key<10||key==11)
                                     {
                                                                                        if(msglen<2)
                                                                                                {
                                                                                                                        msgindex[msglen++]=kbd_tbl[key-1][0];
                                                                                                                        u3_printf("AT+CLDTMF=2,\"%c\"\r\n",kbd_tbl[key-1][0]);
                                                                                                }
                                                                                         if(msglen==2)
                                                                                                {
                                                                                                                key=(msgindex[0]-'0')*10+msgindex[1]-'0';
                                                                                                                if(key>msgmaxnum)
                                                                                                                {
                                                                                                                        msgindex[0]=msgmaxnum/10+'0';
                                                                                                                        msgindex[1]=msgmaxnum%10+'0';                                       
                                                                                                                }
                                                                                                }                               
                                            }else
                                            {
                                 if(key==10||key==12) u3_printf("AT+CTTS=0\r\n");  //AT+CTTS=0í£&#214;12¥·&#197;μ±&#199;°o&#207;3éμ&#196;ó&#239;ò&#244;
                                 if(key==13)
                                                                   {
                                                                       u3_printf("AT+CTTS=0\r\n");if(msglen)msglen--;//é&#190;3y  
                                                                   }
                                if(key==14&&msglen)//&#214;′DD&#182;áè&#161;&#182;ìD&#197;
                                                                                {
                                                                                                                LCD_Fill(30,75,239,179,WHITE);//&#199;&#229;3y&#214;&#174;&#199;°μ&#196;&#207;&#212;ê&#190;                    
                                                                                                                sprintf((char*)p,"AT+CMGR=%s",msgindex);
                                                                                                                if(sim800c_send_cmd(p,"+CMGR:",200)==0)//&#182;áè&#161;&#182;ìD&#197;
                                                                                                                                {
                                                                                                                                                                        POINT_COLOR=RED;
                                                                                                                                                                        Show_Str(30,75,200,12,"×′ì&#172;:",12,0);
                                                                                                                                                                        Show_Str(30+75,75,200,12,"à′×&#212;:",12,0);
                                                                                                                                                                        Show_Str(30,90,200,12,"&#189;óê&#213;ê±&#188;&#228;:",12,0);
                                                                                                                                                                        Show_Str(30,105,200,12,"&#196;úèY:",12,0);
                                                                                                                                                                        POINT_COLOR=BLUE;
                                                                                                                                                                        if(strstr((const char*)(USART3_RX_BUF),"UNREAD")==0)
                                                                                                                                                                                 Show_Str(30+30,75,200,12,"ò&#209;&#182;á",12,0);
                                                                                                                                                                        else Show_Str(30+30,75,200,12,"&#206;′&#182;á",12,0);
                                                                                                                                                                        p1=(u8*)strstr((const char*)(USART3_RX_BUF),",");
                                                                                                                                                                        p2=(u8*)strstr((const char*)(p1+2),"\"");
                                                                                                                                                                        p2[0]=0;//&#188;óè&#235;&#189;áê&#248;·&#251;
                                                                                                                                                                        sim800c_unigbk_exchange(p1+2,p,0);                        //&#189;&#171;unicode×&#214;·&#251;×a&#187;&#187;&#206;agbk&#194;&#235;
                                                                                                                                                                Show_Str(30+75+30,75,200,12,p,12,0);                //&#207;&#212;ê&#190;μ&#231;&#187;°o&#197;&#194;&#235;
                                                                                                                                                                        p1=(u8*)strstr((const char*)(p2+1),"/");
                                                                                                                                                                        p2=(u8*)strstr((const char*)(p1),"+");
                                                                                                                                                                        p2[0]=0;//&#188;óè&#235;&#189;áê&#248;·&#251;
                                                                                                                                                                Show_Str(30+54,90,200,12,p1-2,12,0);                //&#207;&#212;ê&#190;&#189;óê&#213;ê±&#188;&#228;  
                                                                                                                                                                        p1=(u8*)strstr((const char*)(p2+1),"\r");        //&#209;°&#213;ò&#187;&#216;3μ·&#251;
                                                                                                                                                                        sim800c_unigbk_exchange(p1+2,p,0);                        //&#189;&#171;unicode×&#214;·&#251;×a&#187;&#187;&#206;agbk&#194;&#235;
                                                                                                                                                                Show_Str(30+30,105,180,75,p,12,0);                        //&#207;&#212;ê&#190;&#182;ìD&#197;&#196;úèY
                                                                                                                                                                        u3_printf("AT+CTTS=2,\"%s\"\r\n",p);        //TTS&#182;áè&#161;&#182;ìD&#197; ASCII&#196;£ê&#189;
                                                                                                                                                                        smsreadsta=1;                                                                //±ê&#188;&#199;óD&#207;&#212;ê&#190;&#182;ìD&#197;&#196;úèY
                                                                                                                }else
                                                                                                                {
                                                                                                                                                                 Show_Str(30,75,200,12,"&#206;T&#182;ìD&#197;&#196;úèY!!!&#199;&#235;&#188;ì2é!!",12,0);
                                                                                                                                                                 u3_printf("AT+CTTS=2,\"&#206;T&#182;ìD&#197;&#196;úèY&#199;&#235;&#188;ì2é\"\r\n");
                                                                                                                                                                 delay_ms(1000);
                                                                                                                                                                 delay_ms(1000);
                                                                                                                                                                 LCD_Fill(30,75,239,75+12,WHITE);//&#199;&#229;3y&#207;&#212;ê&#190;
                                                                                                                }          
                                                                                  USART3_RX_STA=0;
                                                                   }
                                      if(key==15){u3_printf("AT+CTTS=0\r\n"); break;}
                                                        }
                          msgindex[msglen]=0;
                          LCD_Fill(30+40,50,86,50+16,WHITE);
                          Show_Str(30+40,50,86,16,msgindex,16,0);  //????       
                }
                if(timex==0)                //2.5&#195;&#235;×óóò&#184;üD&#194;ò&#187;′&#206;
                {
                                        if(sim800c_send_cmd("AT+CPMS?","+CPMS:",200)==0)        //2é&#209;ˉó&#197;&#209;&#161;&#207;&#251;&#207;¢′&#230;′¢&#198;÷
                                                {
                                                                        p1=(u8*)strstr((const char*)(USART3_RX_BUF),",");
                                                                        p2=(u8*)strstr((const char*)(p1+1),",");
                                                                        p2[0]='/';
                                                                        if(p2[3]==',')//D&#161;óú64K SIM&#191;¨£&#172;×&#238;&#182;à′&#230;′¢&#188;&#184;ê&#174;ì&#245;&#182;ìD&#197;
                                                                                {
                                                                                         msgmaxnum=(p2[1]-'0')*10+p2[2]-'0'; //&#187;&#241;è&#161;×&#238;′ó′&#230;′¢&#182;ìD&#197;ì&#245;êy
                                                                                         p2[3]=0;
                                                                                }else //è&#231;1&#251;ê&#199;64K SIM&#191;¨£&#172;&#212;ò&#196;ü′&#230;′¢100ì&#245;ò&#212;é&#207;μ&#196;D&#197;&#207;¢
                                                                                {
                                                                                         msgmaxnum=(p2[1]-'0')*100+(p2[2]-'0')*10+p2[3]-'0';//&#187;&#241;è&#161;×&#238;′ó′&#230;′¢&#182;ìD&#197;ì&#245;êy
                                                                                         p2[4]=0;
                                                                                }
                                                                        sprintf((char*)p,"%s",p1+1);
                                                                        Show_Str(30+17*8,50,200,16,p,16,0);//????
                                                                        USART3_RX_STA=0;               
                                                }
                  }       

                   if((timex%20)==0)LED0=!LED0;//200mséá&#203;&#184;
                   timex++;
                   delay_ms(10);
                   if(USART3_RX_STA&0X8000)sim_at_response(1);//&#188;ì2é′óGSM&#196;£&#191;é&#189;óê&#213;μ&#189;μ&#196;êy&#190;Y
         }//ì&#248;3&#246;while
          myfree(SRAMIN,p);
}



在读短信测试里面加了红色的地方为什么不行呢,仿照接电话程序改的啊,求大神

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

234

帖子

0

精华

高级会员

Rank: 4

积分
630
金钱
630
注册时间
2016-8-25
在线时间
57 小时
发表于 2017-2-19 18:39:23 | 显示全部楼层

回帖奖励 +5 金钱

帮忙顶一下
回复 支持 反对

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-11-4
在线时间
29 小时
 楼主| 发表于 2017-2-20 20:06:10 | 显示全部楼层
已解决
回复 支持 反对

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2016-1-18
在线时间
61 小时
发表于 2017-4-19 12:01:04 | 显示全部楼层
楼主,我现在用SIM900a收短信,收到短信后的短信提示是乱码,导致正确判断是否收到短信,你有遇到这种情况吗?帮忙分析一下为什么会乱码
回复 支持 反对

使用道具 举报

57

主题

316

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1344
金钱
1344
注册时间
2018-1-11
在线时间
156 小时
发表于 2018-2-24 16:20:46 | 显示全部楼层

楼主怎么解决的啊,求告知?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 04:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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