15436|37

918

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

Enet_io中的SSI和CGI [复制链接]

    
  基于XMLHttpRequest的方法来是实现远程控制,大部分的工作都是在浏览器上完成的,这样减轻了嵌入式Web服务器的负担,感觉速度也很快,而且开发还是比较容易的,只要你熟练掌握JavaScript,结合Firefox的firebug,你会实现很多有趣的应用。
   有人说能使用JavaScript的地方,就尽量使用它,用不了的情况下,我们就可以用CGI;我觉得不无道理。
   由此可见CGI也是很强大的,不过CGI主要是在服务器上运行。
   在enet_io这个例程中,在浏览器上去发送调用服务器上的CGI函数的uri是采用提交表单的方法。
   URI后面会有这个表单中的所有参数,我们通过firebug可以清楚地看到参数是什么:
  
  
看到了吧,在192.168.0.100的后边一长串都是参数,不用我分析,有了firebug你自己都能看明白是怎么回事了吧。
我们点击了update setting按钮后,实际上就是发送了这么一串信息给服务器。我们要调用服务器端的iocontrol这个CGI处理程序,参数是LEDon=1,PWMon=1等等。
那么http服务器通过检索扩展名.cgi去调用CGI处理函数。
但是你必须在初始化了lwIP以后,先要告诉http Server我们的这个服务器有哪些CGI函数。
通过下面这条语句。
 
 
    // Pass our CGI handlers to the HTTP server.
    //
    http_set_cgi_handlers(g_psConfigCGIURIs, NUM_CONFIG_CGI_URIS);
 
[ 本帖最后由 academic 于 2010-11-26 09:32 编辑 ]

最新回复

不错。  详情 回复 发表于 2014-3-5 16:50
 
点赞 关注

回复
举报

918

帖子

0

TA的资源

纯净的硅(中级)

沙发
 

SSI经常和CGI配合使用,这点不仅是在Enet_io这个例程中可以看到,在S2E例程中也是可以看到的。

在Enet_io例程中,我们在提交表单中的参数之后,CGI 的参数提取函数会提取参数,然后依据参数对设备进行相关的设置或控制,然后要返回同一个页面:io_cgi.ssi

定义CGI默认返回的页面:

#define DEFAULT_CGI_RESPONSE    "/io_cgi.ssi"

这个定义在enet_io.c里可以找到的。

这个默认的.ssi格式的返回页面为什么能够显示执行了CGI函数后的信息呢?

其实原理很简单,我们在设计网页的时候就预先放置了SSI tag。

<tr>
<td align="left" valign="top">LED
State</td>
<td align="center" valign="top"><!--#LEDtxt--></td>
<td align="center" valign="top"><input name="LEDOn" value="1" type="checkbox"></td>
</tr>
<tr>

其中的<!--#LEDtxt-->就是一个SSI tag。但它在浏览器上是不会显示出来的。

在这个enet_io例程的fs文件夹下的io_cgi.ssi中一共有5个SSI tag。你可以试着找找其它四个。网页文件都在fs文件夹下。

所以当web服务器准备向浏览器发送这个页面的时候,检查到是ssi后缀的网页文件,它就会对其进行扫描,扫描到<!--#后,就认为是找到了一个SSI tag,根据tag的名称获取信息,并在SSI  tag的后边插入这些信息,再发送给浏览器。

所以你看到的是修改过的网页。这就是基本的原理。具体的细节你可以去看程序,然后有问题可以在下面发帖一起讨论。

其它的SSI tag都是类似的方法。

可以看到这个页面不是我们常见的html后缀,而是.ssi,其实也还可以是:

const char *g_pcSSIExtensions[] = {
  ".shtml", ".shtm", ".ssi", ".xml"
};
中的一种扩展名。

只要我们编写的网页最后以这些后缀命名,在发送前就会去扫描其中的SSI tag并由SSIHandler()插入信息。

当然,还有一些相关的工作是需要去做的,我这里只是提一下思路。帮助理解原理。只要原理搞清楚了,就不会觉得那么神秘了,在开发的时候就知道要去修改哪些地方。

我想这也就是TI Stellaris提供的例程能够加快开发进程的原因之一吧。

[ 本帖最后由 academic 于 2010-11-25 18:09 编辑 ]
 
 

回复

155

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

非常受益

谢谢,我邮箱61305608@163.com     能否发我邮箱一份资料    希望能够向你学习  
 
个人签名http://www.tdhj.cn
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 沙发 academic 的帖子

不错哦  我也对这个例程很有兴趣
 
个人签名机遇总是给有准备的人呢
 
 

回复

1万

帖子

16

TA的资源

版主

5
 

不错顶下

 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

6
 

回复 板凳 bjmonsoon 的帖子

其实也没什么资料,心得都在上边了。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

7
 
我也要。。啦啦啦。。
 
个人签名机遇总是给有准备的人呢
 
 

回复

1027

帖子

0

TA的资源

五彩晶圆(中级)

8
 
非常不错的说。。。
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

9
 
能不能把相关的资料也发我一份,我最近也在做相关的东西,很感兴趣626699153@qq.com
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

10
 
使用dreamwaver 8.0的话  能不去弄懂javascript就能编写网页吗?
 
个人签名机遇总是给有准备的人呢
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

11
 

回复 10楼 flyingbing 的帖子

JavaScript不依赖于其它的工具,它主要是在浏览器上运行的,JavaScript其实不是很复杂,函数比较少。dreamwaver 8.0开发嵌入式里的一些小小的网页时绰绰有余了。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

12
 

学习

学习了
 
 
 

回复

849

帖子

0

TA的资源

纯净的硅(高级)

13
 

回复 10楼 flyingbing 的帖子

不用哈。。写一个网页很简单的,直接不用脚本语言就可以写个简简单单的网页。
   如果加脚本的话,要在DW里面弄了,但如果用这款软件也可以不写代码做,直接操作,这样更直接。实用。
 
个人签名只有想不到,没有做不到。
 
 

回复

849

帖子

0

TA的资源

纯净的硅(高级)

14
 

回复 沙发 academic 的帖子

呵呵。。。LZ。我也来一份吧。。。lchhzjx32226@qq.com
   
 
个人签名只有想不到,没有做不到。
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

15
 

回复 14楼 shilaike 的帖子

我好好整理一下,再传上来。
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

16
 
受益匪浅,谢谢指路
 
 
 

回复

422

帖子

0

TA的资源

纯净的硅(高级)

17
 

回复 楼主 academic 的帖子

楼主,深入往下说啊。这个网页的最后一列new的那些数据怎么传上来的啊?说说这个
 
 
 

回复

27

帖子

0

TA的资源

一粒金砂(初级)

18
 
不错
 
 
 

回复

69

帖子

0

TA的资源

纯净的硅(初级)

19
 
很不错,描述的很清楚。多谢分享。
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

20
 

回复 15楼 academic 的帖子

请问下,版主知道怎么修改这个例子中网页的反应时间。也就是怎么把网页的反应时间该长点
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表