查看: 1686|回复: 0

[原创] [经验分享]自制cgi网页控制led

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20028
最后登录
2024-4-26
发表于 2020-8-17 10:18:16 | 显示全部楼层 |阅读模式
我们拿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
打开网页效果如下
chi1.PNG
下面将上面代码转成16进制,这个可费劲了,所以我写了个简单的python脚本,把上面转成数组。Python是读取book.txt,所以网页要命名成book.txt,输出到一个叫做array.txt的文档里,长这样

hex_cgi.PNG



把代码里原来放cgi的数组替换成这个数组
keil_cgi.PNG


修改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
1.PNG

最后在浏览器输入192.168.0.102,然后单击CGI example就可以看到这个了,选择一个按钮再点击POST就可以控制led亮灭
cgi.PNG
附件为网页源码转数组
code2hex.zip (764 Bytes, 下载次数: 10)
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-26 16:18 , Processed in 0.099811 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表