我想在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));