哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LuatOS Air780EPM 開(kāi)發(fā)板 HTTP 教程:原理講解與項(xiàng)目實(shí)操!

合宙LuatOS ? 來(lái)源:合宙LuatOS ? 作者:合宙LuatOS ? 2025-09-26 20:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本篇教程將系統(tǒng)介紹 LuatOS Air780EPM 在 HTTP 通信中的應(yīng)用,從請(qǐng)求機(jī)制到響應(yīng)解析,配合完整代碼演示,讓你輕松實(shí)現(xiàn)設(shè)備端與云端的數(shù)據(jù)交互。

一、HTTP 概述

1.1 什么是 HTTP?

HTTP 全稱為 HyperText Transfer Protocol,中文即“超文本傳輸協(xié)議”。它是一種應(yīng)用層協(xié)議,采用標(biāo)準(zhǔn)的請(qǐng)求-響應(yīng)模型,通常運(yùn)行在 TCP 之上,規(guī)定了客戶端可以向服務(wù)器發(fā)送何種消息以及預(yù)期得到何種響應(yīng),常用于分布式、協(xié)作式和超媒體信息系統(tǒng)。

1.2 什么是 HTTPS?

HTTPS 全稱為 HyperText Transfer Protocol Secure,中文即“超文本傳輸安全協(xié)議”。它并非一種新的協(xié)議,而是在 HTTP 之下插入了一層 SSL/TLS 安全通道,同樣運(yùn)行在 TCP 之上。通過(guò)加密與身份認(rèn)證,HTTPS 確保客戶端與服務(wù)器之間交換的消息不被竊聽(tīng)或篡改,從而為分布式、協(xié)作式和超媒體信息系統(tǒng)提供了保密性、完整性與身份可驗(yàn)證的通信基礎(chǔ)。

1.3 HTTP 的工作原理(請(qǐng)求-響應(yīng)模型)

HTTP 采用請(qǐng)求-響應(yīng)模型:客戶端(如瀏覽器)向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器以狀態(tài)碼和對(duì)應(yīng)資源的表示(如 HTML 字節(jié)流)作出響應(yīng)。

1.3.1 HTTP 請(qǐng)求報(bào)文

wKgZPGjWeRaAbeytAAD8Ukhsz6E238.png

一個(gè)完整的 HTTP 請(qǐng)求包含請(qǐng)求行、請(qǐng)求頭、空行、請(qǐng)求體四部分:

1. Request line(請(qǐng)求行)

Method:請(qǐng)求方式,如GET、POST。

Request-URL:需要訪問(wèn)的目標(biāo)路徑,比如/index.html。

HTTP-Version:HTTP 協(xié)議版本號(hào),比如HTTP/1.1。

2. Header Lines(請(qǐng)求頭)

由鍵值對(duì)組成,每行一對(duì)。請(qǐng)求頭包含關(guān)于客戶端環(huán)境和請(qǐng)求正文的重要信息。常見(jiàn)的請(qǐng)求頭有:

Host:指定請(qǐng)求的服務(wù)器的域名和端口號(hào)(HTTP/1.1 必需字段)。

User-Agent:包含發(fā)起請(qǐng)求的應(yīng)用程序信息(瀏覽器類型、操作系統(tǒng)等)。

Accept:告知服務(wù)器客戶端能夠處理哪些類型的媒體資源(如text/html, application/json)。

Content-Type:(用于有 Body 的請(qǐng)求)請(qǐng)求體的媒體類型(如application/json,application/x-www-form-urlencoded)。

Content-Length:(用于有 Body 的請(qǐng)求)請(qǐng)求體的長(zhǎng)度(字節(jié))。

3. Blank line(空行)

就是一個(gè)空行,用來(lái)分隔頭部和正文,告訴服務(wù)器:“頭部結(jié)束,下面是正文了”。

4. Entity Body(請(qǐng)求體)

可選部分,主要用于POST、PUT等需要向服務(wù)器發(fā)送數(shù)據(jù)的請(qǐng)求。

內(nèi)容格式由Content-Type頭指定。

常見(jiàn)內(nèi)容:表單數(shù)據(jù)(user=admin&pass=123)、JSON 字符串({"user":"admin"})、文件數(shù)據(jù)等。

請(qǐng)求報(bào)文示例如下:

wKgZO2jWeZWAWPUpAAfIhi3Yiho619.png


1.3.2 HTTP 響應(yīng)報(bào)文

wKgZO2jWeb2ANnVMAAE9uDyxV5E717.png

一個(gè)完整的 HTTP 響應(yīng)報(bào)文與請(qǐng)求報(bào)文幾乎一一對(duì)應(yīng),也是四部分:

1. Status Line(狀態(tài)行)

HTTP-Version:與請(qǐng)求消息中的版本相匹配,如HTTP/1.1。

Status Code:三位數(shù)字,標(biāo)識(shí)請(qǐng)求的處理結(jié)果,如200、404。

Reason-Phrase:狀態(tài)碼的簡(jiǎn)短文字描述,如OK、Not Found。

2. Header Lines(響應(yīng)頭)

一樣每行是一個(gè)“鍵值對(duì)”,響應(yīng)頭包含關(guān)于響應(yīng)的附加信息。常見(jiàn)的響應(yīng)頭有:

Server:包含處理請(qǐng)求的服務(wù)器軟件信息。

Date:響應(yīng)生成的日期和時(shí)間。

Content-Type:響應(yīng)體的媒體類型(如text/html; charset=UTF-8)。

Content-Length:響應(yīng)體的長(zhǎng)度(字節(jié))。

Content-Encoding:響應(yīng)體使用的編碼(如gzip),用于壓縮。

Cache-Control:指示響應(yīng)內(nèi)容應(yīng)如何被緩存。

3. Blank Line(空行)

響應(yīng)頭和響應(yīng)體之間的分隔符,表示響應(yīng)頭的結(jié)束。

4. Response Body(響應(yīng)體)

可選部分,包含服務(wù)器返回的實(shí)際資源內(nèi)容。

內(nèi)容格式由Content-Type頭指定。

常見(jiàn)內(nèi)容:HTML 文檔、JSON 數(shù)據(jù)、圖片、CSS、JavaScript 文件等。

響應(yīng)報(bào)文示例如下:

wKgZPGjWeeiAe4xgAAKBz7c_LWc194.png

1.4 HTTP 請(qǐng)求方法

HTTP 客戶端發(fā)出請(qǐng)求,告知服務(wù)端需要執(zhí)行不同類型的請(qǐng)求命令,這些命令被稱為 HTTP 方法。

1.4.1 常見(jiàn) HTTP 請(qǐng)求方法

下表展示的是常見(jiàn)的 HTTP 請(qǐng)求方法:

wKgZO2jWeheAVWUGAAEf6um3zMk650.png

1.4.2 各版本定義的 HTTP 請(qǐng)求方法

HTTP 標(biāo)準(zhǔn)目前有HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3四個(gè)版本,介紹如下:

HTTP/1.0

HTTP/1.0定義了以下三種請(qǐng)求方法:

GET:請(qǐng)求指定的資源。

POST:提交數(shù)據(jù)以處理請(qǐng)求。

HEAD:請(qǐng)求資源的響應(yīng)頭信息。

HTTP/1.1

HTTP/1.1引入了更多的請(qǐng)求方法:

GET:請(qǐng)求指定的資源。

POST:提交數(shù)據(jù)以處理請(qǐng)求。

HEAD:請(qǐng)求資源的響應(yīng)頭信息。

PUT:上傳文件或者更新資源。

DELETE:刪除指定的資源。

OPTIONS:請(qǐng)求獲取服務(wù)器支持的請(qǐng)求方法。

TRACE:回顯服務(wù)器收到的請(qǐng)求,主要用于診斷。

CONNECT:建立一個(gè)隧道用于代理服務(wù)器的通信,通常用于 HTTPS。

HTTP/2

HTTP/2基本上沿用了HTTP/1.1的方法,但對(duì)協(xié)議進(jìn)行了優(yōu)化,提高了傳輸效率和速度。HTTP/2也引入了新的特性,如多路復(fù)用、頭部壓縮和服務(wù)器推送等。

HTTP/3

HTTP/3基于 QUIC 協(xié)議實(shí)現(xiàn),繼續(xù)使用HTTP/2的方法。HTTP/3主要改進(jìn)了傳輸層,使用 UDP 代替 TCP 以提高傳輸速度和可靠性。

1.5 HTTP 狀態(tài)碼

HTTP 狀態(tài)碼由三個(gè)十進(jìn)制數(shù)字組成,第一個(gè)十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,響應(yīng)分為五類:

wKgZO2jWek6ADyZoAABhMDUeAsw864.png

二、http 與 httpplus 庫(kù)的介紹

注意: LuatOS 僅支持HTTP/1.0和HTTP/1.1。

HTTP 在如下的場(chǎng)景,開(kāi)發(fā)成本是最低的:

1. 終端和云端交換文件,不用開(kāi)發(fā)復(fù)雜的分包組包協(xié)議;

2. 終端從云端下載各種參數(shù),或者終端向云端提交各種參數(shù), 不用設(shè)計(jì)報(bào)文協(xié)議,用 http 的參數(shù)即可,非常方便。

LuatOS 提供了 http 核心庫(kù) 和 httpplus 擴(kuò)展庫(kù) 實(shí)現(xiàn)了 http 客戶端。

http 核心庫(kù) 和 httpplus 擴(kuò)展庫(kù) 的區(qū)別如下:

wKgZO2jWeoOAHq2JAACqzmJ11wM827.png

三、演示功能概述

在使用示例代碼測(cè)試時(shí),如果遇到測(cè)試域名請(qǐng)求不成功的情況,可以向工作人員進(jìn)行反饋。

1、http_app:使用 http 核心庫(kù),演示以下幾種應(yīng)用場(chǎng)景的使用方式

普通的 http get 請(qǐng)求功能演示;

http get 下載壓縮數(shù)據(jù)的功能演示;

http get 下載數(shù)據(jù)保存到文件中的功能演示;

http post 提交表單數(shù)據(jù)功能演示;

http post 提交 json 數(shù)據(jù)功能演示;

http post 提交純文本數(shù)據(jù)功能演示;

http post 提交 xml 數(shù)據(jù)功能演示;

http post 提交原始二進(jìn)制數(shù)據(jù)功能演示;

http post 文件上傳功能演示;

2、httpplus_app:使用 httpplus 擴(kuò)展庫(kù),演示以下幾種應(yīng)用場(chǎng)景的使用方式

普通的 http get 請(qǐng)求功能演示;

http get 下載壓縮數(shù)據(jù)的功能演示;

http post 提交表單數(shù)據(jù)功能演示;

http post 提交 json 數(shù)據(jù)功能演示;

http post 提交純文本數(shù)據(jù)功能演示;

http post 提交 xml 數(shù)據(jù)功能演示;

http post 提交原始二進(jìn)制數(shù)據(jù)功能演示;

http post 文件上傳功能演示;

3、netdrv_device:配置連接外網(wǎng)使用的網(wǎng)卡,目前支持以下三種選擇(三選一)

(1) netdrv_4g:4G 網(wǎng)卡

(2) netdrv_eth_spi:通過(guò) SPI 外掛 CH390H 芯片的以太網(wǎng)

(3) netdrv_multiple:支持以上兩種網(wǎng)卡,可以配置兩種網(wǎng)卡的優(yōu)先級(jí)

四、演示硬件環(huán)境

wKgZO2jWeumAJpj4ABi45Gm2Qrg611.png

1、Air780EPM V1.3 版本開(kāi)發(fā)板一塊 + 可上網(wǎng)的 sim 卡一張 +4g 天線一根 + 網(wǎng)線一根:

sim 卡插入開(kāi)發(fā)板的 sim 卡槽

天線裝到開(kāi)發(fā)板上

網(wǎng)線一端插入開(kāi)發(fā)板網(wǎng)口,另外一端連接可以上外網(wǎng)的路由器網(wǎng)口

2、TYPE-C USB 數(shù)據(jù)線一根 + USB 轉(zhuǎn)串口數(shù)據(jù)線一根,Air780EPM V1.3 版本開(kāi)發(fā)板和數(shù)據(jù)線的硬件接線方式為:

Air780EPM V1.3 版本開(kāi)發(fā)板通過(guò) TYPE-C USB 口供電;(外部供電/USB 供電 撥動(dòng)開(kāi)關(guān) 撥到 USB 供電一端)

TYPE-C USB 數(shù)據(jù)線直接插到核心板的 TYPE-C USB 座子,另外一端連接電腦 USB 口;

五、演示軟件環(huán)境

5.1 軟件環(huán)境

1. 燒錄工具:Luatools 下載調(diào)試工具

2. 內(nèi)核固件:Air780EPM V2012 版本固件(理論上,2025 年 8 月 10 日之后發(fā)布的固件都可以)

3. 腳本文件:Air780EPM HTTP 腳本文件

4. LuatOS 運(yùn)行所需要的 lib 文件:使用 Luatools 燒錄時(shí),勾選 添加默認(rèn) lib 選項(xiàng),使用默認(rèn) lib 腳本文件。

準(zhǔn)備好軟件環(huán)境之后,接下來(lái)查看Air780EPM 產(chǎn)品手冊(cè)中“Air780EPM 開(kāi)發(fā)板使用手冊(cè) -> 使用說(shuō)明”,將本篇文章中演示使用的項(xiàng)目文件燒錄到 Air780EPM 開(kāi)發(fā)板中。

5.2 API 介紹

sys 庫(kù):https://docs.openluat.com/osapi/core/sys/

http 庫(kù):https://docs.openluat.com/osapi/core/http/

httpplu 庫(kù):https://docs.openluat.com/osapi/ext/httpplus/

六、程序結(jié)構(gòu)

wKgZPGjWe16AA1gFAAFHb5ZYLEM265.png

6.1 文件說(shuō)明

main.lua:主程序入口文件,負(fù)責(zé)初始化系統(tǒng)、啟動(dòng)網(wǎng)絡(luò)驅(qū)動(dòng)和 HTTP 演示任務(wù)。

netdrv_device.lua:網(wǎng)絡(luò)設(shè)備配置文件。

http_app.lua:http 核心庫(kù)的演示文件,包含 13 個(gè)示例場(chǎng)景。

httpplus_app.lua:httpplus 擴(kuò)展庫(kù)的演示文件,包含 9 個(gè)示例場(chǎng)景。

logo.jpg:供上傳、下載測(cè)試使用的素材文件。

netdrv/:網(wǎng)絡(luò)驅(qū)動(dòng)相關(guān)文件。

netdrv_4g.lua:4G 網(wǎng)絡(luò)驅(qū)動(dòng)。

netdrv_eth_spi.lua:SPI 以太網(wǎng)驅(qū)動(dòng)。

netdrv_multiple.lua:多網(wǎng)絡(luò)驅(qū)動(dòng)管理。

七、核心模塊詳解

7.1 主程序 (main.lua)

主程序文件main.lua是整個(gè)項(xiàng)目的入口點(diǎn)。它負(fù)責(zé)初始化系統(tǒng)環(huán)境。

7.1.1 初始化流程

1. 項(xiàng)目和版本定義

定義PROJECT和VERSION變量。

2. 日志記錄

使用log.info``("main", PROJECT, VERSION)在日志中打印項(xiàng)目名和版本號(hào)。

3. 看門狗初始化(如果支持):

配置并啟動(dòng)硬件看門狗,防止程序死循環(huán)卡死。

4. 加載功能模塊

加載網(wǎng)絡(luò)驅(qū)動(dòng)設(shè)備模塊(netdrv_device)。

加載 HTTP 核心庫(kù)示例模塊(http_app.lua)。

加載 HTTPPLUS 擴(kuò)展庫(kù)示例模塊(httpplus_app.lua)。

5. 啟動(dòng)任務(wù)調(diào)度器

調(diào)用sys.run()啟動(dòng) LuatOS 的任務(wù)調(diào)度器,開(kāi)始執(zhí)行各個(gè)任務(wù)。

wKgZO2jWe6KAAcSZABGa__ZJoGc298.png

7.2 網(wǎng)絡(luò)驅(qū)動(dòng) (netdrv/)

網(wǎng)絡(luò)驅(qū)動(dòng)模塊負(fù)責(zé)初始化和管理不同的網(wǎng)絡(luò)連接方式,如 4G 和以太網(wǎng)。

7.2.1 4G 網(wǎng)絡(luò)驅(qū)動(dòng) (netdrv_4g.lua)

監(jiān)聽(tīng)I(yíng)P_READY和IP_LOSE消息,監(jiān)控網(wǎng)絡(luò)連接狀態(tài)。

設(shè)置默認(rèn)網(wǎng)卡為socket.LWIP_GP。

wKgZO2jWe9WAKQg4AAcNr4ruy-c957.png

7.2.2 以太網(wǎng)網(wǎng)絡(luò)驅(qū)動(dòng)(netdrv_eth_spi.lua)

通過(guò) SPI 接口外掛 CH390H 芯片實(shí)現(xiàn)以太網(wǎng)。

通過(guò)控制 GPIO20 引腳使能芯片供電。

配置 SPI0 接口參數(shù),用于與 CH390H 芯片通信。

通過(guò)netdrv.setup函數(shù)配置以太網(wǎng)卡,并開(kāi)啟 DHCP 動(dòng)態(tài)獲取 IP 地址。

設(shè)置默認(rèn)網(wǎng)卡為socket.LWIP_ETH。

wKgZPGjWfAqANx7IABCqd9e3HbU402.png

7.2.3 多網(wǎng)絡(luò)驅(qū)動(dòng)管理 (netdrv_multiple.lua)

管理多個(gè)網(wǎng)絡(luò)驅(qū)動(dòng)實(shí)例,根據(jù)配置選擇合適的網(wǎng)絡(luò)連接方式。

通過(guò)exnetif.set_priority_order函數(shù)配置多網(wǎng)卡的控制參數(shù)以及優(yōu)先級(jí)。

通過(guò)exnetif.notify_status函數(shù)設(shè)置網(wǎng)卡狀態(tài)變化通知回調(diào)函數(shù)。

wKgZO2jWfFOAbY-DABNTeIPE4OQ160.png

7.3 HTTP 庫(kù)演示模塊(http_app.lua)

http_app.lua是 LuatOS 中基于 http 核心庫(kù) 所開(kāi)發(fā)的 HTTP 應(yīng)用功能模塊。該模塊通過(guò)調(diào)用http.request接口演示了 13 種 HTTP 請(qǐng)求場(chǎng)景,這 13 種演示功能如下。

7.3.1 下載回調(diào)函數(shù)

wKgZO2jWfJuACNYUAAHqTAobHDg054.png

該函數(shù)在下載數(shù)據(jù)過(guò)程中被調(diào)用,用于實(shí)時(shí)監(jiān)控下載進(jìn)度。參數(shù)包括:

content_len:數(shù)據(jù)總長(zhǎng)度。

body_len:已下載的數(shù)據(jù)長(zhǎng)度。

userdata:用戶自定義參數(shù)。

7.3.2 HTTP GET 請(qǐng)求功能

1. 普通 GET 請(qǐng)求

http_app_get()函數(shù)演示了三種不同的 GET 請(qǐng)求場(chǎng)景:

1. 基本的 HTTPS GET 請(qǐng)求。

2. 設(shè)置超時(shí)時(shí)間和回調(diào)函數(shù)的 HTTPS GET 請(qǐng)求。

3. 設(shè)置短超時(shí)和回調(diào)函數(shù)的 HTTP GET 請(qǐng)求。

wKgZO2jWfMiAbzRkAAvloVBfVYo985.png

2. 下載壓縮數(shù)據(jù)

http_app_get_gzip()函數(shù)演示了如何處理壓縮格式的 HTTP 響應(yīng):

發(fā)送 GET 請(qǐng)求獲取壓縮的天氣數(shù)據(jù)。

對(duì)響應(yīng)內(nèi)容進(jìn)行解壓縮處理。

解析解壓后的 JSON 數(shù)據(jù)并提取信息。

wKgZPGjWfPuAJWIPAAdrt5bAB2I927.png

3. 下載數(shù)據(jù)到文件

http_app_get_file()函數(shù)演示了如何將 HTTP 響應(yīng)直接保存到文件:

創(chuàng)建下載目錄。

發(fā)送 GET 請(qǐng)求并設(shè)置 dst 參數(shù)指定保存路徑。

驗(yàn)證下載文件的完整性。

按需刪除臨時(shí)文件。

wKgZPGjWfS2ALRYDABUzfRcvTyA503.png

7.3.3 HTTP POST 請(qǐng)求功能

1. 提交表單數(shù)據(jù)

http_app_post_form()函數(shù)演示了如何發(fā)送表單格式的 POST 請(qǐng)求:

構(gòu)造表單數(shù)據(jù)并進(jìn)行 URL 編碼。

設(shè)置正確的Content-Type(application/x-www-form-urlencoded)。

發(fā)送請(qǐng)求并處理響應(yīng)。

wKgZPGjWfV2AXfl7AAYkbS4pAxU600.png

2. 提交 JSON 數(shù)據(jù)

http_app_post_json()函數(shù)演示了如何發(fā)送 JSON 格式的 POST 請(qǐng)求:

使用json.encode()將 Lua 表轉(zhuǎn)換為 JSON 字符串。

設(shè)置正確的Content-Type(application/json)。

發(fā)送請(qǐng)求并處理響應(yīng)。

wKgZO2jWfYyAeFhEAAS0E_InFZ4949.png

3. 提交純文本數(shù)據(jù)

http_app_post_text()函數(shù)演示了如何發(fā)送純文本數(shù)據(jù)格式的 POST 請(qǐng)求:

設(shè)置正確的Content-Type(text/plain)。

發(fā)送請(qǐng)求并處理響應(yīng)。

wKgZPGjWfcSAY0yGAAQIDgvTJO0197.png

4. 提交 XML 數(shù)據(jù)

http_app_post_xml()函數(shù)演示了如何發(fā)送 XML 格式的 POST 請(qǐng)求:

使用 Lua 的長(zhǎng)字符串語(yǔ)法[=[...]=]定義 XML 內(nèi)容。

設(shè)置正確的Content-Type(text/xml)。

發(fā)送請(qǐng)求并處理響應(yīng)。

wKgZPGjWfe6AJUPgAATyqLvH-W0757.png

5. 提交原始二進(jìn)制數(shù)據(jù)

http_app_post_binary()函數(shù)演示了如何發(fā)送原始二進(jìn)制格式的 POST 情況:

使用io.readFile讀取 JPG 圖片文件。

設(shè)置正確的Content-Type(application/octet-stream)。

發(fā)送請(qǐng)求并處理響應(yīng)。

上傳成功后,可以通過(guò)指定網(wǎng)址查看上傳的圖片。

wKgZPGjWfiqAWUL9AAUZ5JKpXbc163.png

7.3.4 文件上傳功能

http_app_post_file()函數(shù)演示了如何通過(guò) HTTP 上傳文件:

調(diào)用輔助函數(shù)post_multipart_form_data()構(gòu)造multipart/form-data格式請(qǐng)求。

支持單文件、多文件、單文本或多文本上傳。

支持文本字段和文件字段混合上傳。

wKgZO2jWfluAbpFcABA0yWYsass581.png

7.3.5 任務(wù)管理機(jī)制

1. 主任務(wù)函數(shù)

該函數(shù)是模塊的核心控制邏輯,實(shí)現(xiàn)了:

網(wǎng)絡(luò)連接等待機(jī)制:通過(guò)循環(huán)檢測(cè)socket.adapter(socket.dft())和sys.waitUntil("IP_READY", 1000)等待網(wǎng)絡(luò)就緒。

功能調(diào)用序列:按順序調(diào)用所有 HTTP 功能演示函數(shù)。

循環(huán)執(zhí)行策略:每次功能演示完成后等待 60 秒,然后再次開(kāi)始循環(huán)。

wKgZO2jWfuGAePqMAAjq1TtWkBI330.png

2. 任務(wù)啟動(dòng)

通過(guò)sys.taskInit函數(shù)創(chuàng)建并啟動(dòng)一個(gè)新的任務(wù)來(lái)運(yùn)行httpplus_app_task_func函數(shù),使整個(gè)模塊的功能在后臺(tái)持續(xù)運(yùn)行。

wKgZPGjWfwCAUxMoAAC1Zr5hPaA918.png

7.4 HTTPPLUS 庫(kù)演示模塊(httpplus_app.lua)

httpplus_app.lua是 LuatOS 中基于httpplus擴(kuò)展庫(kù)所開(kāi)發(fā)的 HTTP 應(yīng)用功能模塊。該模塊通過(guò)調(diào)用httpplus.request接口演示了 9 種 HTTP 請(qǐng)求場(chǎng)景,這 9 種演示功能如下。

7.4.1 HTTP GET 請(qǐng)求功能

1. 普通 GET 請(qǐng)求

httpplus_app_get()函數(shù)演示了兩種不同的 GET 請(qǐng)求場(chǎng)景:

1. 基本的 HTTPS GET 請(qǐng)求。

2. 設(shè)置超時(shí)時(shí)間的 HTTP GET 請(qǐng)求。

wKgZO2jWfzSAE9JsAAc4pd_U88k901.png

2. 下載壓縮數(shù)據(jù)

httpplus_app_get_gzip()函數(shù)演示了如何處理壓縮格式的 HTTP 響應(yīng):

發(fā)送 GET 請(qǐng)求獲取壓縮的天氣數(shù)據(jù)。

對(duì)響應(yīng)內(nèi)容進(jìn)行解壓縮處理。

解析解壓后的 JSON 數(shù)據(jù)并提取信息。

wKgZPGjWf2OAegwkAAiXvaorzCY347.png

7.4.2 HTTP POST 請(qǐng)求功能

1. 提交表單數(shù)據(jù)

httpplus_app_post_form()函數(shù)演示了如何發(fā)送表單格式的 POST 請(qǐng)求:

構(gòu)造表單數(shù)據(jù)并進(jìn)行 URL 編碼。

存在forms參數(shù)并且不存在 files 參數(shù),系統(tǒng)自動(dòng)強(qiáng)制以application/x-www-form-urlencoded形式上傳數(shù)據(jù)。

發(fā)送請(qǐng)求并處理響應(yīng)。

wKgZPGjWf5CAS8aUAARoKl-YvJo546.png


2. 提交 JSON 數(shù)據(jù)

httpplus_app_post_json()函數(shù)演示了如何發(fā)送 JSON 格式的 POST 請(qǐng)求:

使用json.encode()將 Lua 表轉(zhuǎn)換為 JSON 字符串。

設(shè)置正確的Content-Type(application/json)。

發(fā)送請(qǐng)求并處理響應(yīng)。

wKgZPGjWf7aAP_PBAAXOpZRKiBQ599.png

3. 提交純文本數(shù)據(jù)

httpplus_app_post_text()函數(shù)演示了如何發(fā)送純文本數(shù)據(jù)格式的 POST 請(qǐng)求:

設(shè)置正確的Content-Type(text/plain)。

發(fā)送請(qǐng)求并處理響應(yīng)。

wKgZPGjWf-CAavDnAAU8beKf6to138.png

4. 提交 XML 數(shù)據(jù)

httpplus_app_post_xml()函數(shù)演示了如何發(fā)送 XML 格式的 POST 請(qǐng)求:

使用 Lua 的長(zhǎng)字符串語(yǔ)法[=[...]=]定義 XML 內(nèi)容。

設(shè)置正確的Content-Type(text/xml)。

發(fā)送請(qǐng)求并處理響應(yīng)。

wKgZO2jWgD-AG5dEAAYjKyu1o6g349.png

5. 提交原始二進(jìn)制數(shù)據(jù)

http_app_post_binary()函數(shù)演示了如何發(fā)送原始二進(jìn)制格式的 POST 情況:

使用io.readFile讀取 JPG 圖片文件。

設(shè)置正確的Content-Type(application/octet-stream)。

發(fā)送請(qǐng)求并處理響應(yīng)。

上傳成功后,可以通過(guò)指定網(wǎng)址查看上傳的圖片。

wKgZPGjWgGqAHDQyAAZJgVuz0Ss629.png

7.4.3 文件上傳功能

http_app_post_file()函數(shù)演示了如何通過(guò) HTTP 上傳文件:

使用files參數(shù)上傳文件。

系統(tǒng)會(huì)自動(dòng)將請(qǐng)求設(shè)置為POST方法,并以multipart/form-data格式發(fā)送數(shù)據(jù)。

支持單文件、多文件、單文本或多文本上傳。

支持文本字段和文件字段混合上傳。

wKgZPGjWgJ6ADC44AAYRH6jpu8A757.png

7.4.4 任務(wù)管理機(jī)制

1. 主任務(wù)函數(shù)

該函數(shù)是模塊的核心控制邏輯,實(shí)現(xiàn)了:

網(wǎng)絡(luò)連接等待機(jī)制:通過(guò)循環(huán)檢測(cè)socket.adapter(socket.dft())和sys.waitUntil("IP_READY", 1000)等待網(wǎng)絡(luò)就緒。

功能調(diào)用序列:按順序調(diào)用所有 HTTP 功能演示函數(shù)。

循環(huán)執(zhí)行策略:每次功能演示完成后等待 60 秒,然后再次開(kāi)始循環(huán)。

wKgZPGjWgQKAXYIAAAiVuEzI_cQ349.png


2. 任務(wù)啟動(dòng)

通過(guò)sys.taskInit函數(shù)創(chuàng)建并啟動(dòng)一個(gè)新的任務(wù)來(lái)運(yùn)行httpplus_app_task_func函數(shù),使整個(gè)模塊的功能在后臺(tái)持續(xù)運(yùn)行。

wKgZO2jWgS6AVELeAAC7OEvFc8I627.png

八、演示功能

8.1 不同網(wǎng)卡切換

Air780EXX 模組支持單 4g 網(wǎng)卡,單 spi 以太網(wǎng)卡,多網(wǎng)卡。

切換網(wǎng)卡為 4G 網(wǎng)卡:

在netdrv_device.lua模塊里只打開(kāi)netdrv_4g模塊。netdrv_4g.lua模塊中的代碼不需要修改。

wKgZPGjWgVeAcZW2AALpCGgVQfA205.png

Luatools 工具日志打印

如下圖所示,如出現(xiàn)類似I/user.netdrv_4g.ip_ready_func IP_READY 10.73.217.4 255.255.255.255 0.0.0.0 nil的日志,則表示 4g 網(wǎng)卡連接成功。

wKgZPGjWgXyAXuozAAVV3z1u-NA755.png

切換網(wǎng)卡為以太網(wǎng)卡:

注意:Air780EPM 的以太網(wǎng)卡是通過(guò) SPI 外掛 CH390H 芯片實(shí)現(xiàn)的。

在netdrv_device.lua模塊里只打開(kāi)netdrv_eth_spi模塊。如果是使用開(kāi)發(fā)板,netdrv_eth_spi模塊中的代碼不需要修改。

wKgZPGjWgbaAaLahAAL6ydIcvUM074.png

Luatools 工具日志打?。?/strong>

如出現(xiàn)類似I/user.netdrv_eth_spi.ip_ready_func IP_READY 192.168.71.66 255.255.255.0 192.168.71.1 nil的日志,則表示以太網(wǎng)卡聯(lián)網(wǎng)成功。

wKgZPGjWgd-AHBPNAAWWhLAGP0c916.png

多網(wǎng)卡自動(dòng)切換:

如果需要多網(wǎng)卡,打開(kāi)require "netdrv_multiple",其余注釋掉; 可根據(jù)自己的需求調(diào)整網(wǎng)卡的優(yōu)先級(jí),以下示例設(shè)置為以太網(wǎng)卡是最高優(yōu)先級(jí)。

首先在netdrv_device.lua文件中只打開(kāi)netdrv_multiple模塊。

wKgZPGjWgjaADYiCAALKLpQQ7eQ772.png

默認(rèn)以太網(wǎng)卡進(jìn)行連接

wKgZO2jWgn2ABhdbAAR285QIZoY708.png

拔掉網(wǎng)線后,網(wǎng)絡(luò)切換為 4g 網(wǎng)卡

wKgZPGjWgqKAdXGCAASRHRL9_jM451.png

8.2 HTTP 請(qǐng)求結(jié)果

前面介紹了 HTTP 核心庫(kù)演示模塊中演示了 13 種場(chǎng)景的 HTTP 請(qǐng)求,HTTPPLUS 擴(kuò)展庫(kù)演示模塊中演示了 9 種 HTTP 請(qǐng)求。因此我們燒錄程序成功后,在日志中搜索success 200,程序默認(rèn)每隔 1 分鐘測(cè)試一輪,如果每輪出現(xiàn) 22 次success 200,如以下日志所示,就表示成功,如果不夠 22 次,則說(shuō)明部分域名沒(méi)有請(qǐng)求成功,此時(shí)可以通過(guò)詳細(xì)日志所表示的含義,結(jié)合代碼自行分析。

wKgZO2jWgtaAC5UMAAoRAujOZS8159.pngwKgZO2jWguyAIUT9AAZYNXcN__Q184.png

九、總結(jié)

至此,我們演示了使用不同網(wǎng)卡在 22 種場(chǎng)景下進(jìn)行 HTTP 請(qǐng)求的全過(guò)程,相信聰明的你已經(jīng)完全領(lǐng)悟 HTTP 請(qǐng)求的邏輯了,快來(lái)實(shí)際操作一下吧!

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    538

    瀏覽量

    35533
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6386

    瀏覽量

    120294
  • LuatOS
    +關(guān)注

    關(guān)注

    0

    文章

    168

    瀏覽量

    2740
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    LuatOS選型指南:基于Air780EPM的32/64位性能實(shí)測(cè)分析

    面對(duì)32位與64位LuatOS固件的選擇難題,本文通過(guò)在Air780EPM開(kāi)發(fā)板上的實(shí)際測(cè)試,詳細(xì)解析兩者在整數(shù)處理能力、浮點(diǎn)數(shù)精度以及系統(tǒng)性能方面的差異,結(jié)合應(yīng)用場(chǎng)景給出專業(yè)建議,助力開(kāi)發(fā)
    的頭像 發(fā)表于 02-25 18:05 ?266次閱讀
    <b class='flag-5'>LuatOS</b>選型指南:基于<b class='flag-5'>Air780EPM</b>的32/64位性能實(shí)測(cè)分析

    Air780EPM開(kāi)發(fā)板上的FFT應(yīng)用實(shí)現(xiàn):關(guān)鍵技術(shù)深度剖析

    Air780EPM開(kāi)發(fā)板為硬件平臺(tái),快速傅里葉變換(FFT)的應(yīng)用實(shí)現(xiàn)成為嵌入式信號(hào)處理中的關(guān)鍵環(huán)節(jié)。本文將圍繞該開(kāi)發(fā)板的硬件適配特性、FFT算法在嵌入式環(huán)境中的部署流程,深入解析代碼結(jié)構(gòu)、關(guān)鍵
    的頭像 發(fā)表于 12-30 14:33 ?355次閱讀
    <b class='flag-5'>Air780EPM</b><b class='flag-5'>開(kāi)發(fā)板</b>上的FFT應(yīng)用實(shí)現(xiàn):關(guān)鍵技術(shù)深度剖析

    Air780EPM開(kāi)發(fā)板為例:FFT應(yīng)用示例核心要點(diǎn)全解析

    Air780EPM開(kāi)發(fā)板作為實(shí)踐載體,本文將對(duì)FFT應(yīng)用示例的核心要點(diǎn)展開(kāi)全面解析。從開(kāi)發(fā)板的硬件特性適配、FFT算法的實(shí)現(xiàn)流程,到示例代碼的核心模塊與調(diào)試要點(diǎn),逐一拆解,確保開(kāi)發(fā)
    的頭像 發(fā)表于 12-16 15:28 ?440次閱讀
    以<b class='flag-5'>Air780EPM</b><b class='flag-5'>開(kāi)發(fā)板</b>為例:FFT應(yīng)用示例核心要點(diǎn)全解析

    一文搞懂Air780EPM的NTP通信:LuatOS腳本開(kāi)發(fā)教程

    ?想在Air780EPM上用LuatOS實(shí)現(xiàn)NTP時(shí)間同步?這篇教程將用最通俗的方式講解實(shí)現(xiàn)原理與代碼實(shí)現(xiàn),讓你快速掌握關(guān)鍵技能。 一、NTP通信概述 ? 1.1 NTP 網(wǎng)絡(luò)時(shí)間協(xié)議(英語(yǔ)
    的頭像 發(fā)表于 09-30 18:19 ?2299次閱讀
    一文搞懂<b class='flag-5'>Air780EPM</b>的NTP通信:<b class='flag-5'>LuatOS</b>腳本<b class='flag-5'>開(kāi)發(fā)</b>教程

    Air780EPM嵌入式開(kāi)發(fā)LuatOS下的MQTT通信實(shí)踐

    通過(guò)LuatOS腳本在Air780EPM開(kāi)發(fā)板上實(shí)現(xiàn)MQTT通信,是物聯(lián)網(wǎng)設(shè)備開(kāi)發(fā)中高效且便捷的解決方案。 一、MQTT 協(xié)議詳解 ? 1.1 什么是 MQTT? MQTT(Messa
    的頭像 發(fā)表于 09-30 16:11 ?1969次閱讀
    <b class='flag-5'>Air780EPM</b>嵌入式<b class='flag-5'>開(kāi)發(fā)</b>:<b class='flag-5'>LuatOS</b>下的MQTT通信實(shí)踐

    實(shí)戰(zhàn)Air780EPM:構(gòu)建4G共享網(wǎng)關(guān),服務(wù)WiFi與有線設(shè)備!

    通過(guò)Air780EPM開(kāi)發(fā)板,我們可以輕松實(shí)現(xiàn)4G網(wǎng)絡(luò)作為數(shù)據(jù)出口,為周邊的WiFi設(shè)備和以太網(wǎng)設(shè)備提供互聯(lián)網(wǎng)共享,適用于移動(dòng)辦公、遠(yuǎn)程部署等場(chǎng)景。 一、多網(wǎng)融合概述 ? Air780EPM
    的頭像 發(fā)表于 09-30 16:03 ?1433次閱讀
    實(shí)戰(zhàn)<b class='flag-5'>Air780EPM</b>:構(gòu)建4G共享網(wǎng)關(guān),服務(wù)WiFi與有線設(shè)備!

    Air780EPM開(kāi)發(fā)板NTP對(duì)時(shí)教程:LuatOS腳本開(kāi)發(fā)入門指南

    通過(guò)簡(jiǎn)單的LuatOS腳本,Air780EPM即可實(shí)現(xiàn)NTP時(shí)間同步。本指南從零開(kāi)始,帶你掌握嵌入式設(shè)備聯(lián)網(wǎng)校時(shí)的核心方法。 一、NTP通信概述 1.1 NTP 網(wǎng)絡(luò)時(shí)間協(xié)議(英語(yǔ):Network
    的頭像 發(fā)表于 09-30 16:01 ?1292次閱讀
    <b class='flag-5'>Air780EPM</b><b class='flag-5'>開(kāi)發(fā)板</b>NTP對(duì)時(shí)教程:<b class='flag-5'>LuatOS</b>腳本<b class='flag-5'>開(kāi)發(fā)</b>入門指南

    LuatOS嵌入式開(kāi)發(fā)實(shí)戰(zhàn):Air780EPM與MQTT通信

    ?本教程聚焦于LuatOSAir780EPM開(kāi)發(fā)板上的應(yīng)用,演示如何通過(guò)腳本實(shí)現(xiàn)MQTT協(xié)議通信,助力物聯(lián)網(wǎng)設(shè)備快速聯(lián)網(wǎng)。 一、MQTT 協(xié)議詳解 ? 1.1 什么是 MQTT? MQTT
    的頭像 發(fā)表于 09-29 18:10 ?627次閱讀
    <b class='flag-5'>LuatOS</b>嵌入式<b class='flag-5'>開(kāi)發(fā)</b>實(shí)戰(zhàn):<b class='flag-5'>Air780EPM</b>與MQTT通信

    Air780EPM開(kāi)發(fā)板FTP功能實(shí)戰(zhàn):LuatOS嵌入式開(kāi)發(fā)全解析

    本文深入講解Air780EPM模組在LuatOS環(huán)境下的FTP應(yīng)用開(kāi)發(fā),涵蓋AT指令配置、網(wǎng)絡(luò)連接與文件傳輸流程,助你高效完成嵌入式通信項(xiàng)目
    的頭像 發(fā)表于 09-29 15:37 ?611次閱讀
    <b class='flag-5'>Air780EPM</b><b class='flag-5'>開(kāi)發(fā)板</b>FTP功能實(shí)戰(zhàn):<b class='flag-5'>LuatOS</b>嵌入式<b class='flag-5'>開(kāi)發(fā)</b>全解析

    Air8101多網(wǎng)融合戰(zhàn)略升級(jí):Air780EPM模塊助力4G聯(lián)網(wǎng)落地

    應(yīng)用邁向新高度。 本文將分享Air8101核心通過(guò)外掛Air780EPM整機(jī)開(kāi)發(fā)板,實(shí)現(xiàn)4G聯(lián)網(wǎng)的功能示例。 ? 一、硬件準(zhǔn)備工作 ? 1.1 ?所需硬件
    的頭像 發(fā)表于 06-23 16:53 ?668次閱讀
    <b class='flag-5'>Air</b>8101多網(wǎng)融合戰(zhàn)略升級(jí):<b class='flag-5'>Air780EPM</b>模塊助力4G聯(lián)網(wǎng)落地

    優(yōu)化你的設(shè)計(jì):Air780EPM場(chǎng)景化ADC硬件電路指南!

    Air780EPM的ADC精度怎么樣,想節(jié)約一顆外掛ADC… ? 今天也跟大家一起分享下相關(guān)內(nèi)容。在設(shè)計(jì)ADC硬件電路之前,請(qǐng)務(wù)必先查看LuatOS二次開(kāi)發(fā)ADC相關(guān)庫(kù)函數(shù)的描述。 最新ADC庫(kù)函數(shù)詳見(jiàn)
    的頭像 發(fā)表于 06-13 18:02 ?1035次閱讀
    優(yōu)化你的設(shè)計(jì):<b class='flag-5'>Air780EPM</b>場(chǎng)景化ADC硬件電路指南!

    Air780EPM — ADC硬件電路設(shè)計(jì):場(chǎng)景化優(yōu)化與實(shí)踐!

    Air780EPM的ADC精度怎么樣,想節(jié)約一顆外掛ADC… ? 今天也跟大家一起分享下相關(guān)內(nèi)容。在設(shè)計(jì)ADC硬件電路之前,請(qǐng)務(wù)必先查看LuatOS二次開(kāi)發(fā)ADC相關(guān)庫(kù)函數(shù)的描述。 最新ADC庫(kù)函數(shù)
    的頭像 發(fā)表于 06-11 14:40 ?774次閱讀
    <b class='flag-5'>Air780EPM</b> — ADC硬件電路設(shè)計(jì):場(chǎng)景化優(yōu)化與實(shí)踐!

    解鎖Air780EPM:N種GPIO操控LED的實(shí)戰(zhàn)技巧!

    在物聯(lián)網(wǎng)項(xiàng)目中,靈活使用Air780EPM的GPIO控制LED至關(guān)重要。本文將展示實(shí)現(xiàn)方式,涵蓋硬件配置與軟件編程,滿足不同場(chǎng)景需求。 今天特別分享基于Air780EPM的GPIO控制LED實(shí)現(xiàn)方案
    的頭像 發(fā)表于 05-28 16:56 ?1036次閱讀
    解鎖<b class='flag-5'>Air780EPM</b>:N種GPIO操控LED的實(shí)戰(zhàn)技巧!

    如何解決Air780EPM開(kāi)發(fā)中的調(diào)試難題?深度解析高效調(diào)試方法

    Air780EPM項(xiàng)目開(kāi)發(fā)中,調(diào)試效率往往直接影響進(jìn)度。面對(duì)代碼報(bào)錯(cuò)、邏輯漏洞等常見(jiàn)痛點(diǎn),開(kāi)發(fā)者亟需一套系統(tǒng)化的方法論。本文將揭秘實(shí)戰(zhàn)中驗(yàn)證的調(diào)試技巧,助您快速定位問(wèn)題并優(yōu)化代碼流程
    的頭像 發(fā)表于 05-17 10:46 ?855次閱讀
    如何解決<b class='flag-5'>Air780EPM</b><b class='flag-5'>開(kāi)發(fā)</b>中的調(diào)試難題?深度解析高效調(diào)試方法

    深度解析Air780EPM模組:LuatOS下CAN總線通信的完整方案!

    本文聚焦Air780EPM的CAN通信能力,結(jié)合LuatOS實(shí)時(shí)操作系統(tǒng),從底層驅(qū)動(dòng)到應(yīng)用層協(xié)議,詳細(xì)拆解如何實(shí)現(xiàn)工業(yè)級(jí)CAN總線數(shù)據(jù)傳輸,助力開(kāi)發(fā)者快速落地項(xiàng)目。 最新資料詳見(jiàn): h
    的頭像 發(fā)表于 05-06 14:22 ?993次閱讀
    深度解析<b class='flag-5'>Air780EPM</b>模組:<b class='flag-5'>LuatOS</b>下CAN總線通信的完整方案!
    白沙| 大英县| 汝南县| 宁海县| 沧州市| 营山县| 滁州市| 曲水县| 海盐县| 日土县| 明溪县| 阿拉尔市| 甘孜县| 金坛市| 大邑县| 长春市| 定安县| 肥乡县| 兰考县| 东乡族自治县| 汾阳市| 栖霞市| 白玉县| 新竹县| 通化市| 老河口市| 青铜峡市| 瑞昌市| 黔西县| 宁陕县| 盐山县| 扬州市| 祁东县| 台江县| 灵武市| 隆林| 新民市| 响水县| 文成县| 利辛县| 平度市|