arduino库中的字节数组

时间:2015-04-14 13:22:18

标签: parsing arduino byte

好的,所以这里有一个对你来说可能很简单,但我不太确定。

我有以下代码,通过查看代码可能很清楚我想做什么。

Arduino.ino

   RF myRF;  //Creation of RF class.
   const int dataSize = 500;
   byte storedData[dataSize];

   //array is populated through program then the following is called

   myRF.populate(storedData);

RF.CCP

   const int dataSize = 500; 
   byte recivedData[dataSize];

   void RF::populate(byte reciveddata){
   recivedData = reciveddata;
   }

RF.H

 #include Arduino.h
 #ifndef RF_H
 #define RF_H

 class RF { 
     public:
       RF();
       ~RF();
void recive();
void send();
void print();
void sendnew(byte Storeddata);
 };

#endif

但这会产生错误“未声明字节”

希望明确我打算做什么,并希望你能帮助谢谢。

1 个答案:

答案 0 :(得分:0)

您的文件存在两个问题:

h file:

 #include Arduino.h

你应该写

 #include <Arduino.h>

c file:

const int dataSize = 500; 
byte recivedData[dataSize];

void RF::populate(byte reciveddata){
recivedData = reciveddata;
}

这里有一个很大的问题。您在此处声明recivedData,但您想为其分配来自程序其他部分的值。这不是它的工作原理。

IMO你有两种方法可以做到这一点。

1)只存储指向内存的指针;这种方式比解决方案2更快,占用的内存更少,但您必须确保在函数期间不会更改.ino文件中传递的storedData变量

#include "RF.h" // I hope you already included this
byte *recivedData;

void RF::populate(byte *reciveddata){
recivedData = reciveddata;
}

2)将接收到的数组的内容复制到该数组中;这样你就拥有了数组的副本,所以你占用了两倍的内存(但你可以毫无问题地编辑storedData。)

#include "RF.h" // I hope you already included this
const int dataSize = 500; 
byte recivedData[dataSize];
int recivedDataLength;

void RF::populate(byte *reciveddata, int reciveddatalength){
recivedDataLength = (reciveddatalength>dataSize) ? dataSize : reciveddatalength;
for (int i = 0; i < recivedDataLength; i++)
    recivedData[i] = reciveddata[i];
}