1. 接收回调函数:
// 注册接收回调函数,
例程回调函数是:esp_now_register_recv_cb(OnDataRecv); 没有错误,可以就是无法编译!
最后找到官贴,才发现新版本需要将OnDataRecv 改写成:esp_now_recv_cb_t(OnDataRecv)
这版本改的真玄妙!?
2. 接收指针变量问题:
// 数据接收回调函数
void OnDataRecv(const uint8_t *mac, const uint8_t *data, int len) {
FloatData receivedData;
// 复制接收到的数据到结构体(注意:data已经是指针了,前不能加& !!!)
memcpy(&receivedData, data, sizeof(receivedData));
}
结果我“COPY”的例程中在变量转移采用的是:memcpy(&receivedData, &data, sizeof(receivedData));
&data改变了指针的性质,导致接收到的数据与发送不相关,但却是“同步”接收正常。
3. 发送方如果有为了节电,采用LITGH SLEEP定时唤醒,则休眠不能大于1秒,否则网络判断为“失恋”,丢帧率大于90%.
_______________________________________________________________________________________
以上是反复长时间测试的结果,不代表产品质量问题,
仅是esp_now多次测试结果,希望大家引起重视。 |