天线|RF射频
直播中

莫联雪

7年用户 1116经验值
私信 关注
[问答]

NRF24l01不能更新发送过来的数据是为什么?

接收处:使用原子哥的代码

if(mode==0)//RX模式

{

           RX_Mode();

           LCD_ShowString(60,100,"RX-----MODE");     

           while(1)

          {                    

              if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.

               {

                  LCD_ShowString(60,190,tmp_buf);

                 }   

        

            };

}

使用这个时候能够更新发送端送来的字符数据;但是为什么当我改成

while(1)

{

       RX_Mode(); //进入接收模式

       LCD_ShowString(60,100,"RX-----MODE");

      if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.

      {



         tmp_buf[32]=0;//加入字符串结束符

          LCD_ShowString(60,190,tmp_buf);

       }  

}

时候,可以接收到一个数据,但是不能更新新发送过来的数据,这是为什么呢?





我的目的是想接送到发送端送来的数据,进行识别,进而执行符合我的想要程序,但是在原子哥的程序中却不知道该怎么写,从而获取

发送端的数据,找不到原子哥程序中哪里有返回发送端送来的数据!求原子哥指点!!than you

回帖(2)

曹珉

2020-5-1 06:15:53
就是接受在tmp_buf里面的。

你代码改过之后,不停的设置RX_Mode和显示RX--MODE,不要这么做!

RX_MODE设置一次就够了,不停的设置,很可能导致收不到数据。
举报

洪欣意

2020-5-1 06:35:09

一早起来又开始调试了,不过这次我修改了数组,发送和接收数据的宽度  

其他前后没变,但现在测试成功了;我只是加了一个for循环,接收机的数据就能刷新了

#define TX_PLOAD_WIDTH  1  //20字节的用户数据宽度

#define RX_PLOAD_WIDTH  1  //20字节的用户数据宽度



//-----------------------------------------------------------------

        while(1)

        {

                  RX_Mode();        //进入接收模式

                LCD_ShowString(60,100,"RX-----MODE"); 

                if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.

                 {

                                   

                                       

                                        for(i=0;i<1;i++)

                                         {

                                          //LCD_ShowString(60,190,tmp_buf);

                                          number = tmp_buf;

                                          LCD_ShowNum(100,140,number,4,16);       

                                         }

                                        switch(number)

                                        {

                                                case 0:        PAout(8)=0Dout(2)=1;break;

                                                case 1: Aout(8)=1Dout(2)=0;break;

                                                case 2:        PAout(8)=0Dout(2)=0;break;

                                                case 3:        PAout(8)=1Dout(2)=1;break;

                                        }                         

                }        

        }         



//-----------------------------------------------

疑惑的是我加了个for循环就可以了,如果不加这个循环就无法更新,求解



举报

更多回帖

发帖
×
20
完善资料,
赚取积分