TinyOS PC可以进行通信

时间:2015-12-19 20:56:59

标签: tinyos nesc

我正在为无线传感器网络上的项目编写一个软件。现在我关注的是将各种数据包注入网络。

我使用MIB520接口板和IRIS mote上安装的TinyOS-2.1.2。我尝试过sdk / c / sf中的各种实用程序,以及net.tinyos.sf。*和net.tinyos.tools。* Java包中的工具。

到目前为止我尝试了什么:

我一直在我的mote上安装app / BaseStation和apps / BaseStation15.4,或者使用apps / test / TestSerial闪存。读取mote通过USB发送的数据没有问题。我可以使用net.tinyos.tools.SerialForwarder或sdk / c / f或net.tinyos.tools *中的实用程序来读它。

但是当涉及到从PC发送数据到mote似乎没什么用。我使用net.tinyos.tools.Send,serialsend.c,sf.c和sfsend.c。 SerialForwarder在一段时间后抛出错误消息,而C实用程序抛出" no ack"错误。

在TinyOS wiki和SO上搜索答案后,我认为这可能是一个问题,mote发送" ack"信息。我正在寻找一种方法来生成并发送合法数据包到建议here

关于维基的文章后,我找到了合适的TEP,并使用了其中列出的位数(" 7e 40 09 00是ef 05 7d 5d 06 01 02 03 04 05 7e")。

我使用Wireshark来嗅USB,我将数据发送到mote,我看到相同的位发送到mote。我的理论是要么mote没有识别我发送的输入,要么我错误地使用了实用程序。无论如何,这个特定事件永远不会被触发:

event message_t* UartReceive.receive(message_t* bufPtr, void* payload, uint8_t len) {
    call Leds.led0On();
    return bufPtr;
}

我的问题是,如何从PC发送数据到mote?也许有一些我已经被忽视的准备使用的实用工具?我一直在按照BaseStation15.4中的说明操作,但我已经卡住了。

编辑:

来自BaseStation / README.txt "只有当该消息成功入队以传送到无线电链路时,BaseStation才会确认通过串行链路到达的消息。" 这可以解释" no ack"在serialsend.c和"写入失败"在SerialForwarder.java中。

但是,UartReceive.receive()事件永远不会被触发,即使在清除它的主体(在BaseStation中)并且只留下LED切换之后也是如此。

1 个答案:

答案 0 :(得分:0)

结果我犯了一个简单的错误,就是使用错误的端口进行通信。

我在这里做了两次运行: 1.在两者上安装BaseStation应用程序

make iris install,1 mib520,/dev/ttyUSB0
make iris install,2 mib520,/dev/ttyUSB0
  1. 两个节点都在运行(包括一个使用MIB520连接到USB)启动SerialForwarder

    java net.tinyos.sf.SerialForwarder -port 9002 -comm serial @ / dev / ttyUSB2:57600

  2. 这是我没有意识到的,串行@ / dev / ttyUSB2并不总是与motes通信的正确接口。因为UART使用2条USB线进行通信(一条用于写入微尘,另一条用于从微尘读取数据)。我做的是我尝试了其他几行,如/ ttyUSB1,/ ttyUSB3,/ ttyUSB4。其中一个通常有用,不知道是怎么发生的。

    1. 准备好SerialForwarder后,您应该看到一些消息:
    2.   

      听串口@ / dev / ttyUSB1:57600

           

      在端口9002 serial @ / dev / ttyUSB1上侦听客户端连接:57600:重新同步

      现在您可以使用其他实用程序来发送和接收数据

      java net.tinyos.tools.Send 00 FF FF 00 00 04 22 06 00 02 00 01
      
      java net.tinyos.tools.Listen
      

      有关我的配置的一些其他信息

      OS: Linux kali 4.0.0-kali1-amd64 #1 SMP Debian 4.0.4-1+kali2 (2015-06-03) x86_64 GNU/Linux
      
      TinyOS release:  2010-01-20 20:00:48, TinyOs-2.1.2
      

      我的env变量(我使用鱼壳)

      cat  ~/.config/fish/config.fish 
      # Here we setup the environment variables needed by the tinyos make system
      
      set -Ux "TOSROOT" "/opt/tinyos-release-tinyos-2_1_2"
      set -Ux "TOSDIR" "$TOSROOT/tos"
      set -Ux "CLASSPATH" "$TOSROOT/support/sdk/java"
      set -Ux "MAKERULES" "$TOSROOT/support/make/Makerules"
      set -Ux "PYTHONPATH" "$TOSROOT/support/sdk/python"
      
      echo "setting up TinyOS on source path $TOSROOT"
      

      我希望这能节省一些人的时间。