OpenEdv-开源电子网

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

求助:GSM(SIM-900A)接收英文短信问题

[复制链接]

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-12-12
在线时间
3 小时
发表于 2016-12-13 15:42:00 | 显示全部楼层 |阅读模式
5金钱
GSM(SIM-900A)接收英文短信问题       
                                        sprintf((char*)p,"AT+CMGR=%s",msgindex);     
                                       
                                        if(sim900a_send_cmd(p,"+CMGR:",200)!=0)   


想从原子哥的程序里改一个收到对英短信就开灯的程序,没有使用LCD屏幕,
sprintf((char*)p,"AT+CMGR=%s",msgindex);  这一句中的msgindex不知道是从哪里获取的,求助,谢谢!     

[mw_shl_code=c,true]/*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(200);//éêÇë200¸ö×Ö½úμÄÄú′æ
//        LCD_Clear(WHITE);
        //POINT_COLOR=RED;
        //Show_Str_Mid(0,30,"ATK-SIM900A ¶á¶ìDÅ2aêÔ",16,240);                                             
        //Show_Str(30,50,200,16,"¶áè¡:     ×üDÅÏ¢:",16,0);        
        //kbd_fn_tbl[0]="¶áè¡";
        //kbd_fn_tbl[1]="·μ»Ø";
        //sim900a_load_keyboard(0,180,(u8**)kbd_tbl1);//ÏÔê¾¼üÅì  
        while(1)
        {
                //key=sim900a_get_keynum(0,180);
                //if(key)
/*                {  
                        if(smsreadsta)
                        {
                                LCD_Fill(30,75,239,179,WHITE);//Çå3yÏÔê¾μĶìDÅÄúèY
                                smsreadsta=0;
                        }
                        if(key<10||key==11)
                        {
                                if(msglen<2)
                                {
                                        msgindex[msglen++]=kbd_tbl[key-1][0];
                                        u2_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==13)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(sim900a_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*)(USART2_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);
                                        */
                                        sprintf((char*)p,"AT+CMGR=%s",msgindex);   //&#213;aà&#239;3&#246;&#206;êìa
                                       
                                        if(sim900a_send_cmd(p,"+CMGR:",200)!=0)//&#182;áè&#161;&#182;ìD&#197;
                                        {
                        //                        p1=(u8*)sim900a_check_cmd(\"+CMTI:\");
                                                p1=(u8*)strstr((const char*)(USART2_RX_BUF),",");
                                                p2=(u8*)strstr((const char*)(p1+2),"\"");
                                                p2[0]=0;//&#188;óè&#235;&#189;áê&#248;·&#251;
                                //                sim900a_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;
                                          if(p1+2) { LED0=!LED0;}
                                        //        if(strstr((const char*)(p1+2),\"on\"))  
                                        //        sim900a_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
                        //                        smsreadsta=1;                                                                //±ê&#188;&#199;óD&#207;&#212;ê&#190;&#182;ìD&#197;&#196;úèY
                                        else
                                        {LED1=!LED1;}          
                                }        */[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

msgindex是短信编号啊,sim900最大只能存储50条短信,这个msgindex的值范围是0~49,自己所以选。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-12-13 15:42:01 | 显示全部楼层
msgindex是短信编号啊,sim900最大只能存储50条短信,这个msgindex的值范围是0~49,自己所以选。
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-12-12
在线时间
3 小时
 楼主| 发表于 2016-12-13 15:46:56 | 显示全部楼层
(u8*)sim900a_check_cmd(\"+CMTI:\");我使用这一句报错:
..\SIM900A\sim900a.c(398): error:  #7: unrecognized token
       p1=(u8*)sim900a_check_cmd(\"+CMTI:\");
..\SIM900A\sim900a.c(398): error:  #29: expected an expression
       p1=(u8*)sim900a_check_cmd(\"+CMTI:\");
..\SIM900A\sim900a.c(398): error:  #8: missing closing quote
       p1=(u8*)sim900a_check_cmd(\"+CMTI:\");
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2016-12-12
在线时间
3 小时
 楼主| 发表于 2016-12-13 15:47:18 | 显示全部楼层
求解释 谢谢拉
回复

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2016-12-13 21:15:41 | 显示全部楼层
我给你上传一个GSM短信的说明文档,其实不管中英文短信,接收的编码格式都是一样的。这个解释了接收短信编码的格式,参照这个基本上就没什么问题了。

非常重要SIM900A短信例程.zip

74.25 KB, 下载次数: 83

专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 08:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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