tinyso中的pc与串口通信实验中,按照官方文档去处理,包括listen MIG.这里说的是在MIG中遇到的问题和解决办法。
在MIG的实验中,我们把BaseStation烧录一个telosb节点,然后把BlinkToRadio烧录进另外一个结点。当然要改配置文件和头文件以及顶层配置文件中的两个地方
COMPONENT=BlinkToRadioAppC
BUILD_EXTRA_DEPS=BlinkToRadioMsg.class
CLEAN_EXTRA = *.class BlinkToRadioMsg.java
BlinkToRadioMsg.class: BlinkToRadioMsg.java
javac BlinkToRadioMsg.java
BlinkToRadioMsg.java:
mig java -target=null $(CFLAGS) -java-classname=BlinkToRadioMsg BlinkToRadio.h BlinkToRadioMsg -o $@
include $(MAKERULES)
以上是Makefile的内容
#ifndef BLINKTORADIO_H
#define BLINKTORADIO_H
enum {
AM_BLINKTORADIOMSG = 6,
TIMER_PERIOD_MILLI = 250
};
typedef nx_struct BlinkToRadioMsg {
nx_uint16_t nodeid;
nx_uint16_t counter;
} BlinkToRadioMsg;
#endif
以上是头文件的内容,这里改的是enum中的定义
#include <Timer.h>
#include "BlinkToRadio.h"
configuration BlinkToRadioAppC {
}
implementation {
components MainC;
components LedsC;
components BlinkToRadioC as App;
components new TimerMilliC() as Timer0;
components ActiveMessageC;
components new AMSenderC(AM_BLINKTORADIOMSG);
components new AMReceiverC(AM_BLINKTORADIOMSG);
App.Boot -> MainC;
App.Leds -> LedsC;
App.Timer0 -> Timer0;
App.Packet -> AMSenderC;
App.AMPacket -> AMSenderC;
App.AMControl -> ActiveMessageC;
App.AMSend -> AMSenderC;
App.Receive -> AMReceiverC;
}
以上是顶层配置文件的内容,注意AMSenderC,AMReceiverC里面的参数。
这样更改以后就可以运行
java net.tinyos.tools.MsgReader BlinkToRadioMsg -comm serial@/dev/ttyUSB0:telosb
但是你发现
serial@/dev/ttyUSB0:115200: resynchronising
这个和想象的打印内容不一样。
笔者弄了很久,然后参LIsten的弄法,把BaseRadio的节点连接在USB上,把路径切回BlinkToRadio,然后在管理员权限下运行
java net.tinyos.tools.MsgReader BlinkToRadioMsg -comm serial@/dev/ttyUSB0:telosb
就OK了。