接收所有LoRa 数据包时出现问题

问题描述

目前,我尝试通过读取串行线路并通过 LoRa 发送输入来在一个 Heltec WIFI LoRa V2 和另一个之间发送数据包。

小数据包(如 30 字节)每次都可以工作,但随着数据包变大,数据包不会每次都收到,甚至永远不会收到。

所以我写了一个小的发送循环,我的发送者在每次迭代时发送一个数据包,每次都会变大 10 字节,令人惊讶的是,发送者收到了每个数据包(我尝试了直到 500 字节)。

在那之后,我想发送一个 80 字节的串行输入消息,但这不起作用。你知道这有什么问题吗?

void setup() {
  // ... LoRa.begin(); ....
  LoRa.onReceive(onReceive);
  // ... LoRa.receive(); ...
}

void onReceive(int packetSize) { // uses the interrupt pin on the dio0
  String packet = "";
  
  packSize = String(packetSize,DEC);
  for (int i = 0; i < packetSize; i++) { 
    packet += (char) LoRa.read();
  }
  
  Serial.println(packet);
  delay(5);
} ``` 


``` // writer
boolean sendPacket (String packet) {
  Serial.println("Send begin");

  LoRa.beginPacket(false); // true: optional implicit mode (--> Set everything on both sides?!)
  LoRa.setTxPower(14,RF_PACONfig_PASELECT_PABOOST);
  LoRa.print(packet); // also LoRa.write(byte(,length));
  LoRa.endPacket(false); // true: async mode: doas not wair until transmission is completed
      
  delay(250);
  
  // put the radio into receive mode
  LoRa.receive(); // set redio back in receive mode
  
  delay(750);
  Serial.println("Send end");
  return true;  // will be changed
}

void loop(){
  while(Serial.available() > 0 ){
      delay(2);  //delay to allow byte to arrive in input buffer
      String text = Serial.readString();
      digitalWrite(LED,HIGH);   // turn the LED on (HIGH is the voltage level)
      boolean packetSent = false;

      while (!packetSent) {
        packetSent = sendPacket(text);
        if (packetSent) {
          Serial.print("Packet has been sent: ");
          Serial.println(text);
        } else {
          Serial.print("Retry sending packet: ");
          Serial.println(text);
        }
      }                       
      digitalWrite(LED,LOW);   // turn the LED off (HIGH is the voltage level)
  }   
} ```

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)