使用Web页面远程控制LED
使用Web页面远程控制LED
CGI(通用网关接口)是Web服务器运行时外部程序的规范,按CGI编写的程序可以拓展服务器功能。CGI程序可以与浏览器进行交互,还可以通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以从浏览器中获取数据存放到数据库中。几乎所有的服务器都支持CGI,可以使用任何语言编写CGI。CGI分为直接CGI和间接CGI两种,标准CGI使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI又称缓冲CGI,在CGI程序和CGI接口之间插入一个缓冲程序,缓冲程序与CGI接口间用标准输入输出进行通信
实验步骤:
替换/www目录下的index.html文件
确认boa.conf(/etc/boa/)配置文件中CGI的存放路径,打开boa.conf,确定内容为ScriptAlias /cgi-bin/ /www/cgi-bin
进入/www/cgi-bin,将交叉编译myled.c生成的可执行文件(文件后缀必须是.cgi)拷贝到该目录
arm-none-linux-gnueabi-gcc -o myled.cgi myled.c -static
修改可执行文件myled.cgi的权限为777
网络设备输入http://192.168.3.20(开发板IP地址)
程序执行结果
相关代码如下:
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>led远程控制</title>
<style type="text/css">
body {background-color: #999900;text-align: center;
}
.ziti {font-size: 24px;
}
.juzhong {text-align: center;
}
.hsz {text-align: center;
}
.hsz td {color: #00F;font-size: 18px;
}
.hsz {background-color: #FCC;
}
.juzhong table {text-align: center;
}
.juzhong table tr {}
#h1 {background-color: #0FC;
}
#h2 {background-color: #FF9;
}
.h3 {background-color: #0CF;
}
.ys1 {font-size: 24px;
}
.STYLE1 {font-size: 36px}
</style>
</head><body class="juzhong">
<table width="900" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td><p class="STYLE1"> </p><p class="STYLE1">iTOP-4412 WEB SERVER </p></td></tr><tr><td height="30"> </td></tr><tr><td><form action="/cgi-bin/myled.cgi" method="get" enctype="application/x-www-form-urlencoded" name="form1" target="_blank" id="form1"><table width="300" border="1" align="center" cellpadding="1" cellspacing="1"><tr><td>Led1</td><td><input name="led1" type="checkbox" id="led1" value="1" /><label for="led1"></label></td></tr><tr><td>Led2</td><td><input name="led2" type="checkbox" id="led2" value="2" /><label for="led2"></label></td></tr><tr><td colspan="2"><input type="submit" name="submit" id="submit" value="submit" /></td></tr></table></form></td></tr><tr><td ><p> </p> </td></tr>
</table>
<p> </p>
</body>
</html>
myled.c
#include <stdio.h>
#include <stdlib.h>int main()
{char *data;int leds[2] = {0, 0};long m, n;int exit=0,i,fd;printf("Content-Type:text/html;charset=gb2312\n\n");printf("<html>\n"); printf("<body>\n");printf("<title>iTOP-4412</title> ");printf("<h3>iTOP-4412</h3> ");data = getenv("QUERY_STRING");printf("<p>receive data:%s</p>",data);while(*data != '\0'){if(*data=='=')switch(*(data+1)){case '1':leds[0]=1;break;case '2':leds[1]=1;break;default:exit=1;break;}if(exit == 1)break;data++;}fd=open("/dev/leds",0);for(i=0;i<2;i++){if(leds[i]==1)printf("<p>%d\t</p>",i+1);ioctl(fd,leds[i],i);}printf("</body>\n");printf("</html>\n");return 0;
}
使用Web页面远程控制LED相关推荐
- MQTT进阶:web端远程控制LED灯
前言 本篇教程是MQTT的进阶篇,在云服务器搭建好了MQTT服务器后,使用网页连接MQTT服务器,并发布相关的控制信息到服务器指定的Topic,ESP32在本地连接WIFI,订阅相同的Topic,收到 ...
- 【ESP 保姆级教程】疯狂点灯篇 —— 案例:ESP8266 + LED + 按键 + Web页面控制(Web页面控制开关LED灯)
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️ ❤️ 本篇创建记录 2021-06-04 ❤️ ❤️ 本篇更新记录 2022-01-21 ❤️
- android+app+wifi+控制+协议,玩转OneNET物联网平台之MQTT服务④ —— 远程控制LED(数量无限制)+ Android App控制...
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.但愿你们分享给你周边须要的朋友或者同窗,说不定大神成长之路有博哥的奠定石...android 若是以为有用,麻烦点赞收藏,您的 ...
- Web 服务器远程控制硬件(Arduino)
Web 服务器远程控制硬件(Arduino) 程序流程 程序 后续 程序流程 定义热点名和密码 设置IP地址 IPAddress sip(192,168,1,29) 设置模式 WiFiServer s ...
- esp8266连接远程服务器IP,ESP8266连接服务器实现远程控制LED灯
本帖最后由 chenyuechi 于 2017-7-17 15:32 编辑 本教程是用ESP8266实现远程控制LED灯的亮/灭,只要学会了控制LED灯,就可以控制继电器.电机等很多东西噢 开发之前大 ...
- java实现页面高效刷新_selenium高效应对Web页面元素刷新的实例讲解
当我们在页面上进行selenium.type()或者selenium.click()操作的时候,往往需要需要等待一个元素的出现,对于一般的网页,当我们进入一个新页面的时候,往往会使用selenium. ...
- ASP.NET Web页面(.aspx)添加用户控件(.ascx)无显示的问题
写好的用户控件点击视图显示没有问题,但是将控件添加到Web窗体上时却显示如下图标: F5运行,查看源代码:有代码--但是页面却显示一片空白. 分析代码,比较了一下能显示用户控件的其他web页面以及代码 ...
- 像数据分析一样写 Web 页面,这个 Python 库做到了!
作者|刘早起 来源|早起Python 提起用 Python 写一个 web 页面,总是会想起Django/Flask等这样的大家伙. 他们确实好用,但就是流程繁琐,比如有时就想写一个简单的页面,比如问 ...
- 用服务器安装nginx部署web页面
作为一个野生的iOSer,技术栈好像还没到这么远,平时也用不太到,主要最自学的几个方面碰巧联系在了一起,因为爱好吧,就研究了下.对了还有戴铭做的那个iOS高阶晋级网课,我也打算订阅一份,并且每章带有我 ...
最新文章
- 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★
- 根据两点间的经纬度计算距离
- 自写sonar 插件加载到sonar 服务中的展示信息
- 攻防世界 适合做桌面_空间“狭小”的二人世界,适合情侣们做浪漫的事情
- IT职业生涯中的必修课
- Linux 进程地址空间1_数据结构和接口
- 使用pyecharts绘制新冠肺炎疫情地图
- Navicat 中文破解版
- 51nod 1534 棋子游戏(博弈)
- ppt圆形箭头怎么画
- x86代表计算机的,X86是32位还是64位 X86和X64含义介绍
- 未来10年35项最值得你期待的技术(中)
- CEF3 C++接口实现自定义浏览器[simple version]
- 试发贴:央视《焦点访谈》曝光淘宝网纵容售假
- 通过PS把素色的旗袍换成青花瓷样式的旗袍
- CSS中左上朝向三角形(Top-Left Triangle)的几种制作方式
- ACP——ECS题库
- arm64 blr指令
- 【数据结构复习】二叉树的遍历——从微软2014校园招聘说起
- HVV-Learning-区域边界网络下的攻击链路与攻击事件(BLAUKC)