介绍了PC如何与传感器通讯,以及接收Sensor采集的数据并向Sensor发送数据。
1. 直接显示数据包内容:
先进入tools/java目录,输入make命令编译。
再设置环境变量:
export MOTECOM=serial@COM1:tmote
(端口) : (比特率,也可以采用数字)
然后开始监听:java net.tinyos.tools.Listen
完毕之后重置环境变量:unset MOTECOM
2. 图形显示数据包内容:
# SerialForwarder程序
java net.tinyos.sf.SerialForwarder -comm serial@COM1:tmote
注意:SerialForwarder监听时不使用MOTECOM变量,而需在命令行参数-comm处指定端口及比特率,这是因为:一般情况下使用SerialForwarder向串口发送包时会用到MOTECOM变量,如果它监听时也用MOTECOM的话,到时候SerialForwarder就只能自己跟自己说话了。把发送的端口和监听的端口分开确定,有助于提高灵活性。
----------------------------------------------------------------------------
# Oscilloscope GUI程序
java net.tinyos.oscope.oscilloscope
注意:保持SerialForwarder运行状态,然后重新打开一个cygwin窗口,然后进入tools/java目录输入命令,打开Oscilloscope程序,可以显示数据包数据的直观图像。
3. MIG消息接口生成工具
MIG工具:可以为Mote应用程序所使用的消息类型自动生成相应的java类。
net.tinyos.message软件包:提供发送和接收MIG生成的数据包。
NCG:从nesC文件中抽取数据以供其他程序使用。
GraphPanel.java
// OK, connect to the serial forwarder and start receiving data
mote = new MoteIF(PrintStreamMessenger.err, oscilloscope.group_id);
mote.registerListener(new OscopeMsg(), this);
|
GraphPanel程序的作用:连接到Serial Forwarder,向其注册自己的数据包及处理函数,然后再监听、接收及发送数据包。
# 示例:如何通过MIG生成自定义消息类型的java类?
查看tools/java/net/tinyos/oscope/Makefile里面有如下一条命令:
OscopeMsg.java:
$(MIG) -java-classname=$(PACKAGE).OscopeMsg $(APP)/OscopeMsg.h OscopeMsg -o $@
$(MIG) -java-classname=$(PACKAGE).OscopeMsg $(APP)/OscopeMsg.h OscopeMsg -o $@
其中PACKAGE=net.tinyos.oscope,APP= $(TOS)/../apps/Oscilloscope
这条命令指示MIG到APP路径下找到OscopeMsg.h文件,从中找到OscopeMsg的Struct定义,再以此生成相应的java类:net.tinyos.oscope.OscopeMsg