打印
[STM32F1]

在stm32里面的webserver如何获得用户按钮状态

[复制链接]
6448|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huzhiyang|  楼主 | 2014-11-15 20:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
   最近在学习stm32的webserver,于是自己想试试,写下了如图的界面

但是我不知道在httpd.c中如何获得单选按钮的值。
webserver程序如下:
<html>
<head>
<title>智能控制系统Web服务器</title>
</head>
<body>
<DIV>
<MARQUEE scrollAmount=2 direction=down height=60><CENTER><FONT face=华文彩云 color=#f73809 size=7><B>智能家居控制系统</B></FONT></CENTER></MARQUEE>
<MARQUEE scrollAmount=2 direction=up   height=60><CENTER><FONT face=华文彩云 color=#4db361 size=7><B>智能家居控制系统</B></FONT></CENTER></MARQUEE>
</DIV>
<form method="get">
灯1:<br />
<input type="radio" name="a" value= 0>开
<br />
<input type="radio" name="a" value= 1>关
<p>
<p>
灯2:<br />
<input type="radio" name="b" value= 2>开
<br />
<input type="radio" name="b" value= 3>关
<p>
<p>
灯3:<br />
<input type="radio" name="c" value= 4>开
<br />
<input type="radio" name="c" value= 5>关
<p>
<p>
<script>
</script>
</form>
</body>
</html>

沙发
mmuuss586| | 2014-11-15 23:32 | 只看该作者
这要看你协议怎么定啊;

使用特权

评论回复
板凳
FAQ| | 2014-11-16 08:46 | 只看该作者
用POST发参数

使用特权

评论回复
地板
dong_abc| | 2014-11-16 10:15 | 只看该作者
楼主程序里有个 <form method="get">
楼上有个post

楼主百度去吧

使用特权

评论回复
5
huzhiyang|  楼主 | 2014-11-16 12:50 | 只看该作者
mmuuss586 发表于 2014-11-15 23:32
这要看你协议怎么定啊;

我没有定协议啊,我就是想看看我点击按钮的时候,我的程序能接受到什么数据,但是我试过了,似乎我点击网页的时候,我的程序没任何反应
按分析,我们在IE浏览器里面输入我的ip地址的时候,就会调用这个函数,然后我就输出网页。

这是我在浏览器中输入http://192.168.10.15时串口打印出来的,然后我点击网页上的按钮,就得不到任何反应了
file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\413351855\QQ\WinTemp\RichOle\1_KYN23WD4~C8R1R_S]9FOY.jpg

file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\413351855\QQ\WinTemp\RichOle\7P(RC]V8@1EK5]YT9QFPTCW.jpg

使用特权

评论回复
6
huzhiyang|  楼主 | 2014-11-16 12:51 | 只看该作者
dong_abc 发表于 2014-11-16 10:15
楼主程序里有个
楼上有个post

还是不理解怎么做,请看我回复另一个好人分析,我是第一次做webserver,也第一次接触html,还请指教

使用特权

评论回复
7
huzhiyang|  楼主 | 2014-11-16 12:51 | 只看该作者
FAQ 发表于 2014-11-16 08:46
用POST发参数

还是不理解怎么做,请看我回复的分析,我是第一次做webserver,也第一次接触html,还请指教

使用特权

评论回复
8
sxhhhjicbb| | 2014-11-16 16:27 | 只看该作者
submit要加个按钮发送的。或都你html中加入javascript代码,进行发送。

使用特权

评论回复
9
江枫渔火| | 2014-11-16 17:50 | 只看该作者
懂不懂html和http?
html传送数据到服务器也就是发送http请求报文。
点击按钮后你可以用get方式或者post方式传递参数到服务器,这里,你的板子就是服务器。传递才参数在哪?如果是get方式的请求,参数就在网址后面如www.baidu.com/index.php?a=1&b=2&c=3
当你的form表单method属性设置为get方式时,表单里的元素的值,就像上面的方式发送到服务器。而服务器通过检查解释字符串就能知道参数了
而如果你是设置为post方式,你的请求网址不会变,但是在http报文的实体部分就会有这些参数。也是a=1&b=2&c=3这样的。如果是汉字或二进制数据或者会进行其他编码。
回去百度百度。建议你自己开个浏览器,在弄个http抓包工具好好看看。

使用特权

评论回复
10
huzhiyang|  楼主 | 2014-11-17 20:52 | 只看该作者
sxhhhjicbb 发表于 2014-11-16 16:27
submit要加个按钮发送的。或都你html中加入javascript代码,进行发送。

你的话提醒了我,我在html中加入了一行
<input type="submit" value="控制" name="control" />
界面如下:

file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\413351855\QQ\WinTemp\RichOle\O9IKG_)AMMQ2D0}H]XEN4NA.png
file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\413351855\QQ\WinTemp\RichOle\O9IKG_)AMMQ2D0}H]XEN4NA.png

但现在有两个问题,
1.我开始是直接将我的html文件用浏览器打开,选中radio之后,再点控制,我之前的选中状态不见了,似乎想复位了一样。
2.我将这个webserver烧入我的开发板,在IE浏览器输入我的开发板IP地址,打开这个界面之后,选中一个radio,点击“控制”,
网页就消失了,还请指教,控制灯已经实现了

使用特权

评论回复
11
huzhiyang|  楼主 | 2014-11-17 20:53 | 只看该作者
江枫渔火 发表于 2014-11-16 17:50
懂不懂html和http?
html传送数据到服务器也就是发送http请求报文。
点击按钮后你可以用get方式或者post方 ...

非常感谢你,按照你说的,我抓包了,分析了下,控制灯已经实现了,但还是有两个问题,见我上面的回复

使用特权

评论回复
12
lxyppc| | 2014-11-17 21:29 | 只看该作者
Http就是发一个连接给主机
主机返回一个页面
点击控制后会发一个连接到主机
但是你主机没有返回新的页面
所以网页就消失了
至于选中状态,也要主机返回
如果想让页面不动,就把事给办了
可以用ajax来实现

ajax不是语言,不是java,也不是html,xml
而是浏览器获取数据而不更新页面的一种方式

使用特权

评论回复
13
huzhiyang|  楼主 | 2014-11-17 21:29 | 只看该作者
江枫渔火 发表于 2014-11-16 17:50
懂不懂html和http?
html传送数据到服务器也就是发送http请求报文。
点击按钮后你可以用get方式或者post方 ...

大致明白你的意思了,但我在用post传递参数的时候,第一次点“控制”按钮的时候,网址确实没有变,但我再点第二次“控制”的时候,还是会出现

这样的界面,真是搞不懂
如果用get方法,传递给服务器的参数确实会出现在网址后面

也会导致网页不存在

使用特权

评论回复
14
huzhiyang|  楼主 | 2014-11-17 21:40 | 只看该作者
lxyppc 发表于 2014-11-17 21:29
Http就是发一个连接给主机
主机返回一个页面
点击控制后会发一个连接到主机

你这说的就麻烦了,我不是专门做webserver的,我是做嵌入式的啊,能不能就用get方法,而不改变请求的网址呢,

使用特权

评论回复
15
lxyppc| | 2014-11-17 21:48 | 只看该作者
huzhiyang 发表于 2014-11-17 21:40
你这说的就麻烦了,我不是专门做webserver的,我是做嵌入式的啊,能不能就用get方法,而不改变请求的网址 ...

可以的,你返回同样的页面就行了

基本上需求决定了你需要了解的深度

使用特权

评论回复
16
huzhiyang|  楼主 | 2014-11-17 22:31 | 只看该作者
lxyppc 发表于 2014-11-17 21:48
可以的,你返回同样的页面就行了

基本上需求决定了你需要了解的深度

那我为什么用post发送参数,这种方式参数不会出现在URL内,第一次点击“控制”,网页到还没有变,怎么点第二次“控制”,页面就没了,也是页面无法访问呢?

使用特权

评论回复
17
huzhiyang|  楼主 | 2014-11-17 22:35 | 只看该作者
lxyppc 发表于 2014-11-17 21:29
Http就是发一个连接给主机
主机返回一个页面
点击控制后会发一个连接到主机

还有一个问题,你说选中状态也返回给页面,那我返回的页面数据放在哪里,页面才知道的

使用特权

评论回复
18
lxyppc| | 2014-11-18 08:57 | 只看该作者
huzhiyang 发表于 2014-11-17 22:35
还有一个问题,你说选中状态也返回给页面,那我返回的页面数据放在哪里,页面才知道的 ...

随便弄个div什么的,放在里面就行了
取的时候通过id去取

使用特权

评论回复
19
江枫渔火| | 2014-11-18 11:08 | 只看该作者
两次post提交的结果不一样,说明什么?说明你输出的页面变了。
第一次post,看不出变化,但只是你看不出页面内容的变化。第二次提交的时候,是在你第一次提交后返回的页面上进行的操作。多观察。

使用特权

评论回复
20
huzhiyang|  楼主 | 2014-11-18 13:00 | 只看该作者
lxyppc 发表于 2014-11-18 08:57
随便弄个div什么的,放在里面就行了
取的时候通过id去取

还是不明白怎么做,呵呵,我要补充下html的知识了

使用特权

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

本版积分规则

32

主题

190

帖子

2

粉丝