在TI的8962板上运行了enet_io,分享些学习到的

z364156109   2011-12-14 22:08 楼主

这个例程演示了使用以太网控制器和lwIP TCP/IP 协议栈的基于webI/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文件里)并用来控制LEDPWM蜂鸣器。

来自开发板的回应将被返回到浏览器并通过更多的JavaScript代码将其动态地插入到网页HTML中。


“IO Control Demo 2”
使用标准的HTML forms把参数传递给运行在开发板上的CGI(通用网关接口)程序。这些程序根据请求来处理form data控制PWMLED,然后再返回一个网页(在这里,发回的是最原始的网页)。在例程主程序初始化的时候会向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协议对其进行调用。

回复评论 (5)

回复 楼主 z364156109 的帖子

enet_io这个例程我一直没找到,楼主能发给我吗540655355@qq.com,不胜感激!
点赞  2011-12-15 09:06
嗯,这样的分享很好!利人利己
点赞  2011-12-15 09:58

回复 沙发 allan0508 的帖子

可以啊。。
点赞  2011-12-15 11:53

回复 楼主 z364156109 的帖子

3、Cgifuncs.c  该文件中主要包含了8个函数,各个函数的具体功能在此不赘述,(需要的话可以看附上的工程里的注释),这几个函数主要在CGI处理程序被调用是它们才被调用,作用就是对HTTP的form data经行CGI处理程序所需要的参数的提取,从http服务器传上来的信息中包含着CGI想要的参数,要想顺利的得到这些参数,就必须靠这个文件里的几个函数了。
4、Io.c 这个文件里边的函数就是我们通过网页控制开发板时要求开发板上外设所要实现的动作。CGI和SSI处理程序最终是通过调用它们来实现对外设的操作。
5、Lmi_fs.c这个文件里边只有三个函数:fs_open(),fs_close(),fs_read()。当我们采用JavaScript的方式来实现网页对外设的控制的时候,实际上是http服务器得到命令后调用fs_open()这个函数来执行IO.c里边的函数,已达到对外设进行控制的目的。
点赞  2011-12-15 11:57
我也想要一份122825585@qq.com谢谢!
点赞  2011-12-15 20:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复