gpt4 book ai didi

c++ - 在 Arduino 上使用 RF24Network 发送一个字符数组

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:10 25 4
gpt4 key购买 nike

我正在尝试使用 RF24Network库创建一个传感器网络,其中根节点使用 PubSubCient 连接到 MQTT 代理图书馆。

我做了一个基本测试,将 MQTT 主题和消息有效负载从 MQTT 中继到网络中的另一个节点,它通过使用 sprintf 来实现。创建当前 millis() 的分隔字符串根节点上的时间、存储在大小为 200 的汽车数组中的主题和消息(因为必须预定义 RF 有效载荷的大小),我可以从串行输出中看到这是正确完成的。

然而,从接收节点的串行输出中,我发现只接收到字符串的前 24 个字符,我不知道为什么会这样。

发送节点代码:

void ByteToChar(byte* bytes, char* chars, unsigned int count){
for(unsigned int i = 0; i < count; i++)
chars[i] = (char)bytes[i];
chars[count] = '\0';
}

void callback(char* topic, byte* message, unsigned int length) {
Serial.println("Sending...");

char buf[length + 1];
ByteToChar(message, buf, length);

char payload[200];
sprintf(payload, "%lu:%s:%s", millis(), topic, buf);

Serial.println(payload);
Serial.println(sizeof(payload));

RF24NetworkHeader header(other_node);
bool ok = network.write(header, payload, sizeof(payload));
if (ok)
Serial.println("ok.");
else
Serial.println("failed.");

free(payload);
}

和接收节点:

while ( network.available() )
{
RF24NetworkHeader header;
char payload[200];
memset(payload, 0, 200);
network.read(header, &payload, sizeof(payload));

Serial.println(payload);
Serial.println(sizeof(payload));
free(payload);
}

我刚才忽略了一些非常简单的事情并非不可能。非常感谢任何帮助。

编辑:这可能会有帮助,这是我从根节点发送的数据: 4203:in_3:hello world again

这就是我得到的: 4203:in_3:hello world ag

最佳答案

查看 size_t RF24Network::read 的来源

bufsize = min(maxlen,frame_size-sizeof(RF24NetworkHeader));

最多 24 个字节。

关于c++ - 在 Arduino 上使用 RF24Network 发送一个字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18170553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com