使用lighttpd和开发板进行交互

article/2025/7/28 23:02:20

文章目录

    • 🧠 一、Lighttpd 与开发板的交互原理
      • 1. 什么是 Lighttpd?
      • 2. 与开发板交互的方式?
    • 🧾 二、lighttpd.conf 配置文件讲解
      • ⚠️ 注意事项:
    • 📁 三、目录结构说明
    • 💡 四、使用 C 编写 CGI 脚本(实现点灯)
      • 1. 示例:C语言 CGI 脚本(控制 GPIO)
      • 2. 编译并设置权限
    • 🌐 五、网页中调用 CGI(按钮触发)
    • 🛠️ 六、调试建议
    • ✅ 总结

🧠 一、Lighttpd 与开发板的交互原理

1. 什么是 Lighttpd?

Lighttpd 是一个轻量级 Web 服务器,适合资源受限的嵌入式开发板运行。它支持:

  • 静态网页服务(HTML、图片等)
  • 动态网页处理(如 CGI 脚本)
  • 支持 FastCGI、SCGI、URL 重写等

2. 与开发板交互的方式?

Lighttpd 自身不直接控制硬件(比如点灯),而是通过调用 CGI 程序(通常是用 C 语言或 shell 写的),这些程序再调用开发板底层的接口,比如:

  • 操作 GPIO 口实现“点灯”
  • 读取传感器数据返回网页
  • 执行控制指令等

总结:网页点击按钮 → 请求 CGI 脚本 → 脚本操作硬件并返回结果 → 网页展示结果


🧾 二、lighttpd.conf 配置文件讲解

一个典型的配置如下:

server.modules = ("mod_access","mod_alias","mod_compress","mod_redirect","mod_rewrite","mod_cgi"
)server.document-root = "/etc/lighttpd/www"   # 网站根目录
server.port = 8080                           # 启动监听端口
server.errorlog = "/etc/lighttpd/error.log"  # 错误日志
dir-listing.activate = "enable"              # 浏览目录功能index-file.names = ( "index.html" )          # 默认主页文件名mimetype.assign = (".html" => "text/html",".txt"  => "text/plain",".jpg"  => "image/jpeg",".png"  => "image/png",""      => "application/octet-stream"
)# 配置 CGI 路由规则
$HTTP["url"] =~ "^/cgi-bin/" {cgi.assign = ( ".cgi" => "" )
}

⚠️ 注意事项:

  • accesslog.filenameserver.modules-dir 是无效选项,可以删除;
  • cgi.assign 中的 "cgi" 要确保对应文件有执行权限;
  • mod_cgi 必须包含在 server.modules 中。

📁 三、目录结构说明

比如 /etc/lighttpd/ 目录结构如下:

/etc/lighttpd/
├── www/                   # 网站根目录
│   ├── index.html         # 默认主页
│   └── cgi-bin/           # CGI 程序存放目录
│       └── led.cgi        # 用 C 写的 CGI 程序
├── lighttpd.conf          # 配置文件
├── error.log              # 错误日志
└── access.log             # 访问日志(可选)

💡 四、使用 C 编写 CGI 脚本(实现点灯)

1. 示例:C语言 CGI 脚本(控制 GPIO)

代码:led.cgi

#include <stdio.h>
#include <stdlib.h>int main(void) {printf("Content-type: text/html\n\n");printf("<html><body>");// 简单模拟点灯,真实环境用 /sys/class/gpio/ 或驱动接口system("echo 1 > /sys/class/leds/led0/brightness");printf("<h1>LED 已开启!</h1>");printf("</body></html>");return 0;
}

2. 编译并设置权限

# 交叉编译
aarch64-linux-gcc -o led.cgi led.c# 放入 CGI 目录
cp led.cgi /etc/lighttpd/www/cgi-bin/
chmod +x /etc/lighttpd/www/cgi-bin/led.cgi

🌐 五、网页中调用 CGI(按钮触发)

index.html 示例:

<!DOCTYPE html>
<html>
<head><title>LED 控制</title></head>
<body><h1>控制面板</h1><form action="/cgi-bin/led.cgi" method="GET"><button type="submit">点亮LED</button></form>
</body>
</html>

访问开发板网页:http://开发板IP:8080
点击按钮,即会请求 /cgi-bin/led.cgi,从而点亮灯。


🛠️ 六、调试建议

  • 404 错误排查

    • 确认 URL 是 /cgi-bin/*.cgi
    • CGI 文件可执行 (chmod +x)
    • 文件路径正确,配置中的路径匹配上
  • 权限问题

    • CGI 操作硬件需 root 权限运行
    • 确保 CGI 能访问 /sys/class/gpio 或相关硬件路径
  • 日志查看

    cat /etc/lighttpd/error.log
    

✅ 总结

项目内容
Web 服务Lighttpd 监听 8080 端口,提供页面
动态响应使用 C 编写的 CGI 程序,响应用户点击
硬件控制CGI 调用系统命令或控制设备驱动实现
网页交互表单或 JS 请求触发 CGI 执行
关键配置mod_cgicgi-bin、执行权限

效果实现:

在这里插入图片描述
点击后可以跳转到另外一个界面:

在这里插入图片描述


http://www.hkcw.cn/article/RNqqFgsWaT.shtml

相关文章

【无标题】安富莱V5程序移植到原子探索者F4控制板带TFT LCD显示屏

安富莱V5控制板用的控制器是STM32F407IGT&#xff0c; 原子探索者用的控制器是STM32F407ZGT6. 手里有原子探索者主控板2.8寸TFT LCD屏&#xff0c;需要把安富莱程序用于原子探索者硬件来运行和显示&#xff0c;经过一番折腾&#xff0c;成功运行。 省了安富莱的硬件&#xff0c…

【从0带做】基于Springboot3+Vue3的反炸宣传网站

大家好&#xff0c;我是武哥&#xff0c;最近给大家手撸了一个基于SpringBoot3Vue3的反炸宣传网站&#xff0c;可用于毕业设计、课程设计、练手学习&#xff0c;系统全部原创&#xff0c;如有遇到网上抄袭站长的&#xff0c;欢迎联系博主~ 资料获取方式 https://www.javaxm.c…

git 如何解决分支合并冲突(VS code可视化解决+gitLab网页解决)

1、定义&#xff1a;两个分支修改了同一文件的同一行代码&#xff0c;无法自动决定如何合并代码&#xff0c;需要人工干预的情况。&#xff08;假设A提交了文件a,此时B在未拉取代码的情况下&#xff0c;直接提交是会报错的&#xff0c;此时需要拉取之后再提交才会成功&#xff…

大规模、高规格、全品类,2025郑州台球展览会,8月启幕

-同聚中原共赢未来&#xff0c;42000㎡的大型台球盛会&#xff0c;将在8月15-17日&#xff0c;在郑州中原国际会展中心启幕&#xff0c;期待台球企业、品牌和买家客户届时参与。全称&#xff1a;壹肆柒2025中国&#xff08;郑州&#xff09;国际台球产业博览会&#xff0c;同期…

学习STC51单片机23(芯片为STC89C52RCRC)

每日一言 成功的路上从不拥挤&#xff0c;因为坚持的人不多&#xff0c;你要做那个例外。 通过单片机发指令给ESP8266进行通信 通信原理(也是接线原理) 代码如下 代码解释一下&#xff0c;因为我们的指令是字符数组&#xff08;c语言没有字符串的概念&#xff09;&#xff0c;…

Roller: 抽奖系统测试的幕后剧本-测试报告

抽奖系统 - 测试报告 项目名称&#xff1a;抽奖系统 测试人员&#xff1a;LlvZi 测试时间&#xff1a;2025年5月25 - 2025年6月1 一、项目概述 该项目是一个操作简便、安全可靠的抽奖系统 。主要业务是抽奖&#xff0c;并支持管理员管理用户、奖品和抽奖活动&#xff0c;以配…

智语心桥:当AI遇上“星星的孩子”,科技如何点亮沟通之路?

目录: 引言:当科技的温度,遇见“星星的孩子”“智语心桥”:一座为孤独症儿童搭建的AI沟通之桥核心技术探秘:AI如何赋能“读心”与“对话”?个性化魔法:AI如何实现“千人千面”的精准干预?应用场景畅想:从家庭到机构,AI的全方位支持为什么是“智语心桥”?——价值、可…

c++学习之---模版

目录 一、函数模板&#xff1a; 1、基本定义格式&#xff1a; 2、模版函数的优先匹配原则&#xff1a; 二、类模板&#xff1a; 1、基本定义格式&#xff1a; 2、类模版的优先匹配原则&#xff08;有坑哦&#xff09;&#xff1a; 3、缺省值的设置&#xff1a; 4、ty…

GESP2024年3月认证C++二级( 第三部分编程题(1)乘法问题)

参考程序&#xff1a; #include <iostream> // 引入输入输出库 using namespace std; // 使用标准命名空间&#xff0c;简化代码int main() {int n; // 存储输入的数字个数cin >> n; // 读入 nlong long product 1; // 用 long long 存…

NX811NX816美光颗粒固态NX840NX845

NX811NX816美光颗粒固态NX840NX845 美光NX系列固态硬盘颗粒深度解析&#xff1a;技术、性能与市场全景透视 一、技术架构与核心特性解析 1. NX811/NX816&#xff1a;入门级市场的平衡之选 技术定位&#xff1a;基于176层TLC&#xff08;Triple-Level Cell&#xff09;3D NAN…

6、运算放大器—共模抑制比(七)

目录 1、共模抑制比&#xff08;CMRR&#xff09;的定义 2、共模误差推导 3、电阻对共模误差的影响 4、参数特性 运算放大器&#xff08;运放&#xff09;的共模抑制比&#xff08;Common-Mode Rejection Ratio, CMRR&#xff09;是衡量其抑制共模信号能力的关键参数&…

“日本7月5日末日论”疯传 漫画预言引发社会焦虑

最近,网上关于日本“末日论”的讨论引起了广泛关注。据说2025年7月5日日本将遭遇毁灭性灾难,三分之一的国土会被海水吞没,连中国游客都忙着退酒店改行程。这一说法源自30年前的一部漫画——《我所看见的未来》,作者自称梦见了未来。漫画家龙树谅曾“预言”过2011年的东日本…

卢伟冰:竞争从来不是小米面临的挑战 更重视内部优化与用户距离

小米集团发布第一季度财报后,总裁卢伟冰与投资人进行了深入交流。面对投资人关于小米未来挑战的问题,卢伟冰提出了两点看法。他指出,随着小米业务规模和组织规模的扩大,公司需要确保不偏离其价值观,并保持与用户的紧密联系。同时,小米的管理体系也需要不断升级,以匹配业…

郑钦文将第8次对阵萨巴伦卡 再战老对手

在2025年法网女单1/8决赛中,头号种子萨巴伦卡以7-5和6-3的比分击败阿尼西莫娃,顺利晋级八强。这已经是萨巴伦卡连续第三年进入法网八强,并且她在最近参加的十个大满贯赛事中都至少闯入了八强。接下来,萨巴伦卡将与中国选手郑钦文交手。两人此前已经有过七次对决,郑钦文仅在…

DeepSeek R1 重磅升级,天工超级智能体 App 上线,Claude 解锁语音新体验!| AI Weekly 5.26-6.1

&#x1f4e2;本周AI快讯 | 1分钟速览&#x1f680; 1️⃣ &#x1f9e0; DeepSeek R1-0528 重磅升级 &#xff1a;推理能力接近 o3 和 Gemini 2.5 Pro&#xff0c;AIME 2025 数学测试准确率从 70% 飙升至 87.5%&#xff0c;幻觉率降低 45-50%。 2️⃣ &#x1f50d; 阿里通义…

亚马逊FBA新规下:1个模型算准补货量,自动预警断货危机

随着亚马逊对库存管理日趋严格&#xff0c;尤其是近期FBA库存限制政策的频频调整&#xff0c;越来越多卖家开始重视智能补货的重要性。断货不仅会影响销量&#xff0c;还可能导致排名下降甚至失去黄金购物车。如何在FBA新规下精准补货、避免资金积压或断货风险&#xff1f;答案…

电工基础【3】星形(Y) 和 三角形(△) 电路切换

05 星三角形启动 (星三角启动) 1、电机星形(Y)的工作原理 2、电机三角形(△)的工作原理 3、电机星三角形启动电气原理图的讲解 4、时间继电器的讲解 -----小记----- 星三角也是很经常用&#xff0c;是很经典电路。 好&#xff0c;我们讲这个课之前的话&#xff0c;我们先了…

JS基础3—定时器

定时器目录 定时器周期定时器延迟定时器 定时器实践转盘旋转动画轮播图实现 定时器 周期定时器 setInterval() 每隔指定时间重复执行回调函数 const intervalId setInterval(callback, interval, [arg1], [arg2], ...);参数&#xff1a; callback&#xff1a;要执行的函数…

使用通义万相Wan2.1进行视频生成

使用通义万相Wan2.1进行视频生成 源代码准备运行环境准备创建Python虚拟环境并激活安装依赖包 模型下载生成视频官网的视频生成例子简单描述场景视频生成示例详细描述场景视频生成示例 最近通义万相开源了其视频生成模型。模型有两个版本&#xff0c;一个是1.3B的&#xff0c;一…

最新扣子(Coze)案例教程:小红书爆款书单推荐视频工作流!3分钟10个爆款视频,文学赛道书籍推荐视频日更必备工具,完全免费教程

大家好&#xff0c;我是斜杠君。 最近&#xff0c;星球群里有做小红书文学赛道的博主咨询&#xff0c;每天都在为制作书单的视频找素材、配背景、配音效等&#xff0c;产出量很低。想看看是否可以通过扣子工作流的方式&#xff0c;只要定制好一个工作流的流程&#xff0c;就可…