我有三个nodemcu,我想通过nRF24l01 +发送一个结构,但是我的结构大小为52字节,而nRf24l01 +模块只是发送32字节! 我应该如何发送我的结构?
我的结构:
struct fullData{
unsigned long ttime;
String data1;
String data2;
String data3;
String data4;
}sndData,recData;
我尝试过这种方法,但是没用:
发射器代码:
void sendOverRadio(){
char data[sizeof(sndData)];
memcpy(data, &sndData, sizeof(sndData));
radio.stopListening();
int z = 0;
for(int i= 0 ; i<2 ; i++){
char dt[32];
dt[0] = i;
for(int j =1 ; j<32;j++){
dt[j]=data[z];
z +=1;
}
radio.write(&dt , sizeof(dt));
}
radio.startListening();
}
接收方代码:
char data[sizeof(recData)];
void loop(){
if(radio.available()){
Serial.println("Radio Available...");
char dt[32];
while (radio.available()){
radio.read(&dt, sizeof(dt));
}
if(dt[0]==0){
memset(data, 0, sizeof(data));
memcpy(data, &dt[1], 32);
}else if(dt[0]==1){
memcpy(&data[32], &dt[1], 32);
memcpy(&recData, data, sizeof(recData));
}
}
}
答案 0 :(得分:0)
RF24Network库处理有效载荷拆分。像这样发送您的结构:
RF24NetworkHeader header(0, 'D');
if (!NETWORK.write(header, &sndData, sizeof(sndData))) {
Serial.println(F("Error."));
} else {
Serial.println(F("Success."));
}