2015-12-19 52 views
2

我正在为无线传感器网络上的项目编写一个软件。现在我担心注入各种数据包到网络中。TinyOS PC与微波通信

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

我试过到目前为止:

我一直在使用的应用程序/基站和应用程序/安装在我的微尘BaseStation15.4,或者与应用程序/测试/ TestSerial闪烁它。阅读从mote通过USB发送的数据没有问题。我可以使用net.tinyos.tools.SerialForwarder或sdk/c/f或net.tinyos.tools *的实用程序读取它。

但是,当涉及到从PC发送数据到微尘,似乎没有任何干活用net.tinyos.tools.Send,serialsend.c,sf.c和sfsend.c。 SerialForwarder一段时间后抛出错误消息,而C实用程序抛出“无确认”错误。

寻找在TinyOS的wiki和SO,我想这可能与微尘发送该“ACK”消息的问题的答案后。我正在寻找一种方法来生成并发送合法的数据包给mote,建议为here

继维基文章中,我发现合适的TEP和使用它上市位( “7E 40 09 00是EF 05 7D 5D 06 01 02 03 04 05 7E”)。

我使用Wireshark的嗅探上,我发送的数据到USB微尘,我看到发送到微尘同位。我的理论是mote不能识别我发送的输入,或者我错误地使用了实用程序。无论如何,永远不会被触发此特定事件:

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

我的问题是,我怎么去发送数据从PC到微尘?也许有一些准备使用我忽略的工具?我一直在使用BaseStation15.4中的说明,但我卡住了。

编辑:

从基站/ README.txt中 “基站承认在抵达只有成功地排队等待传送到无线链路该消息的串行链路的消息。” 这将解释serialsend.c中的“no ack”和SerialForwarder.java中的“写入失败”。

但尽管如此,该UartReceive.receive()事件从未被触发,即使清除其体内(在基站),并只留下LED切换后。

+0

由于我的声誉很低,我必须在这里发布链接:[SerialForwarder上的TinyOS wiki](http://tinyos.stanford.edu/tinyos-wiki/index.php/Mote-PC_serial_communication_and_SerialForwarder),[Releveant TEP ](http://www.tinyos.net/tinyos-2.x/doc/html/tep113.html) – zibzabzubudua

回答

0

原来我犯了简单的错误,使用错误的端口进行通信。

这里就是我所做运行2点微尘: 1.两者安装基站应用

make iris install,1 mib520,/dev/ttyUSB0 
make iris install,2 mib520,/dev/ttyUSB0 
  • 与这两个微尘运行(包括一个连接到USB使用MIB520)启动SerialForwarder

    java net.tinyos.sf。SerialForwarder -port 9002 -comm串行@的/ dev/ttyUSB2:57600

  • 这是我没有意识到,该序列@的/ dev/ttyUSB2并不总是与微尘通信右侧接口。这是因为UART使用2条USB线进行通信(一个用于写入mote,另一个用于从mote读取数据)。我所做的是我尝试了其他几行,例如/ ttyUSB1,/ ttyUSB3,/ ttyUSB4。其中一个通常工作,不知道如何发生。

  • 随着SerialForwarder准备你应该看到一些消息:
  • 收听串行@的/ dev/ttyUSB1:57600

    监听端口的客户端连接9002系列@的/ dev/ttyUSB1:57600:resynchronising

    现在你可以使用其他工具来发送和接收数据

    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" 
    

    我希望这将节省别人的时间。