我想在Contiki OS中使用广播功能广播整数数组。但是,当给定整数数组作为输入时,packetbuf_copyfrom()函数似乎对我不起作用。通过Cooja的“无线电消息工具”监视消息时,数据包似乎为空。

This是使用char数组作为参数的外观,而like that则是使用整数数组尝试完全相同时的外观。

根据Contiki文档,该函数需要一个空指针并调用memcpy函数,这对于整数应该不是问题吗?

int packetbuf_copyfrom(const void *from, uint16_t len)
{
    uint16_t l;
    packetbuf_clear();
    l = len > PACKETBUF_SIZE? PACKETBUF_SIZE: len;
    memcpy(packetbufptr, from, l);
    buflen = l;
    return l;
}


我正在使用

/contiki/examples/rime/example-broadcast.c


带有contiki 2.7的Cooja Simulator中的Z1 Motes上的文件。

我的错误可能在哪里?

最佳答案

我不知道Contiki,但是只要您正确调用packetbuf_copyfrom,代码就可以正常运行。只需注意,该工具尝试将数据包内容解码为ASCII,因此显示Hello67890,但整数不是ASCII,因此显示为........

将该函数称为:

int myArray[10]= {1,2,3,4,5,6,7,8,9,0};
packetbuf_copyfrom(myArray, sizeof(myArray));

10-05 19:49