讓單片機嵌入HTTP(超級文本傳輸協議)客戶端是一個很好的添加功能,HTTP客戶端可以讓嵌入式設備從HTTP服務器獲取數據。今天給大家介紹的是基於WIZnet W5200的HTTP客戶端模塊,能夠集成到STM32 Cortex M3單片機產品的幾乎所有應用中。具體內容如下:
1 簡介
嵌入式HTTP(超級文本傳輸協議)客戶端對所有支持網絡功能的設備來說是一個很好的添加功能。HTTP客戶端可以讓嵌入式設備從HTTP服務器獲取數據。
該WIZnet W5200 HTTP客戶端應用筆記介紹的W5200E01-M3板子,提供一個完整的HTTP客戶端模塊,它能夠集成到STM32 Cortex M3單片機產品的幾乎所有應用中。IAR 5.41用來編譯該HTTP客戶端應用程序。W5200E01-M3板子用來運行該HTTP客戶端應用。
該文檔中提到的所有的代碼和文件可以從下面的鏈接下載 W5200 Download。
1.1 假設
假設讀者對WIZnet W5200驅動是熟悉的。當然讀者也需要熟悉C語言編程和HTTP客戶端的概念。上述這些技術的術語將在這篇文章中用到,並且只提供簡短的概述。鼓勵一些高級用戶去閱讀相關的規範。
1.2 特點
該HTTP客戶端不具有完整的HTTP客戶端功能;本文的HTTP客戶端是針對嵌入式系統的小型客戶端。
這裡提供的HTTP客戶端具有以下特點:
• 可移植到STM32 Cortex M3系列32位單片機平台
• 支持內容解析
• 支持串口打印信息(見圖1)
圖1. HTTP客戶端演示圖
1.3 局限性
針對嵌入式系統設計的HTTP客戶端往往沒有足夠的緩存去接接收“大”的網頁(在該應用筆記中,http客戶端的最大接收緩存是4K字節,當然,考慮到STM32F103C8的SRAM的存儲空間,用戶可以按需求對緩存進行擴展)。推薦用簡單的text/html內容網頁訪問。如果接收緩存不夠了,HTTP客戶端將自動重啟。
2 HTTP協議概述
HTTP是超級文本傳輸協議的縮寫。HTTP的功能是在客戶端-服務器計算機模式下作為請求-應答協議。例如,在HTTP下,網絡瀏覽器作為客戶端,運行在計算機上的打開網址的應用程序作為服務器。客戶端向服務器提交HTTP請求消息。保存內容,或提供資源(如HTML文件,或執行其他客戶端功能)的服務器返回一個應答消息給客戶端。這個應答包括請求的完成狀態信息,這個消息可能會包括客戶端任何的請求內容。
HTTP客戶端的通信過程大致分為三步。
- 連接:W5200分配socket到HTTP客戶端,打開socket並連接到http服務器。
- 通信:連接建立了。W5200發送HTTP請求和接收來自服務器的HTTP應答。
- 關閉:HTTP 請求/應答完成後關閉連接。
HTTP是一個應用層協議,在網絡協議框架內。協議定義假設有一個可靠的主機到主機數據傳輸的傳輸層協議。TCP是佔主導地位的協議。
W5200已經嵌入到以太網,IP和TCP層。因此,HTTP客戶端可以很容易的實現,通過W5200的API函數(socket(),listen(),connect(),send(),receive()等等),這些函數都在W5200驅動中。下圖展示了W5200的框圖。
2.1 HTTP會話
一個HTTP會話是一系列的網絡請求-響應傳輸。HTTP客戶端通過建立一個TCP連接到服務器上的特定端口(一般都是端口80)來初始化一個請求。監聽該端口HTTP服務器等待客戶端的請求消息。一旦接收該請求,服務器返回一個狀態行,如“HTTP/1.1 200 OK”,和一個自己的消息,該消息也許是所請求的資源,一個錯誤信息,或一些其他信息。
2.2 請求消息
請求消息包括下面這些::
- 向服務器請求稱作/images/logo.png的請求行,如GET /images/logo.png HTTP/1.1
- 頭部,如Accept-Language: en
注意:在HTTP/1.1協議里,除了Host外所有頭部是可選。
- 一個空行。
- 一個可選的信息體。
例如,下面是最簡單的HTTP Get請求:
GET /index.html HTTP/1.1\r\n Host: www.example.com\r\n \r\n 該請求行和頭部必須以<CR><LF>結束(一個回車後跟換行)。空行必須只包括<CR><LF>並且沒有其他空白。雖然需要<CR><LF>,但大部分服務器也接受只有<LF>。 2.3 請求方法HTTP定義了9種方法指示在標識的資源上執行期望的動作。這裡HTTP客戶端不支持完整的HTTP客戶端功能;它針對嵌入式系統的小型客戶端。只可使用GET 方法。
3 HTTP客戶端3.1 HTTP文檔下面HTTP頁是用來演示HTTP客戶端。可以通過是DOCTYPE HTTP 的(b) HTTP Source來檢查。 注意:如前面說的,HTTP Document (img, txt, etc)的大小,需要考慮STM32F108C8的內存大小。 (a)HTTP文檔 圖 5. HTTP Document和HTML source 3.1.1 測試3.2 演示3.2.1 設置超級終端從網上下載一個免費的超級終端做如下設置: 3.2.2 輸入URL3.2.3 DNS, HTTPc和Output Doc3.2.4 結果 圖 8. IE7顯示解析的數據 4. HTTP客戶端實現HTTP客戶端運行在TCP客戶端模式。TCP客戶端模式通過連接到服務器工作(Connect),在連接建立後(ESTABLISHED)客戶端可以發送/接收數據。獲得更多的信息,請參考W5200 用戶手冊(Datasheet)或文檔‘如何在W5200中實現TCP ’(‘How to implement TCP in W5200’)。 擴展TCP Loopback示例代碼來執行FTTP客戶端。下圖是HTTP客戶端的流程圖。 圖 8. 基於W5200的HTTP客戶端流程圖 以下代碼顯示了HTTPc 的main.c。HTTPc解析URL作為URL的域名和URL路徑。當DNS獲得了IP, HTTPc將打開。HTTPc連接到上面流程圖中的服務器。該請求信息將在連接後再次發送。服務器接收到請求後將發送數據。 注意:在該應用中用了一個簡單的算法去解析接收到的數據。為了解析不同的接收數據,用戶必須修改這部分的解析程序。 謝謝關注,關於此篇博文,如果您有任何疑問,歡迎您評論留言,也歡迎您聯繫我們!我們的郵箱:[email protected] 官方網站:www.iwiznet.cn |