0

我正在尝试使用此功能来设置在代码单播 contiki 中向其他节点发送数据包的节点,但此功能不起作用,有什么问题?你能帮我吗 !我想对需要的 2 个节点进行拓扑:如果节点 2 收到来自节点 1 的数据包,则节点 2 将数据包 ACK 发送到节点 1,以宣布节点 2 已收到来自节点 1 的数据包。我在 contiki 中使用单播程序。, 我使用函数linkaddr_set_node_addr (linkaddr_t *addr) 来设置节点1 发送数据包,但是这个函数不起作用,请有人帮助我。这是我的代码:

    linkaddr_t addr;
    addr.u8[0]=2;
    addr.u8[1]=0;
    packetbuf_copyfrom("GINDBK",5);
    unicast_send(&uc,&addr);
    if (linkaddr_node_addr.u8[0]==1 && linkaddr_node_addr.u8[1]==0)
    {
        linkaddr_t addr;
        addr.u8[0]=2;
        addr.u8[1]=0;
        linkaddr_set_node_addr(&addr);
        packetbuf_copyfrom("ACK",20);
        addr.u8[0]=1;
        addr.u8[1]=0;
        unicast_send(&uc,&addr);

    }
4

1 回答 1

0

我认为问题在于地址分配。您不能简单地为地址的字节赋值。代替:

linkaddr_t addr;
addr.u8[1] = 2;
addr.u8[0] = 0;
linkaddr_set_node_addr(&addr);

以这种方式为 addr 赋值:

linkaddr_t addr = {{2,0}};
linkaddr_set_node_addr(&addr);

如果您想检查两个地址是否相等使用:

linkaddr_cmp(&addr, &addr2)
于 2020-03-23T10:43:07.330 回答