我有一个关于收集视图的问题。可以在其他应用程序中使用collect-view吗?我通过cooja模拟一些应用程序,并希望收集有关网络的信息,如网络地图,ETX等。我如何使用collect-view收集有关我自己的应用程序的信息? 谢谢!
答案 0 :(得分:0)
在apps/collect-view
或您的应用程序中,您可以通过重新定义collect_view_arch_read_sensors
来添加您自己要收集的信息,例如检查{{1}中Z1 mote是如何完成的}:
collect-view-z1.c
请注意,当您从应用程序中调用#include "collect-view.h"
#include "cc2420.h"
#include "dev/leds.h"
#include "dev/i2cmaster.h"
#include "dev/tmp102.h"
#include "collect-view-z1.h"
/*---------------------------------------------------------------------------*/
static uint16_t
get_temp()
{
/* XXX Fix me: check /examples/z1/test-tmp102.c for correct conversion */
return (uint16_t)tmp102_read_temp_raw();
}
/*---------------------------------------------------------------------------*/
void
collect_view_arch_read_sensors(struct collect_view_data_msg *msg)
{
static int initialized = 0;
if(!initialized) {
tmp102_init();
initialized = 1;
}
msg->sensors[BATTERY_VOLTAGE_SENSOR] = 0;
msg->sensors[BATTERY_INDICATOR] = 0;
msg->sensors[LIGHT1_SENSOR] = 0;
msg->sensors[LIGHT2_SENSOR] = 0;
msg->sensors[TEMP_SENSOR] = get_temp();
msg->sensors[HUMIDITY_SENSOR] = 0;
}
时,collect_view_arch_read_sensors(msg);
会调用collect-view.c
。这是在examples/ipv6/rpl-collect/udp-sender.c示例中完成的方式:
collect_view_construct_message(...)
答案 1 :(得分:-1)
当contiki调用Call back函数(例如rime-protocol中的 recv()函数)时,接收器节点应使用 printf()打印出传感器数据。然后,每行的“收集视图” GUI会读取此输出。
看看 tools/collect-view/src/org/contikios/contiki/collect/CollectServer.java
由 serialData()调用的 handleIncomingData(),然后在 SensorData.parseSensorData()中检查它是否是传感器数据。 如果为空,格式,注释或注释不正确,它将忽略
如果满足某些条件,传感器数据将显示在“收集视图” GUI中。例如,计算出的数据长度与其传感器数据暗含datalen匹配。