(All Devices)
在本次的實作,以Arduino Ethernet於家用網路中架設Web Server,
位於同一網段的裝置透過HTTP協定使用瀏覽器連線後,會下載有三個Submit Buttons的Web Page。
(Web Page)
位於同一網段的裝置透過HTTP協定使用瀏覽器連線後,會下載有三個Submit Buttons的Web Page。
(Web Page)
每一個按鈕在HTML的form tag中皆定義有對應的控制NXT命令字元。
當按下其中任何一個按鈕,即會Submit出一個POST method的HTTP Request:
當按下其中任何一個按鈕,即會Submit出一個POST method的HTTP Request:
POST / HTTP/1.1
...
ledEffect=K or F or H
Web Server接收之後,會解析在Header後面的傳送資料,...
ledEffect=K or F or H
若有符合的命令,就會以Serial Port透過XBee傳送給NXT去執行。
而NXT則是透過NXTBee由第四個Sensor Port的RS485接收來自Arduino Web Server的命令。(運作架構)
Arduino Web Server
本次實作使用Arduino 1.0,新版本對於<Ethernet.h>改善了一些功能。詳細可以參考軟體更新資訊:■Arduino Software Release Notes■Arduino 1.0 bringing improvements and changes其中比較實用的是在Stream Class增加了解析串流資料的功能,由於EthernetServer與EthernetClient兩個Class都繼承了Stream Class,
因此,對於解析HTTP Header就方便許多。程式結構說明:
Arduino Web Server程式主要功能分成兩個部份:
- 當接收到Client的HTTP連線請求時,首先解析Headers資料,若是為POST method,就可以判斷連結是由Client端瀏覽器按下Submit button所傳送過來,因此,即繼續解析POST Data中Name為”ledEffect”的value值,再將值透過sendCommand()函式傳送給NXT作為執行的指令。
- 而如果不是POST method(就是GET method),或者已經完成傳送指令給NXT時,就以HTTP Response回傳Web page給Client。
- 以上Web Page的HTML原始碼(Magicwand LED Effects.HTML)連結
- 完整的Arduino Sketch程式碼(WebServer_XBeeComm_POST.ino)連結
- 完整的NXT NXC程式碼(WLessComm_NXT.nxc)連結
沒有留言:
張貼留言