打印

想做一个简单的嵌入Web

[复制链接]
2338|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
聆风|  楼主 | 2012-7-1 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
shell.albert| | 2012-7-4 16:40 | 只看该作者
1# 聆风

底层的协议栈实现了,就好办了。Web说白了就是http协议,做一个对标准http协议请求给出应签的服务端程序就可以了。用C写一个。说白了就是接收客户端的请求,分析发过来的字符串,然后服务端根本不同的请求,构造不同的html标签发送给客户端。

LZ可以下载一个开源的嵌入式web,如果我记得没错的话应该叫 boa。
嵌入式上常用的boa,可以直接从www.sourceforge.net上下载。
boa实现了简单的web功能,支持http协议,最主要的是支持cgi,可以参考一下。

使用特权

评论回复
板凳
聆风|  楼主 | 2012-7-4 21:47 | 只看该作者
我的单片机已经实现TCP/IP Socket功能. 现在还有10kB ROM及2kB RAM, 实现路由器web设置参数功能, 大概有50个参数要设置, 用普通的CGI是否可以实现, BOA太庞大了. 估计装不下.

使用特权

评论回复
地板
shell.albert| | 2012-7-4 22:10 | 只看该作者
3# 聆风

你这应用不是一般的小单片机控制型的,你的应用上升到嵌入式应用了。
增加Flash、扩RAM吧。否则应用很难搞的。

使用特权

评论回复
5
john_lee| | 2012-7-4 23:14 | 只看该作者
3# 聆风
你用的哪款m3?怎么就只剩这么点存储空间了?

使用特权

评论回复
6
聆风|  楼主 | 2012-7-5 08:24 | 只看该作者
被用来做TCP/IP协议等用的差不多了, 剩下这点空间想搞出来做一个简单的Web设置功能

使用特权

评论回复
7
john_lee| | 2012-7-5 13:28 | 只看该作者
tcp/ip精简一下,一般10K ROM 足够了,加上一些辅助代码,也就12~3K,撑死了16K, 你的 M3 难道只有32K ROM?

使用特权

评论回复
8
sjnh| | 2012-7-5 14:15 | 只看该作者
第一步:
“类似于路由器或无线AP设置界面,有下拉列表控件及单选框,复选框和文本输入框. 可以被用户登录设置”,这些都是网页实现技术。先做完网页,考虑如何用C程序实现。实现方法两种:
1、用工具软件将网页转换成.c代码,http请求时直接发出去;占ROM空间,RAM使用少;
2、http请求时,自己写c语言代码实现网页发出去,相当于CGI;占RAM空间多;
这里有个问题:你的网页是静态的还是动态的,如果是静态的建议用1,如果是动态建议用2,当然不是一定用。

第二步:
响应网页提交的数据,就是得到http网页提交的数据,分析处理数据中的post,get方法,根据数据更改你的设置

以上都可以在lwip例子中找到处理方法,当然程序实现动态或静态网页去找CGI的例子;
你这么多参数估计占ROM不少。

使用特权

评论回复
9
聆风|  楼主 | 2012-7-5 14:30 | 只看该作者
我现在一边在学HTML语言. 如下一些html语言我转成c语言中的字符串数组:
const char index2[]="\
<html><head>                   \
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />        \
<meta http-equiv="Content-Language" content="zh-cn" />                  \
</head>                                                                  \
<body bgcolor="#d0d0d0">                 \
<h2>WIFI Card Setting</h2>                  \
<form>                                                         \
AP1:                                                         \
<input type="text" name="firstname">\
<br />                                                                \
AP2:                                                                \
<input type="text" name="lastname">         \
<br />                                                                 \
LED_ON:                                                                  \
<input type="radio" checked="checked" name="LED" value="On" /> \
<br />                                                                        \
LED_OFF:                                                                \
<input type="radio" name="LED" value="Off" /> \
<br />                                                                   \
</form>                                                                  \
</body>                                                                   \
</html>";
编译出错,USER_CODE\web.c(27): error:  #65: expected a ";"
看上去应该是太多的"符号及/ \ 符号将编译器搞乱了, 以上html代码(删除每行后面的"\"符号)可以运行. 但搬到C编译器下就编译不通过了.

我决定使用静态形式将网页用html写好, 存ROM数组使用socket发送出去. 然后使用GET方法分析客户发送给本服务器的"?"字段并做出响应. 这样只要我的HTML文件编译出来少于10KB就可以, 还有个问题就是我接收客户端发送的GET. 是否可以分几次接收recv()客户端数还是一定要一次就将一个完整的包接收完? 如果可以分多次的话, RAM就可以用的再少一点.

使用特权

评论回复
10
sjnh| | 2012-7-9 12:47 | 只看该作者
双引号",在c数组中用\"代替;
注意:结尾的符号\   前面的空格是占空间的,例如</body>                    \;

是否可以分几次接收,这个不清楚,但觉着应该是可以,例如提交图片时肯定有大于1500字节的图片。

使用特权

评论回复
11
workmanstudio| | 2012-7-17 09:06 | 只看该作者
mark

使用特权

评论回复
12
常州的蓝天| | 2012-7-19 08:44 | 只看该作者
我记得kiel里面有这方面的例程,你找找看,参考参考。

使用特权

评论回复
13
第二个小江| | 2012-7-21 20:55 | 只看该作者
1. 在PC端设计你所说的网页界面。
2. 把网页界面的内容以全局数组的方式保存到嵌入式系统中。
3. 在嵌入式系统中加入对HTTP协议的解析,包括对客户端请求命令的解析,对回应数据的动态变动,嵌入式系统做WEB服务器。

使用特权

评论回复
14
聆风|  楼主 | 2012-7-21 21:45 | 只看该作者
我已经用VC做了一个简单的嵌入式HTTP服务器, 目前运行还可以.  以后设计和调试嵌入式web server就方便多了。 想移一个复杂点开源的embeded web server进去.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

171

主题

559

帖子

0

粉丝