2010年12月23日 星期四

TinyOS的printf()

唉!花了很多時間,結果原來早就寫好了..
前一段時間,一直以為TinyOs下面,執行的時候沒辦法攔截訊息,是最大的怨念。
沒想到網路上爬一下文章,以及...
Tutorial 目錄下已經展示了printf() 這個函數的使用方法..

Step1. 程式中引入 #include "printf.h"
Step 2. 程式中使用 printf()函數,並且會丟到buffer
Step 3. 告訴TinyOs,把buffer清掉,全部透過serial port傳到電腦中 printfflush()
Step 4. 在編譯時,make file 中第二行 加上
CFLAGS += -I$(TOSDIR)/lib/printf
即可

The_TinyOS_printf_Library
          

Tinyos 的MAC通訊

TinyOs中有一個容易令人忽略的介面,就是 PacketAcknowledgement。
主要的功能是提供設定的元件來使用者可以開關 彼此兩端的 Ack。
主要的命令有下列三個:
分別是  PacketAcknowledgement.noAck,  PacketAcknowledgement.requestAck,  PacketAcknowledgement.wasAcked.

前面兩個當然就是設定傳送時要不要有Ack回應。以一般的WSN網路設定來說,由於都有Cord來負責網路的建立和設定,自然這個Ack的傳送是必須的。所以
PacketAcknowledgement.requestAck 這個指令倒是就很重要了(設定需要Ack)。

command error_t noAck(message_t *msg) Tell a protocol that when it sends this packet, it should not use synchronous acknowledgments.
command error_t requestAck(message_t *msg) Tell a protocol that when it sends this packet, it should use synchronous acknowledgments.
command bool wasAcked(message_t *msg) Tell a caller whether or not a transmitted packet was acknowledged.

2010年12月16日 星期四

OctopusX與OctopusII溝通之設

OctopusXOctopusII如何溝通之設定

1.tinyos-2.x-contrib\diku\common\lib\simplemac目錄下中packet.h
加入”mac_addr_t  pan;”


TOSSIM到底好不好用!!

相信每個開始學TinyOs的人,心中都會有一個懷疑,到底要不要學TOSSIM。
基本上,學了Nesc的programming已經過了一段很辛苦的日子,又要開始學TOSSIM又是一個苦日子。尤其是網路上的資料不多得時候,學(爬文)起來真的是要花不少時間。

以我上課的經驗來說,TOSSIM的學習要碩班的程度才比較吃的下來(進階的部份)。
另一方面,TOSSIM最大的麻煩應該就是沒有圖形化工具,沒辦法像是TinyViz那樣直覺(TinyViz只支援TinyOs 1.x)。

但是,如果Nesc的code寫完後,直接用TOSSIM來模擬,就我個人來說,真的是很方便,code直接就可以派上用場,就好像是硬體直接當成軟體來用(學會了硬體等於學會了軟體),不像是使用matlab或NS2等其他環境模擬工具,學生就算把環境模擬的程式寫的再好,對於整個WSN的使用和情境仍然是一知半解。