如何在我自己的应用程序中使用Cooja中的collect-view

时间:2016-03-22 06:18:22

标签: contiki

我有一个关于收集视图的问题。可以在其他应用程序中使用collect-view吗?我通过cooja模拟一些应用程序,并希望收集有关网络的信息,如网络地图,ETX等。我如何使用collect-view收集有关我自己的应用程序的信息? 谢谢!

2 个答案:

答案 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匹配。