OpenEdv-开源电子网

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

关于通过WIFI模块控制led的问题

[复制链接]

12

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2016-6-7
在线时间
29 小时
发表于 2016-8-2 12:58:26 | 显示全部楼层 |阅读模式
1金钱
char rec[6],*p2;       
...
...
...

if(USART3_RX_STA&0X8000)                //接收到一次数据了
        {        

          rlen=USART3_RX_STA&0X7FFF;        //得到本次接收到的数据长度
                USART3_RX_BUF[rlen]=0;                //添加结束符
        //************************************
        for(i=0;i<rlen;i++)
        {       
                rec[i]=USART3_RX_BUF[i];
               
        }
        p2=rec;
                if(strcmp(p2,“open”)==0)
        {
                LED1=0;
                memset(rec,0,strlen(rec));
        }       
        if(strcmp(p2,"close")==0)
        {
        LED1=1;       
        memset(rec,0,strlen(rec)); //清除rec数组
        }
                //*********************************       

想实现在WIFI模块ap 客户端模式下通过网络助手发送open和close控制战舰版的led1亮灭,所以在程序源码wifiap.c中接受数据的地方加入了一段判断数据的代码,程序编译通过,下载到板上,调到ap客户端模式 正常通信以后,发送open, tft屏幕上显示接受到4个字节open.    但是led1不亮。     如果将 if(strcmp(p2,“open”)==0)改成if(strcmp(p2,“open”)!=0)  
LED1=!LED1;这时led1可以实现翻转。         这样的话就表明我发送的open,  和它接受到的open不相等,     请问是哪里出问题了,怎么修改能实现对led的控制呢???
                                                                                                                                                                                                                                                  谢谢!!!

最佳答案

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

看看是不是P2指向的字符串里面,没有结束符的原因。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2016-8-2 12:58:27 | 显示全部楼层
看看是不是P2指向的字符串里面,没有结束符的原因。
回复

使用道具 举报

12

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2016-6-7
在线时间
29 小时
 楼主| 发表于 2016-8-3 16:26:00 | 显示全部楼层
怎么有回应啊,是我把问题描述的不够清晰吗
回复

使用道具 举报

12

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2016-6-7
在线时间
29 小时
 楼主| 发表于 2016-8-3 21:26:27 | 显示全部楼层
正点原子 发表于 2016-8-3 19:47
看看是不是P2指向的字符串里面,没有结束符的原因。

谢谢原子哥!果然是这个原因,改成“i<=rlen”就可以了。
*******************************************************
这个问题解决了,还有个问题如下:
当选择ap服务器模式时,发送open,  屏幕显示接受15个字节      +IPD,0,4,pen
问题1:我发送的open是4个字节,“+IPD,0,4:”是9个字节,加上结束符“0”是1个字节
4+9+1=14                还有一个字节是哪里来的?
问题2:接受到的15个字节最后5位是不是open和结束符,假如是的话 做如下测试:
for(i=10;i<=rlen;i++)
        {       
                rec[j]=USART3_RX_BUF;
                j++;      //前面定义了int  j=0;
        }
        p2=rec;
数据判断代码同客户端模式,编译通过,能发送数据,但是灯不亮,
判断改为if(strcmp(p2,“open”)!=0) LED1=!LED1;能实现灯的翻转。
            这个是那里出问题了,怎么解决??
                                                        辛苦了原子哥,十分感谢!!!
回复

使用道具 举报

12

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2016-6-7
在线时间
29 小时
 楼主| 发表于 2016-8-3 21:33:13 | 显示全部楼层
正点原子 发表于 2016-8-3 19:47
看看是不是P2指向的字符串里面,没有结束符的原因。

那个表情的位置是+IPD,0,4pen
怎么显示成表情了,不过这不是重点,知道是什么就好
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-23 05:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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