使用lighttpd和開發板進行交互

文章目錄

    • 🧠 一、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.pswp.cn/diannao/85419.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85419.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85419.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Apache IoTDB V2.0.3 發布|新增元數據導入導出腳本適配表模型功能

Release Announcement Version 2.0.3 Apache IoTDB V2.0.3 已經發布&#xff01; V2.0.3 作為樹表雙模型正式版本&#xff0c;主要新增元數據導入導出腳本適配表模型、Spark 生態集成&#xff08;表模型&#xff09;、AINode 返回結果新增時間戳&#xff0c;表模型新增部分聚…

車輛檢測算法在爆炸事故應急響應中的優化路徑

視覺分析賦能車輛管控&#xff1a;以山東應急場景為例 背景&#xff1a;應急場景下的車輛管控痛點 近期山東多起爆炸事故暴露了應急響應中的車輛管理短板&#xff1a;消防車、救護車因違停車輛堵塞通道&#xff0c;違規車輛闖入事故核心區&#xff0c;傳統監控系統依賴人工識別…

∑ 1/n 調和級數 是 發散的

為什么 ∑ 1 u \sum \frac{1}{u} ∑u1?&#xff08;即 ∑ 1 n \sum \frac{1}{n} ∑n1?&#xff0c;通常稱為調和級數&#xff09;是發散的&#xff1f; ? 一、首先明確你問的是這個級數&#xff1a; ∑ n 1 ∞ 1 n \sum_{n1}^{\infty} \frac{1}{n} n1∑∞?n1? 這個級數…

Android第十二次面試-多線程和字符串算法總結

多線程的創建與常見使用方法 ?一、多線程創建方式? ?1. 繼承Thread類? class MyThread extends Thread {Overridepublic void run() {// 線程執行邏輯System.out.println(Thread.currentThread().getName() " is running");} }// 使用 MyThread thread new …

大模型調用數據庫表實踐:基于自然語言的SQL生成與數據查詢系統

# 大模型調用數據庫表實踐&#xff1a;基于自然語言的SQL生成與數據查詢系統 ## 一、背景與目標 在企業數據管理場景中&#xff0c;非技術人員&#xff08;如業務人員、管理人員&#xff09;常常需要通過數據庫查詢獲取關鍵信息&#xff0c;但直接編寫SQL語句存在技術門檻。傳…

28 C 語言作用域詳解:作用域特性(全局、局部、塊級)、應用場景、注意事項

1 作用域簡介 作用域定義了代碼中標識符&#xff08;如變量、常量、數組、函數等&#xff09;的可見性與可訪問范圍&#xff0c;即標識符在程序的哪些位置能夠被引用或訪問。在 C 語言中&#xff0c;作用域主要分為三類&#xff1a; 全局作用域局部作用域塊級作用域 需注意&am…

Tomcat運行比較卡頓進行參數調優

在Tomcat conf/catalina.bat或catalina.sh中 的最上面增加參數 1. 初步調整參數&#xff08;緩解問題&#xff09; set JAVA_OPTS -Xms6g -Xmx6g -Xmn3g # 增大新生代&#xff0c;減少對象過早晉升到老年代 -XX:MetaspaceSize256m -XX:MaxMetaspaceS…

WSL2 安裝與Docker安裝

注意&#xff1a;如沒有科學上網請勿嘗試&#xff0c;無法判斷是否會因網絡錯誤導致的安裝失敗&#xff01;&#xff01;&#xff01; WSL2&#xff08;Windows Subsystem for Linux 2&#xff09; 功能簡介&#xff1a; WSL2 是微軟提供的在 Windows 上運行完整 Linux 內核的…

Redis的安裝與使用

網址&#xff1a;Spring Data Redis 安裝包&#xff1a;Releases tporadowski/redis GitHub 解壓后 在安裝目錄中打開cmd 打開服務&#xff08;注意&#xff1a;每次客戶端連接都有先打開服務&#xff01;&#xff01;&#xff01;&#xff09; 按ctrlC退出服務 客戶端連接…

springboot-響應接收與ioc容器控制反轉、Di依賴注入

1.想將服務器中的數據返回給客戶端&#xff0c;需要在controller類上加注解&#xff1a;ResponseBody; 這個注解其實在前面已經使用過&#xff0c;RestController其實就包含兩個注解&#xff1a; Controller ResponseBody 返回值如果是實體對象/集合&#xff0c;將會轉換為j…

將材質球中的紋理屬性對應的貼圖保存至本地

通過Texture2D的EncodeToPNG方法將紋理轉為圖片形式 material.GetTexture方法通過屬性名獲取紋理貼圖 material.SetTexture方法通過屬性名設置紋理貼圖 屬性名可在shader代碼中查看 using UnityEngine; using System.IO;public class TextureSaver : MonoBehaviour {public…

MySQL半同步復制配置和參數詳解

目錄 1 成功配置主從復制 2 加載插件 3 半同步復制監控 4 半同步復制參數 1 成功配置主從復制 操作步驟參考&#xff1a;https://blog.csdn.net/zyb378747350/article/details/148309545 2 加載插件 #主庫上 MySQL 8.0.26 之前版本: mysql>INSTALL PLUGIN rpl_semi_syn…

【筆記】Windows 成功部署 Suna 開源的通用人工智能代理項目部署日志

#工作記錄 本地部署運行截圖 kortix-ai/suna&#xff1a; Suna - 開源通用 AI 代理 項目概述 Suna 是一個完全開源的 AI 助手&#xff0c;通過自然對話幫助用戶輕松完成研究、數據分析等日常任務。它結合了強大的功能和直觀的界面&#xff0c;能夠理解用戶需求并提供結果。其強…

PCB制作入門

文章目錄 1 嘉立創使用旋轉 2元器件選擇MP2315SLM7815與LM7915 1 嘉立創使用 旋轉 空格旋轉 2元器件選擇 MP2315S MP2315S 是一款內置功率 MOSFET 的高效率同步整流降壓開關變換器。 其輸入電壓范圍為 4.5V 至 24V &#xff0c;能實現 3A 連續輸出電流&#xff0c;負載與…

2025——》NumPy中的np.logspace使用/在什么場景下適合使用np.logspace?NumPy中的np.logspace用法詳解

1.NumPy中的np.logspace使用: 在 NumPy 中,np.logspace函數用于生成對數尺度上等間距分布的數值序列,適用于科學計算、數據可視化等需要對數間隔數據的場景。以下是其核心用法和關鍵細節: 一、基礎語法與參數解析: numpy.logspace(start, stop, num=50, endpoint=True, ba…

Java實現中文姓名轉拼音生成用戶信息并寫入文件

中文姓名轉拼音 Java實現中文姓名轉拼音生成用戶信息并寫入文件&#xff08;shili域名版&#xff09;一、項目背景與功能簡介二、技術棧與核心組件2.1 主要技術2.2 功能模塊 三、核心代碼解析3.1 主函數邏輯&#xff08;流程控制&#xff09;3.2 拼音轉換模塊&#xff08;核心功…

Google car key:安全、便捷的汽車解鎖新選擇

有了兼容的汽車和 Android 手機&#xff0c;Google car key可讓您將Android 手機用作車鑰匙。您可以通過兼容的 Android 手機鎖定、解鎖、啟動汽車并執行更多功能。但是&#xff0c;Google car key安全嗎&#xff1f;它是如何工作的&#xff1f;如果我的手機電池沒電了怎么辦&a…

如何輕松將 iPhone 備份到外部硬盤

當您的iPhone和電腦上的存儲空間有限時&#xff0c;您可能希望將iPhone備份到外部硬盤上&#xff0c;這樣可以快速釋放iPhone上的存儲空間&#xff0c;而不占用電腦上的空間&#xff0c;并為您的數據提供額外的安全性。此外&#xff0c;我們還提供 4 種有效的解決方案&#xff…

AI煉丹日志-22 - MCP 自動操作 Figma+Cursor 自動設計原型

MCP 基本介紹 官方地址&#xff1a; https://modelcontextprotocol.io/introduction “MCP 是一種開放協議&#xff0c;旨在標準化應用程序向大型語言模型&#xff08;LLM&#xff09;提供上下文的方式。可以把 MCP 想象成 AI 應用程序的 USB-C 接口。就像 USB-C 提供了一種…

機器學習-線性回歸基礎

一、什么是回歸 依據輸入x寫出一個目標值y的計算方程&#xff0c;求回歸系數的過程就叫回歸。簡言之&#xff1a;根據題意列出方程&#xff0c;求出系數的過程就叫做回歸。 回歸的目的是預測數值型的目標值y&#xff0c;分類的目的預測標稱型的目標值y。 二、線性回歸 2.1線性…