求帮助。。Arduino 使用nRF24L01模块发送char型数组的问题

有几组数据分别是不同长度,eg:Fxxx;
Fx.xxx;
Dx:xxx;
x:代表的是数字
现在想通过这个2.4G模块将这个数组发送出去,接收端接收后将数据通过串口打印出来

经过几天的查帖没有发现有用这个模块发送字符串的例子。。就很苦恼

---------------------------------------------发送端代码--------------------------------------------
 

[C] 纯文本查看 复制代码

?

代码

001

002

003

004

005

006

007

008

009

010

011

012

013

014

015

016

char txData[9];  //接收串口读入数据的数组

void setup()

{

  Serial.begin(9600);

  Mirf.cePin = 8;

  Mirf.csnPin = 7;

  Mirf.spi = &MirfHardwareSpi;

  Mirf.init();

   

  Mirf.setRADDR((byte *)"ABCDE"); //设置自己的地址(发送端地址),使用5个字符  

  Mirf.payload = 48;  //疑问: 如果要发送的话这里应该是byte类型数组的长度还是char数组类型的长度。。?

  Mirf.channel = 90;              //设置所用信道(自动寻道匹配)

  Mirf.config();

  Serial.println("InitReady");

}



 

[C] 纯文本查看 复制代码

?

代码

001

002

003

004

005

006

007

008

009

010

011

012

013

014

015

016

017

void loop()

{

  Mirf.setTADDR((byte *)"FGHIJ");           //设置接收端地址

  if(Serial.available() > 0)

  {

    /*这里是数据处理的部分, 得到的数组txd[9] 就是对应本帖开头的三种数据格式*/

    //这里输出的比如是F1.23

   }

      Serial.print(txd);

//Serial.println(strlen((byte)txd)); //这个打印出来的大小是45 - 47左右的数值

Mirf.send((byte *) txd);  //不知道这样写对不对

    }

  }

  char txData[9] = {};   //数组清空

  while(Mirf.isSending()) delay(1);         //直到发送成功,退出循环

  delay(1500);

}

   


---------------------------------------------发送端结束--------------------------------------------

---------------------------------------------接收端代码--------------------------------------------
代码

001

002

003

004

005

006

007

008

009

010

011

012

013

014

015

016

017

018

019

020

021

022

023

024

025

026

027

028

029

030

031

char rxData[9];

void setup()

{

  Serial.begin(9600);

  Mirf.cePin = 8;

  Mirf.csnPin = 7;

  Mirf.spi = &MirfHardwareSpi;

  Mirf.init();

  

  Mirf.setRADDR((byte *)"FGHIJ"); //设置自己的地址(接收端地址),使用5个字符

  Mirf.payload = 48; //同上的问题

  Mirf.channel = 90;   //设置使用的信道

  Mirf.config();

  Serial.println("Listening...");  //开始监听接收到的数据

}

void loop()

{

  if(Mirf.dataReady())

  //当接收到程序,便从串口输出接收到的数据

    Mirf.getData((byte *) rxData);

    Serial.print("Got data: ");

    Serial.println(rxData);

  }

  char rxData[9] = {};

  delay(1500);

}

---------------------------------------------接收端结束--------------------------------------------

这个最后的结果见图
小白求助。。这个Mirf.send()函数发送数组的时候应该怎么做,网上查的是要转型为byte类型的数组,一位一位的发送,但是转完型之后的数组长度为什么会大很多导
致在发送的时候数组的长度不知道怎么确定。经过查询Arduino里面的byte和char只是符号和范围的区别。。因此现在很乱。。请社区里的各位大佬赐教!!
如果有发送char数组的例程就更好啦,谢谢各位啦
 

串口结果,左边是接收端,右边是发送端

串口结果,左边是接收端,右边是发送端

猜你喜欢

转载自blog.csdn.net/dongd_70/article/details/82811372
今日推荐