您好,ALen老师,
我想让mesh节点与server进行通信,我知道mesh也是基于TCP 的,因此,我用网络调试助手做TCP server与mesh节点间通信,能实现mesh节点与server的互相通信。
于是,我想用ESP8266作为TCP server 来实现mesh节点 与server的通信, 我发现mesh节点能正常的发送给server 并解析出数据来,但是server要想发送给该节点反馈信息时,总是发送不出去。显示信息为:“usr conn not exist mesh is busy”不知道是为什么。
所以,我想请教一下Alen老师,ESP8266做server,该怎么和mesh网络间的节点进行互通呢?
附件是eclipse下的esp8266做server的程序,IP为:192.168.1.110 端口7000
麻烦肖工能帮忙解决一下!
谢谢!
Code: Select all
if (!espconn_mesh_get_src_addr(header, &src) || !espconn_mesh_get_dst_addr(header, &dst)) {
MESH_DEMO_PRINT("get addr fail\n");
return;
}
header2 = (struct mesh_header_format *)espconn_mesh_create_packet(
src, // destiny address
dst, // source address
false, // not p2p packet
true, // piggyback congest request
M_PROTO_JSON, // packe with JSON format M_PROTO_BIN
MESH_DEMO_STRLEN(resp), // data length
false, // no option
0, // option len
false, // no frag
0, // frag type, this packet doesn't use frag
false, // more frag
0, // frag index
0); // frag length
if (!header2) {
MESH_DEMO_PRINT("create packet fail\n");
return;
}
if (!espconn_mesh_set_usr_data(header2, resp, MESH_DEMO_STRLEN(resp))) {
MESH_DEMO_PRINT("set user data fail\n");
MESH_DEMO_FREE(header2);
return;
}
MESH_DEMO_PRINT("mesh 连接去哪了?\n");
// espconn_sent(&g_ser_conn,resp,MESH_DEMO_STRLEN(resp)); //将温度信息发送给节点!
if (espconn_mesh_sent((struct espconn *)arg, (uint8_t *)header2, header2->len)) {
MESH_DEMO_PRINT("mesh is busy\n\n");
MESH_DEMO_FREE(header2);
// return;
}
MESH_DEMO_FREE(header2);