我想使用 Contiki OS 中的广播函数来广播整数数组。然而,当给出整数数组作为输入时, packetbuf_copyfrom() 函数似乎对我不起作用。当通过 Cooja 的“ radio 消息工具”监控消息时,数据包似乎是空的。
This就是使用 char 数组作为参数和 like that 的样子当尝试做完全相同的事情时,只需使用整数数组。
根据 Contiki 文档,该函数需要一个 void 指针并调用 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 模拟器中的 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));
关于Contiki:广播整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33608485/