Сетевая сетевая связь RadioHead

#arduino

Вопрос:

Я использую T-beam LilyGO TTGO с ESP32 для создания ячеистой сети LoRa с библиотекой RadioHead. Я столкнулся с проблемой, заключающейся в том, что мой сетчатый клиент может подключаться к сетчатому серверу, но сервер получает 0 байт от клиента. Есть ли какие-либо предложения? Спасибо. Текущая картина результатов

Настройки:

 #define SCK     5   // GPIO5  -- SX1278's SCK
#define MISO    19  // GPIO19 -- SX1278's MISnO
#define MOSI    27  // GPIO27 -- SX1278's MOSI
#define SS      18  // GPIO18 -- SX1278's CS
#define RST     23  // GPIO14 -- SX1278's RESET --- I tried both of them, none of them works.
#define DI0     26  // GPIO26 -- SX1278's IRQ(Interrupt Request)
#define SELF_ID 1
#define SERVER_ID 254

RHSoftwareSPI spi;
RH_RF95 rf95(SS, DI0, spi);
RHMesh loraMesh(rf95, SELF_ID);  // Server would be SERVER_ID
 

Отправка кода:

 int MeshSend(String message) {
  int msgLen = message.length()   1;
  uint8_t byteData[msgLen] = {''};

  message.getBytes(byteData, message.length());

  if (DEBUG) {
    Serial.print("Sending '");
    Serial.print((char*)byteData);
    Serial.println("' to rf95_server, length is "   String(msgLen)   ".");
  }
  sleep(50);  // Stop whole process for cleaning buff
  counter  = 50;

  return loraMesh.sendtoWait(byteData, msgLen, SERVER);
}
 

Получение кода:

 void loop() {
    uint8_t len = RH_MESH_MAX_MESSAGE_LEN;  // 250
    uint8_t from;
    driver.setModeRx();
    if (manager.recvfromAck(buf, amp;len, amp;from)) {
      if (DEBUG) {
        Serial.print("Got ");
        Serial.print(len);
        Serial.print(" bytes of message from ");
        Serial.print(from, HEX);
        Serial.print(": ");
      }
      Serial.println((char*) buf);
    }
}
 

Ответ №1:

Хорошо, проблема решена, мне нужно использовать manager.available() для проверки статуса и удаления manager.setModeRx() .