|
发送接收双方即终端和基站都用ESP32配NRF24L01,下面程序是要求终端上报自己ID号,基站根据多个终端的ID号,进行点名,终端收到数据发现是自己号码,就上报自己号码,表示自己正常,不发送的说明有故障。如下是部分程序:
先看基站程序:(部分关于要求终端上报ID的程序)
// for(int k=0;k<1;k++){//循环开始
uint8_t data[14] = {14,13,12,11,10,9,8,7,m1,m2,m3,m4,m5,1};//五位ID号拆分成五个个位数发送
nrf24.send(data, sizeof(data));
for(int h=0;h<14;h++)
{
Serial.print(data[h]);
Serial.print(", ");
}
Serial.println(" ");
nrf24.waitPacketSent();
delay(100);
// 接收
uint8_t data1[14];
uint8_t len = sizeof(data1);
nrf24.recv(data1, &len);
// Serial.print("data1[13]=");
// Serial.println(data1[13]);
for (int h = 0;h<14;h++){
Serial.print(data1[h]);
Serial.print(",");
}
if(buf[0]==2){
buf8=buf[8]*10000;
buf9=buf[9]*1000;
buf10=buf[10]*100;
buf11=buf[11]*10;
buf12=buf[12];
bufx=buf8+buf9+buf10+buf11+buf12;
Serial.print(bufx);
Serial.println(" ok");
client.print(bufx);
client.print("OK ");
}
在看终端程序:(部分关于收到要求自己上报ID号后进行上报ID的程序)
uint8_t buf[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
uint8_t len = sizeof(buf);
if (nrf24.recv(buf, &len))
{
// NRF24::printBuffer("request: ", buf, len);
red = buf[0];
grn = buf[1];
blu = buf[2];
dur = buf[3];
itv = buf[4];
fois = buf[5];
Ahour = buf[6];
Aminute = buf[7];
Asecond = buf[8];
ComHor = buf[9];
ComMin = buf[10];
ArsHor = buf[11];
ArsMin = buf[12];
FFmount = buf[13];
//上报自己是否正常程序,下面是检查是否收到 {14,13,12,11,10,9,8,7,6,5,4,3,2,1},如果最后一个值是1,说明基站要求上报自己是否正常。下面是程序段,收到这个值就发送2。
if ((FFmount==1)&&(ArsMin==e)&&(ArsHor==d)&&(ComMin==c)&&(ComHor==b)&&(Asecond==a))
// if (FFmount == 1)
{
//循环开始
for (int h = 0; h < 2; h++) {
uint8_t data1[14];
//= {2, 2, 2, 2, 2, 2, 2, 2, a, b, c, d, e, 2};上报格式
data1[0]=2;
data1[1]=2;
data1[2]=2;
data1[3]=2;
data1[4]=2;
data1[5]=2;
data1[6]=2;
data1[7]=2;
data1[8]=a;
data1[9]=b;
data1[10]=c;
data1[11]=d;
data1[12]=e;
data1[13]=2;
nrf24.send(data1, sizeof(data1));//上报自己ID
nrf24.waitPacketSent();
delay(20);
}
Serial.print("*****");
// Serial.print(nrf24.send(data1, sizeof(data1)));
Serial.print("*****");
for (int h = 0;h<14;h++){
Serial.print(data1[h]);
Serial.print(",");
}
Serial.print("");
// }
//循环结束
Serial.println("ALL OK...");
// Serial.println(FFmount);
}
上述程序中,终端已经收到基站要求自己上报,并且进行了上报,现在问题是,上报了自己ID号,但是基站收到的都是一串0.
请问各位大侠,问题出在哪?
|
|