当前位置: 首页 > news >正文

【北京迅为】iTOP-4412精英版使用手册-第三十五章 WEB控制LED

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。配备三星S5M8767电源管理。配备Android、Linux+Qt、Ubuntu操作系统,开启学习、研发的全新方式。Exynos4412开发板处理器成功应用于三星GALAXYS3,联想K860,魅族MX2等热门产品当中,并取得巨大成功。功耗控制以及强劲的性能一直为业内称道,超过5000万片的出货量,足以证明其稳定性与可用性。已成为三星官方推广的处理器之一,并承诺长期供货。


第三十五章 WEB控制LED

本章介绍了额外的一些 web 知识,用于实现网络数据的传输。用户可以在这个例子的基础上扩展其功能。

配套视频为:

“视频 21web 控制 led”

上一章讲了在 iTOP-4412 开发板上搭建 web 服务器,这一章在前面一章的基础上讲解一下通过 web 网页实现控制 LED。

要实现控制 led,需要 CGI 编程,CGI(Common Gateway Interface)是外部应用扩展,应用程序与 www 服务器交互的一个标准接口。按照 CGI 标准编写的外部扩展应用程序可以处理客户端浏览器输入的数据,从而完成客户端与服务器的交互操作。而 CGI 规范就定义了 web 服务器如何向扩展应用程序发送消息,在收到扩展应用程序的信息后又如何进行处理等内容。通过 CGI 可以提供许多静态的 HTML 网页无法实现的功能。比如搜索引擎、基于web 的数据库访问等等。

首先进入到的开发板文件系统所在的目录,如下图

在前面的搭建 web 服务器章节,在修改 boa.conf 配置文件的时候指定了 web 网页的存放目录“DocumentRoot /www”,现在打开之前在 www 目录创建的 index.html,如下图所示。

打开 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>

如下图所示,

然后保存并退出。上面输入的是 HTML 格式的代码,主要是用到了通过表单向服务器提交信息,在表单里面指定了服务器端处理接收到信息的 CGI 程序是 myled,这是在 form 表单的属性里设置的,代码是“form action="/cgi-bin/myled.cgi" method="get”,使用的传递数据的方式是 get 方法,如下图所示。

修改完了 index.html,需要些 CGI 程序。在 boa 的配置文件 boa.conf 里面指定了 CGI 程序的存储目录是“ScriptAlias /cgi-bin/ /www/cgi-bin/”,如下图所示。

现在进入到 开发板文件系统的 www/cgi-bin 目录,如下图所示。

然后再 cgi-bin 目录创建 myled.c,如下图所示。

然后在 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;
}

如下图所示。

最后保存并退出。

上面的代码是 C 语言,主要是完成了获取 web 提交过来的数据,然后对获得的数据解析,最后会调用 led 的 ioctl 函数来点亮或关闭 led。里面的 printf 打印语句,最终会生成一个 web 页面。接下来编译 myled.c 生成 myled.cgi(在 index.html 的表单里面设置了处理文请求的 cgi 程序是 myled.cgi),使用命令“arm-none-linux-gnueabi-gcc -o myled.cgi myled.c -static”编译 myled.c,如下图所示。

编译完成后,可以看到在 www/cgi-bin 目录下生成了 myled.cgi,如下图所示。

注意:生成的 myled.cgi 需要有可执行权限,所以使用 chmod 命令修改下它的权限,如下图所示。

现在控制 led 的 web 程序就已经完成了,现在启动开发板,如下图所示。

通过上图可以看到 iTOP-4412 开发板已经起来了,然后打开 PC 的浏览器,输入开发板的 ip 地址,如下图所示。

输入完成后,按回车,即可打开开发板的 index.html 页面,如下图所示。

可以选中 led1 和 led2 右边的复选框,如下图所示。

然后点击页面上的“submit”按钮,会打开一个新的 web 页面,如下图。

上图中的页面里面的信息就是 myled.cgi 程序里面的 printf 打印出来的,其中“receive data:led1=1&led2=2&submit=submit”,就是客户端通过 get 方式传递给 web 服务器的数据,下面两行的 1 和 2 是 myled.cgi 程序从“receive data:led1=1&led2=2&submit=submit”里面解析出来的值。同时还可以在串口上看到iTOP-4412 开发板 led 驱动打印出来的信息,如下图所示。

至此通过 web 页面控制 led 的实验已经完成了,可以参照这个例程来自己实现一个控制蜂鸣器的 web 程序。

http://www.dtcms.com/a/466667.html

相关文章:

  • 重庆seo整站优化报价福建建筑人才网官网
  • 教学信息化大赛网站建设作品永久免费国外ip代理
  • [嵌入式系统-93]: NVIDIA 正在从‘数据中心霸主’向‘端-边-云一体化AI平台’战略扩张。
  • 网站管理助手4.0域名备案查询管理系统
  • Oracle EBS ERP之报表开发—条件筛选按钮和组件开发
  • 济南网站建设与优化注册城乡规划师考试时间2023
  • 南通网站建设公司做品牌推广用什么网站
  • linux模拟压测CPU彪高到100%
  • 【2025全新】CDToolX专业圆二色谱数据处理软件下载安装教程(含最新版安装包)
  • 做网站做小程序推广中搜seo
  • Qiankun 微前端框架 start() 方法详解
  • 网站开发服务器多少钱个体户45万以下免个税
  • Autoware Universe 定位模块详解 | 第二节 深入研究定位模块数据流
  • 网站底部横条导航代码免费软件app下载大全
  • Java程序员如何深入学习JVM底层原理?
  • 送上门卤菜网站要怎么做软文代写发布网络
  • 有关网站建设的app安徽省建设工程质量协会网站
  • 【Liunx】高级IO
  • 「日拱一码」104 MOFs + AI
  • 学习笔记:Vue Router 路由匹配语法详解
  • 美妆网站建设外贸网站建设广告
  • 嵌入式开发基础知识补充—内存的种类和C语言变量的存储位置(非易失性存储和易失性存储)
  • 沈阳妇科排名前十的医生seo关键词排名优化
  • 读写分离架构:数据访问层的演进与实践
  • 应用最广网站建设技术wordpress被百度收录
  • Shell 编程1
  • conv([1 1], [1 2]) % 输出 [1 3 2](对应 (x+1)(x+2) = x²+3x+2)
  • SpringBoot 集成 LangChain4j RAG
  • linear protocol(线性协议)
  • net网络网站建设wordpress修改语言包目录