久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

Rainbow web服務器:通過瀏覽器查看溫度和濕度

作者:白櫟旸   來源:本站原創   點擊數:  更新時間:2014年04月30日   【字體:

  Rainbow開發包中有關于HTTP服務器的封裝,使得我們可以通過簡單的代碼實現在瀏覽器中進行一些參數配置、信息的輸出。Rainbow有了Web接入能力,數據的展示、輸入的接收都可以通過瀏覽器進行,這就為Rainbow物聯網的開發提供了必要條件。

 
    本文是一個最簡單的Web應用,當我們訪問指定url的時候,Rainbow會向瀏覽器輸出當前的溫度濕度,假定我們在程序中給Rainbow設定的ip是192.168.1.15,在瀏覽器的地址欄輸入http://192.168.1.15/demo.cgi,將會在瀏覽器中看到下面的結果:
 
    
    在軟件包的“Projects\Web-Simple”文件夾包含了本文的完整工程,可以直接編譯、燒寫和調試。來看看main.cpp的代碼:
#include "WProgram.h"
#include "WebServer.h"
#include "Ethernet.h"
#include "Dht11.h"
 
//網絡模塊的MAC地址
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//網絡模塊的IP地址
IPAddress ip(192, 168, 1, 15);
 
//web服務器監聽80端口
WebServer server(80);
 
//定義Dht11對象
Dht11 dht11(DHT11_DATA_PIN);
 
//處理所有的get類型的HTTP請求
void httpGet(HttpRequestStream & request, HttpResponseStream & response)
{
  String uri = request.getUri();
  response.respOkHeader();
 
  if(uri == "/demo.cgi")
  {
    //讀取溫濕度成功
    if(dht11.read() == Dht11::OK)
    {
      response.println("The room temperature and humidity is as follows:");
      //通過Web輸出當前溫濕度
      response.print((String)"
      Temperature:" + dht11.getTemperature() + (String)"℃");
 
      response.print("Humidity:");
      response.print(dht11.getHumidity());
      response.println("%");
    }
  }
}
 
void setup()
{
  //初始化Rainbow
  boardInit();
  //初始化默認串口
  Serial.begin();
  //對網絡進行初始化
  Ethernet.begin(mac, ip);
 
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
 
  //設置get請求的回調函數
  server.onGet = httpGet;
 
  //開始進行監聽
  server.begin();
}
 
void loop()
{
  //對http請求進行處理,事件派發等
  server.processConnection();
}
 
int main()
{
  setup();
  while(1) loop();
}
 
    由于通過c++進行了封裝,使得可以用區區幾十行代碼實現了一個能夠讀取溫濕度并通過瀏覽器展示出來的應用。為了使Rainbow成為一個webserver,需要按照下列步驟進行:
    1、給Rainbow設定ip地址
    2、定義WebServer對象,并設定webserver的監聽端口:WebServer server(80);
    3、定義get或post請求的處理函數,函數的原型為:
       void httpGet(HttpRequestStream & request, HttpResponseStream & response)
       void httpPost(HttpRequestStream & request, HttpResponseStream & response)
       方法名可以自定,但是參數必須是HttpRequestStream 和 HttpResponseStream,分別代表瀏覽器發來的請求流和輸出流,通過請求流可以獲取請求的url、參數;通過輸出流可以將結果輸出到瀏覽器
    4、將get或post請求函數傳給webserver:server.onGet = httpGet;
    5、開始進行webserver監聽:server.begin();
    6、調用server.processConnection()進行http請求的派發,根據請求的方法調用不同的處理函數,如:httpGet或者httpPost
 
    本文介紹的這個webserver應用重點處理在doGet函數中,函數首先通過HttpRequestStream讀取到url,再判斷如果這個url是demo.cgi,則讀取溫濕度,通過HttpResponseStream中的方法輸出到瀏覽器中。在HttpResponseStream輸出內容之前,首先需要調用response.respOkHeader()來輸出http的頭部,這一步是必須的。
關閉窗口

相關文章

主站蜘蛛池模板: 午夜在线视频观看 | 久久精品一区二区 | 国产日韩在线播放 | www午夜| xxxx色| 国产视频福利 | 日韩在线播放视频 | 岛国精品在线播放 | 国产网站在线 | 久久人体视频 | 日日夜夜干 | 日产精品久久久一区二区 | 亚洲精品免费在线 | 国产中文字幕视频 | 五月婷婷综合激情 | 九九热视频在线 | 久久久高清 | 日韩av在线看 | 久久久精品在线观看 | 伦一理一级一a一片 | 国产一区在线视频 | 国产免费网址 | 欧美一级黄色录像 | 久久艳片www.17c.com | 久久一级视频 | 亚洲第一网站 | 亚洲最大黄色网址 | 日韩有码av| 日韩视频一区二区 | 国产一区福利 | www.毛片.com| 国产福利久久 | 国产福利精品视频 | 簧片在线免费观看 | 欧美二三区 | 成人一区在线观看 | 亚洲欧美精品一区 | 国产一区在线看 | 日韩亚洲一区二区 | 亚洲综合激情网 | 视频一区二区三区在线观看 |