让单片机嵌入HTTP(超级文本传输协议)客户端是一个很好的添加功能,HTTP客户端可以让嵌入式设备从HTTP服务器获取数据。今天给大家介绍的W5200E01-M3评估板是基于WIZnet W5200,可以作为HTTP客户端使用,能够集成到STM32 Cortex M3单片机产品的几乎所有应用中。具体内容如下:
嵌入式HTTP(超级文本传输协议)客户端对所有支持网络功能的设备来说是一个很好的添加功能。HTTP客户端可以让嵌入式设备从HTTP服务器获取数据。
假设读者对WIZnet W5200驱动是熟悉的。当然读者也需要熟悉C语言编程和HTTP客户端的概念。上述这些技术的术语将在这篇文章中用到,并且只提供简短的概述。鼓励一些高级用户去阅读相关的规范。
该HTTP客户端不具有完整的HTTP客户端功能;本文的HTTP客户端是针对嵌入式系统的小型客户端。
这里提供的HTTP客户端具有以下特点:
• 可移植到STM32 Cortex M3系列32位单片机平台
• 支持内容解析
• 支持串口打印信息(见图1)
图1. HTTP客户端演示图
针对嵌入式系统设计的HTTP客户端往往没有足够的缓存去接接收“大”的网页(在该应用笔记中,http客户端的最大接收缓存是4K字节,当然,考虑到STM32F103C8的SRAM的存储空间,用户可以按需求对缓存进行扩展)。推荐用简单的text/html内容网页访问。如果接收缓存不够了,HTTP客户端将自动重启。
HTTP是超级文本传输协议的缩写。HTTP的功能是在客户端-服务器计算机模式下作为请求-应答协议。例如,在HTTP下,网络浏览器作为客户端,运行在计算机上的打开网址的应用程序作为服务器。客户端向服务器提交HTTP请求消息。保存内容,或提供资源(如HTML文件,或执行其他客户端功能)的服务器返回一个应答消息给客户端。这个应答包括请求的完成状态信息,这个消息可能会包括客户端任何的请求内容。
HTTP客户端的通信过程大致分为三步。
HTTP是一个应用层协议,在网络协议框架内。协议定义假设有一个可靠的主机到主机数据传输的传输层协议。TCP是占主导地位的协议。
W5200已经嵌入到以太网,IP和TCP层。因此,HTTP客户端可以很容易的实现,通过W5200的API函数(socket(),listen(),connect(),send(),receive()等等),这些函数都在W5200驱动中。下图展示了W5200的框图。
一个HTTP会话是一系列的网络请求-响应传输。HTTP客户端通过建立一个TCP连接到服务器上的特定端口(一般都是端口80)来初始化一个请求。监听该端口HTTP服务器等待客户端的请求消息。一旦接收该请求,服务器返回一个状态行,如“HTTP/1.1 200 OK”,和一个自己的消息,该消息也许是所请求的资源,一个错误信息,或一些其他信息。
请求消息包括下面这些::
注意:在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>。
HTTP定义了9种方法指示在标识的资源上执行期望的动作。这里HTTP客户端不支持完整的HTTP客户端功能;它针对嵌入式系统的小型客户端。只可使用GET 方法。
下面HTTP页是用来演示HTTP客户端。可以通过是DOCTYPE HTTP 的(b) HTTP Source来检查。
注意:如前面说的,HTTP Document (img, txt, etc)的大小,需要考虑STM32F108C8的内存大小。
(a)HTTP文档
图 5. HTTP Document和HTML source
从网上下载一个免费的超级终端做如下设置:
图 8. IE7显示解析的数据
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连接到上面流程图中的服务器。该请求信息将在连接后再次发送。服务器接收到请求后将发送数据。
注意:在该应用中用了一个简单的算法去解析接收到的数据。为了解析不同的接收数据,用户必须修改这部分的解析程序。
谢谢关注,关于此篇博文,如果您有任何疑问,欢迎您评论留言,也欢迎您联系我们!