GoAhead 是輕量、開源、經過大廠(西門子、霍尼韋爾、惠普)驗證的嵌入式 Web 伺服器。本文說明其核心需求、動態頁面技術(ASP/GoForms),並以「動態顯示系統行程」為例完整實作。
| 引擎 | 用途 | 綁定方式 |
|---|---|---|
| ASP 程序 | 產生動態顯示內容(如系統資訊) | websAspDefine("TagName", C_Function) |
| GoForms 程序 | 處理使用者輸入、修改設定、控制裝置 | websFormDefine("FormName", C_Function) |
<html><body>
<h2>系統行程資訊</h2>
<% UpdateProcInfo(); %> <!-- ASP 標籤,執行時會被 C 函數取代 -->
</body></html>
/* ui.c */
#include "webs.h"
void UpdateProcInfo(webs_t wp, char_t *path, char_t *query)
{
// 取得行程清單(平台相關 API)
PROC_INFO *procs = GetProcessList();
// 輸出 HTML 表格
websWrite(wp, T("PID Name CPU% "));
for (int i=0; procs[i].pid; i++) {
websWrite(wp, T("%d %s %.1f "),
procs[i].pid, procs[i].name, procs[i].cpu);
}
websWrite(wp, T("
"));
FreeProcessList(procs);
}
/* main.c */
#include "webs.h"
extern void UpdateProcInfo(webs_t, char_t*, char_t*);
int initWebs()
{
// ... 其他初始化 ...
websAspDefine(T("UpdateProcInfo"), UpdateProcInfo);
return 0;
}
表單送出時呼叫對應 C 函數,可執行重啟服務、修改 IP、更新韌體等動作,回傳 JSON 或重導頁面。
webcomp 編譯為 C 陣列,連結進韌體,免除檔案系統。WEBS_SSL 編譯選項支援 HTTPS。WEBS_MAX_REQUEST、WEBS_MAX_URI 緩衝區大小。