【问题标题】:Trouble receiving radiopacaket from Lora radio无法从 Lora 收音机接收 radiopacaket
【发布时间】:2019-08-24 02:13:46
【问题描述】:

我无法接收从 Lora rf95 收发器发送的无线电数据包。

我尝试将接收到的数组声明为 char、uint8_t 以及使用 len 作为大小,但是大小为 7,所以我认为我所做的没问题。我使用时它没有收到任何东西:

uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);

    if (rf95.recv(buf, &len))
    {
      digitalWrite(LED, HIGH);
      RH_RF95::printBuffer("Received: ", buf, len);
      Serial.print("Got: ");
      Serial.println((char*)buf);}

当我使用时它确实以与收发器相同的速率接收一些东西:

uint8_t P;

if(rf95.recv((uint8_t*)P,7)){

  Serial.print((char)P);
Serial.println();

它打印新行但没有数据。它以前可以工作,但是当我开始尝试调整功率时,它不再起作用,所以我尝试了其他方法。我是编码新手,所以请不要吝啬,感谢您提供的任何帮助。

【问题讨论】:

    标签: arduino arduino-uno uint8t lora lorawan


    【解决方案1】:

    您正在将uint8_t 转换为uint8_t*,这意味着您的未初始化 变量将用于指向rf95.recv 将开始存储其数据的位置。这意味着如果P = 5 它将从内存位置5 开始,如果P = 0 它将产生一个null 指针。

    你应该做的是获取P的地址:rf95.recv(&P,7))

    因此这些行应该是:

    rf95.recv(&buf, &len)

    RH_RF95::printBuffer("Received: ", &buf, len);

    Serial.println(buf[0]); 甚至更好:

    for(uint8_t i = 0; i<len; ++i) {
        Serial.println(buf[i]);
    }
    

    您的第二个代码块没有打印出任何数据,因为P 未初始化并且可能包含值0。因此,您收到的数据存储在地址0,而不是变量的地址,因此由于第一个指针问题,您的接收没有更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 2019-10-24
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多