PC与串口通信

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了。


你可能感兴趣的:(ubuntu,串口通信,tingos,telosb)