หน้าเว็บ

วันเสาร์ที่ 18 ตุลาคม พ.ศ. 2551

การกำหนดค่าที่เซนเซอร์แต่ละตัวอ่านได้ใน TinyDB บน TOSSIM

โดยปกติแล้วถ้า run TinyDB ด้วย TOSSIM นั้น ค่าที่เซนเซอร์แต่ละตัวอ่านได้ในแต่ละช่วงเวลานั้นจะเป็นค่าที่ random ขึ้นมา ซึ่งในบางสถานการณ์เราอาจต้องการ fix ค่า หรือต้องการให้ค่าที่อ่านได้เป็นไปตามสมการที่เรากำหนด (เช่น ในธีสิสผมเป็นต้นที่ต้องการ evaluate ว่าข้อมูลที่อ่านได้ กับข้อมูลที่มีอยู่ในระบบจริงนั้น ถูกต้องขนาดไหน เป็นต้น)

ซึ่ง TinyDB ถ้า compile แบบ make pc เพื่อให้ใช้ TOSSIM แล้วจะเห็นว่าใน Makefile นั้นมีการใช้ Micasb เป็น sensorboard ดังนั้นวิธีที่ผมแก้ง่ายที่สุดคือ ไปสร้าง component ที่ provides interface StdControl และ ADC โดยใน module นั้นก็ให้ทำการสร้าง command async command result_t ADC.getData() แล้วใน command นั้น ก็อาจจะให้ทำการตรวจสอบ TOS_LOCAL_ADDRESS แล้วก็สั่ง signal ADC.dataReady(VALUEที่ต้องการ); เป็นอันเสร็จ

สมมติว่าเราต้องการกำหนดค่าของเซนเซอร์อุณหภูมิ ก็ให้ไปที่ Temp.nc แล้วแก้ไข components PhotoTemp ให้มาใช้ component ของเราแทน และเปลี่ยนการ assign interface StdControl กับ TempADC มาใช้เป็นของเราแทนเช่นเดียวกัน

แล้วก็ทำการ compile ใหม่ เป็นอันเสร็จพิธีครับ

TinyDB บน TOSSIM ไม่แสดงผล

ปัญหาคือลอง run TinyDB โดยใช้ TOSSIM แล้ว ปรากฎว่า พอส่งคิวรีเข้าไปในระบบแล้ว ไม่ได้คำตอบกลับมา คือในหน้าที่เป็นกราฟไม่มีอะไรเกิดขึ้น

จริงๆแล้วไม่รู้ว่าปัญหาคืออะไรเหมือนกัน แต่แก้โดยการคอมไพล์ใหม่ซะเลย

ขั้นแรก
ไปที่ folder tinyos-1.x/apps/TinyDBApp แล้วสั่ง
make clean
ขั้นสอง
ไปที่ tinyos-1.x/tools/java
make clean
ขั้นสาม
ไปที่ tinyos-1.x/tools/java/net/tinyos/tinydb
make -f MakePC
ขั้นสี่
ไปที่ tinyos-1.x/apps/TinyDBApp อีกครั้ง
make -f MakePC pc
เป็นอันเสร็จ พอจะทำงานก็เปิดสอง shell
shell แรกไปที่ /tinyos-1.x/apps/TinyDBApp
./build/pc/main.exe
shell ที่สองไปที่ /tinyos-1.x/tools/java
java net.tinyos.tinydb.TinyDBMain -sim
Environment ที่ทดสอบ
TinyOS: 1.1.15 snapshot
TinyDB: 1.1.3
OS: Cygwin on WIndows XP