我们拿k64做服务器的例程来改一个网页控制led灯的实验 我们需要做哪些工作? 1、 编写一个led网页的源码 2、 将网页源码转成16进制数组,网页在mcu里都是一个数组 3、 修改CGI网页的处理函数 如果将mcu和电脑进行网线直连,还需要修改电脑IP地址
编写网页,我已经写好供大家参考,用记事本复制,后缀再改为html,名字book,双击book.html,就可以看到效果。再改回扩展名为txt <!DOCTYPEHTML SYSTEM> <html> <head> <title>KSDKHTTP Server Example</title> <style type="text/css"> <!-- @import"httpsrv.css"; --> </style> <script src="request.js"type="text/javascript"></script> <scripttype="text/javascript"> function parse_vars(data) { var elem =document.getElementById("get_response_text"); elem.value = data; } </script> </head> <body> <h2>CGI example</h2> <p> This page demonstrates CGIfunctionality. Control LED </p> <div style="text-align:center;"> <form name="ex_form"action="post.cgi" method="POST"> <input type="radio"name="post_input" value="ON" checked>LED_ON <br> <inputtype="radio" name="post_input"value="OFF">LED_OFF <br> <input type="submit"value="POST"> </form> </div> </html>
这样的代码在发送post请求时候,当我选择开led时候,它会发送”post_input ON”,之后cgi处理这段数据就是根据后面ON字符来决定是否开led
打开网页效果如下
下面将上面代码转成16进制,这个可费劲了,所以我写了个简单的python脚本,把上面转成数组。Python是读取book.txt,所以网页要命名成book.txt,输出到一个叫做array.txt的文档里,长这样
把代码里原来放cgi的数组替换成这个数组
修改cgi_example函数,别忘了先做引脚初始化 if (read > 0) { cgi_get_varval(buffer, "post_input", cgi_data,sizeof(cgi_data)); cgi_urldecode(cgi_data); if(cgi_data[0]== 'O' && cgi_data[1] == 'N') { GPIO_PinWrite(BOARD_LED_GPIO,BOARD_LED_GPIO_PIN, 0); } else { GPIO_PinWrite(BOARD_LED_GPIO,BOARD_LED_GPIO_PIN, 1); } } 网线和mcu直连,修改ip
最后在浏览器输入192.168.0.102,然后单击CGI example就可以看到这个了,选择一个按钮再点击POST就可以控制led亮灭
附件为网页源码转数组
code2hex.zip
(764 Bytes, 下载次数: 10)
|