RadioHead Mesh网络通讯
RadioHead Mesh network communication
我正在使用 LilyGO TTGO T-beam with ESP32 to create a LoRa mesh network with RadioHead Library。我遇到了一个问题,即我的网状客户端能够连接到网状服务器,但服务器从客户端接收到 0 个字节。有什么建议吗?谢谢。
Current Outcome Picture
设置:
#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] = {'[=11=]'};
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, &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);
}
}
的,问题解决了,我需要用manager.available()
查看状态,去掉manager.setModeRx()
。
我正在使用 LilyGO TTGO T-beam with ESP32 to create a LoRa mesh network with RadioHead Library。我遇到了一个问题,即我的网状客户端能够连接到网状服务器,但服务器从客户端接收到 0 个字节。有什么建议吗?谢谢。 Current Outcome Picture
设置:
#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] = {'[=11=]'};
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, &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);
}
}
的,问题解决了,我需要用manager.available()
查看状态,去掉manager.setModeRx()
。