首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RadioHead Mesh网络通信

RadioHead Mesh网络通信
EN

Stack Overflow用户
提问于 2021-10-28 21:40:31
回答 1查看 136关注 0票数 1

我正在使用LilyGO TTGO T-beam和ESP32来创建一个带有RadioHead Library的LoRa mesh网络。我遇到了一个问题,我的mesh客户端能够与mesh服务器连接,但服务器从客户端接收到0字节。有什么建议吗?谢谢。Current Outcome Picture

设置:

代码语言:javascript
复制
#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

发送代码:

代码语言:javascript
复制
int MeshSend(String message) {
  int msgLen = message.length() + 1;
  uint8_t byteData[msgLen] = {'\0'};

  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);
}

接收代码:

代码语言:javascript
复制
void loop() {
    uint8_t len = RH_MESH_MAX_MESSAGE_LEN;  // 250
    uint8_t from;
    driver.setModeRx();
    if (manager.recvfromAck(buf, &len, &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);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-29 01:08:36

好了,问题解决了,我需要使用manager.available()检查状态并删除manager.setModeRx()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69761260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档