2

ワイヤレス センサー ネットワークに関するプロジェクト用のソフトウェアを作成しています。現在、さまざまなパケットをネットワークに注入することに関心があります。

IRIS モートに TinyOS-2.1.2 がインストールされた MIB520 インターフェイス ボードを使用しています。sdk/c/sf のさまざまなユーティリティと、net.tinyos.sf.* および net.tinyos.tools.* Java パッケージのツールを試しました。

私がこれまでに試したこと:

モートにインストールされた apps/BaseStation と apps/BaseStation15.4 を使用しており、代わりに apps/test/TestSerial でフラッシュしています。USB 経由でモートから送信されたデータの読み取りに問題はありません。net.tinyos.tools.SerialForwarder または sdk/c/f または net.tinyos.tools * のユーティリティを使用して、問題なく読み取ることができます。

しかし、PC からモートへのデータ送信に関しては、何も機能していないようです。net.tinyos.tools.Send、serialsend.c、sf.c、および sfsend.c を使用しました。 SerialForwarderはしばらくするとエラー メッセージをスローしますが、C ユーティリティは「no ack」エラーをスローします。

TinyOS wiki と SO で回答を検索した後、「ack」メッセージを送信するモートに問題がある可能性があると考えました。ここで提案されているように、正当なパケットを生成してモートに送信する方法を探していました。

wiki の記事に従って、適切な TEP を見つけ、そこにリストされているビットを使用しました (「7e 40 09 00 be ef 05 7d 5d 06 01 02 03 04 05 7e」)。

Wireshark を使用して、データをモートに送信した USB をスニッフィングしたところ、同じビットがモートに送信されたことがわかりました。私の理論は、送信した入力をモートが認識しないか、ユーティリティの使い方が間違っているというものです。とにかく、この特定のイベントは決してトリガーされません:

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

私の質問は、PC からモートにデータを送信するにはどうすればよいですか? おそらく、私が見落としていたすぐに使用できるユーティリティがいくつかありますか? BaseStation15.4 の手順に従っていますが、行き詰っています。

編集:

BaseStation/README.txt より 「BaseStation は、そのメッセージが無線リンクへの配信のために正常にエンキューされた場合にのみ、シリアル リンクを介して到着したメッセージを確認します。」それは、serialsend.c の「no ack」と SerialForwarder.java の「write failed」を説明します。

しかし、UartReceive.receive() イベントは、本体を (BaseStation で) クリアし、LED トグルのみを残した後でも、決してトリガーされません。

4

1 に答える 1