这个例程演示了使用以太网控制器和lwIP TCP/IP 协议栈的基于web的I/O控制。DHCP被用来获取一个以太网地址。如果DHCP获取超时,AutoIP将会被选择来获取一个静态的IP地址。IP地址将被显示在OLED屏幕上,通过该地址使用普通的浏览器进入到此例程的网页。
在网页左边的导航目录下,通过点击网页标签”IO Control Demo 1”和”IO Control Demo 2”展示了通过网页控制开发板外设的两种不同的方法。
“IO Control Demo 1” 使用运行来浏览器上的JavaScript来向特定的URL发送HTTP请求。
这些特殊的地址截取自文件系统支持层(lmi_fs.c文件里)并用来控制LED和PWM蜂鸣器。
来自开发板的回应将被返回到浏览器并通过更多的JavaScript代码将其动态地插入到网页HTML中。
“IO Control Demo 2”使用标准的HTML forms把参数传递给运行在开发板上的CGI(通用网关接口)程序。这些程序根据请求来处理form data控制PWM和LED,然后再返回一个网页(在这里,发回的是最原始的网页)。在例程主程序初始化的时候会向HTTPD服务器注册每一个CGI的名字和它的处理程序,每当有CGI URL请求时,先解析URL参数然后服务器会调用相应的处理程序。
通过使用SSI标签(通过HTTPD解析)把各种控件的状态信息插入到HTML中。这个例程也在初始化的时候伴随着CGI处理程序把SSI标签的清单和它的处理程序注册到了web服务器。当一个.shtml,.ssi或者.shtm的文件要被传送到浏览器的时候并在文件中找到了任意一个已经注册的SSI标签该处理程序就会被调用。
1.Enet_io.c 该文件是程序的主要文件,包含main()函数。ControlCGIHandler(),当浏览器请求iocontrol.cgi的时候被调用。SetTextCGIHandler(),当浏览器请求settext.cgi的时候被调用。lwIPHostTimerHandler(void),这个函数会在复位并产生了以太网中断时会被调用,用来等待DHCP为主机分配IP地址。
2.Httpd.c 这个文件是TI针对lm3s系列根据LwIP1.3.1中的httpd.c进行修改的,增加了对SSI标签和CGI的支持。这个c文件是构建一个http服务器的基础,我就不用对每一个函数进行一一的解说了,最重要的两个函数就是http_set_cgi_handlers()和http_set_ssi_handler(),这两个函数就是对CGI处理程序和SSI处理程序向Httpd进行注册的函数。只有进行注册的处理函数,客户端才能通过http协议对其进行调用。