0

モジュールが UART 経由でデータを受信しない、TinyOS のヘルプ

投稿者 Telosb » 2014 年 7 月 15 日 (火) 6:47

メンバー各位

私はtinyosプログラミングが初めてです。私は次のKMoteBで作業しています:

http://www.tinyosmall.com/product_p/100-101.htm

YETI2 プラグインと TinyOS コンパイラを使用しています。

問題は、シリアル インターフェイスを介して printf 経由でコンピューターにデータを送信すると、送信されたとおりに受信できることです。一方、PC-to-Mote 通信は機能しません。RX LED が点灯しますが、ubuntu を介した「u」送信などのデータは受信イベントをトリガーしません。

    event message_t* UartReceive.receive(message_t* bufPtr, void* payload, uint8_t len)
    {
        call Leds.led2On();
        printf("Receive\n");
        printfflush();
        return bufPtr;
    }

私はこのコードを実装しようとしています:

http://embedntks.com/tinyos-uart-sending-raw-data/

問題がどこにあるのか誰か知っていますか?

4

1 に答える 1

0

PC からモートにデータを送信する方法を教えてください。あなたの説明から、たとえば minicom アプリケーションを使用して raw バイトを送信するだけだと思います。このアプローチは機能しません。TinyOS は、ヘッダー、ペイロード、およびフッターを含むパケット全体のみを受信します。これを送信するには、PC 側で Java アプリケーションを作成する必要があります。このチュートリアルの「Mote-PC 通信」の章を見てください: http://csl.stanford.edu/~pal/pubs/tos-programming-web.pdf .

もう 1 つの問題は、Receive インターフェイスを printf 関数と一緒に使用することです。前述のチュートリアルでは、「PC からモートに送信されたパケットは、モートによって認識される」と述べられています。もちろん、シリアル通信でも認められています。これにより、次のような問題が発生する可能性があります。TinyOS PrintfClient は printf データを受信して​​処理する必要がありますが、Java アプリケーションは確認応答を受信して​​処理する必要があります。私の経験から言えば、アプリケーションで printf を使用すると、PrintfC モジュールがシリアル通信スタックを所有して使用するため、シリアル通信スタックを使用できません。受信イベントが発生したときにカスタム パケットを PC に送信し、Java アプリケーションで処理できます。

于 2014-07-31T17:24:08.500 に答える