色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

藏箱子里Air724UG模組LuatOS開發(fā)的HTTP示例!

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2024-11-30 09:42 ? 次閱讀

今天我們來學(xué)習(xí)的是我珍藏已久的低功耗模組Air724UG的LuatOS開發(fā)HTTP示例,獻(xiàn)給大家。

一、HTTP 概述

此部分內(nèi)容只是簡單的對HTTP作一個介紹,更詳細(xì)的說明或協(xié)議文檔,請查閱相關(guān)網(wǎng)站或文檔。

1.1 HTTP 請求方法

HTTP/1.1 協(xié)議中共定義了八種方法來以不同方式操作指定的資源。

a.GET

向指定的資源發(fā)出請求。使用 GET 方法應(yīng)該只用在讀取數(shù)據(jù)。

b.HEAD

與 GET 方法一樣,都是向服務(wù)器發(fā)出指定資源的請求。只不過服務(wù)器將不傳回資源的本文部分。

c.POST

向指定資源提交數(shù)據(jù),請求服務(wù)器進(jìn)行處理,例如上傳文件。

d.PUT

向指定資源位置上傳其最新內(nèi)容。

e.DELETE

請求服務(wù)器刪除 Request-URI 所標(biāo)識的資源。

f.TRACE

回顯服務(wù)器收到的請求,主要用于測試或診斷。

g.OPTIONS

這個方法可使服務(wù)器傳回該資源所支持的所有 HTTP 請求方法。用’*'來代替資源名稱,向 Web 服務(wù)器發(fā)送 OPTIONS 請求,可以測試服務(wù)器功能是否正常運(yùn)作。

h.CONNECT

HTTP/1.1 協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。通常用于 SSL 加密服務(wù)器的鏈接。

HTTP 服務(wù)器至少應(yīng)該實(shí)現(xiàn) GET 和 HEAD 方法,其他方法都是可選的。

1.2 HTTP 狀態(tài)碼

狀態(tài)代碼的第一個數(shù)字代表當(dāng)前響應(yīng)的類型:

1xx 消息——請求已被服務(wù)器接收,繼續(xù)處理

2xx 成功——請求已成功被服務(wù)器接收、理解、并接受

3xx 重定向——需要后續(xù)操作才能完成這一請求

4xx 請求錯誤——請求含有詞法錯誤或者無法被執(zhí)行

5xx 服務(wù)器錯誤——服務(wù)器在處理某個正確請求時發(fā)生錯誤

RFC 2616 中已經(jīng)推薦了描述狀態(tài)的短語,例如"200 OK",“404 Not Found”。

1.3 URL 鏈接地址

超文本傳輸協(xié)議(HTTP)的地址包含五個基本元素,分別是:

a.傳送協(xié)議, 層級 URL 標(biāo)記符號(為[//],固定不變) 訪問資源需要的憑證信息服務(wù)器,一般情況下為域名,也可以使用 IP 地址。

b.端口號,以數(shù)字方式表示,HTTP 默認(rèn)為”:80“,默認(rèn)值可不給出。

c.路徑,字符“/”區(qū)別路徑中的每一個目錄名稱。

d.查詢,GET 模式的窗體參數(shù),用“?”字符作為起點(diǎn),每個參數(shù)用“&”隔開,再以“=”分開參數(shù)名稱與數(shù)據(jù)。

e.片段,以“#”字符為起點(diǎn)。

由于超文本傳輸協(xié)議允許服務(wù)器將瀏覽器重定向到另一個網(wǎng)頁地址,因此許多服務(wù)器允許用戶省略網(wǎng)頁地址中的部分內(nèi)容,比如 www。

本文通過幾個具體的例子,演示 http 與 https 協(xié)議的具體實(shí)現(xiàn)。

二、功能演示概述

2.1 演示內(nèi)容

本文通過作者自身的使用經(jīng)歷與實(shí)踐,給大家演示 http 的常見操作與使用,包括:

a.get 方法的實(shí)現(xiàn);

b.post 方法的實(shí)現(xiàn);

c.文件的上傳操作;

d.文件的下載操作;

e.https 加密通訊;

f.處理 JSON 數(shù)據(jù);

g.gzip 操作。

三、硬件環(huán)境準(zhǔn)備

3.1 開發(fā)板準(zhǔn)備

本文所涉及到的所有演示,都使用開發(fā)板 EVB_Air724UG_A14 完成

此核心板的詳細(xì)使用說明參考:
https://docs.openluat.com/air724ug/product/

此開發(fā)板的詳細(xì)使用說明參考:Air724UG 產(chǎn)品手冊中的 《EVB_Air724UG_AXX開發(fā)板使用說明》,寫這篇文章時最新版本的使用說明為:《EVB_Air724UG_A14開發(fā)板使用說明》;開發(fā)板使用過程中遇到任何問題,可以直接參考這份使用說明文檔。

中國大陸環(huán)境下,可以上網(wǎng)的 sim 卡,一般來說,使用移動,電信,聯(lián)通的物聯(lián)網(wǎng)卡或者手機(jī)卡都行;

3.2 開發(fā)板的接線方式

wKgZO2dIbEOABG_6ABGq0PfynUk973.png

首先將開發(fā)板放置好,接上 USB 并連接到電腦,同時,記得將天線也連接好,保證信號環(huán)境比較良好,比如可以看看手機(jī)信號來判斷一下所在環(huán)境的信號狀況。USB 的連接如上圖所示。

在上圖中,連接 USB 的插口旁邊有一個 USB 字樣,在進(jìn)行腳本下載時,須連接此端口。旁邊另一個 USB 插口是 USB 轉(zhuǎn) UART接口,可以通過串行口工具查看調(diào)試 TRACE 信息。在本文的測試環(huán)境中,使用 USB 打印 trace,即在 Luatools工具中,將軟件上的"usb 打印 trace"選中即可,不必再另外連接串行口監(jiān)視打印 trace 的相關(guān)信息。

3.3 固件操作相關(guān)內(nèi)容

a.Luatools,是下載固件與腳本必不可少的工具,并且使用其查看 TRACE 調(diào)試信息也非常方便。

https://docs.openluat.com/Luatools/

b.Luatools 工具的使用請參閱:

https://docs.openluat.com/blog/Luatools/

c.遠(yuǎn)程固件升級請參閱:

https://docs.openluat.com/blog/fota_lesson/

d.USB 驅(qū)動安裝請參閱:

https://docs.openluat.com/blog/usb_drv/

四、軟件環(huán)境準(zhǔn)備

4.1 Lua 腳本語言

本文以 Lua 腳本語言為基礎(chǔ),因而需要有 Lua 腳本語言基礎(chǔ),可以通過下列文檔了解:

Lua 腳本語言的語法,請參閱:

https://wiki.luatos.com/luaGuide/luaReference.html#lua-5-3

https://docs.openluat.com/blog/lua_lesson/

4.2 Lua 腳本語言的 http 接口 API

本文既然是說 http,除了在 http 概述內(nèi)的簡單說明,還有必要對 Lua 腳本語言的 API 有一個了解。http 的 API 接口定義如下面的代碼。我之所以貼出下面這段定義代碼,三個方面的原因。

a.首先當(dāng)然是注釋說明中有較明晰的 http 協(xié)議結(jié)構(gòu)的定義;

b.其次對參數(shù)的解釋說明比演示文檔 testHttp.lua 文件內(nèi)容更全面,更有利于讀者對各個參數(shù)形式有一個了解。比如,傳遞證書就有了較明晰的表達(dá)式形式,這樣也方便大家組織參數(shù)時,能做到心里有數(shù);

c.最后是給出了不少調(diào)用示例,而這些示例在 testHttp.lua 文檔內(nèi)沒有或者不全面,而此處的示例能起到一個很好的補(bǔ)充。

wKgZPGdIbF2AGQj-AARk0dm0f8A773.pngwKgZO2dIbG-ADY-GAAbKtAnuhpQ896.pngwKgZO2dIbH-Afs1sAAXXK5ZaefM029.pngwKgZPGdIbI2AFtdQAAfMHKGRwX4827.pngwKgZPGdIbJ2AUEQqAAb1GtIrVDc210.pngwKgZPGdIbKmAGS-7AARIDsxb2hU752.png

關(guān)于 http 接口的具體說明,讀者還可以查詢其它相關(guān)資料或參考其它文件檔。

4.3 輔助工具

為了有效的分析開發(fā)過程中可能遇到的問題,并能查看數(shù)據(jù),準(zhǔn)備一些輔助工具很有必要,將大大縮短大家解決問題的時間。本文編寫過程中,使用了幾款工具介紹給大家,本文在后面將使用用或提到這些工具,請大家先了解。

a.Progress Telerik Fiddler Classic,抓包工具。

https://downloads.getfiddler.com/fiddler-classic/FiddlerSetup.5.0.20244.10953-latest.exe

b.Postman,API 調(diào)試平臺工具,可以方便的驗(yàn)證本文所提到的各種操作。

https://dl.pstmn.io/download/latest/win64

c.httpbin.org,一個很不錯的 API 調(diào)試網(wǎng)站,本文有關(guān) http 的不少內(nèi)容的演示,即使用本網(wǎng)站完成。

五、Luatools 的基本使用

5.1 準(zhǔn)備演示代碼

本文使用 air724 模塊的演示代碼 testHttp 作為藍(lán)本,在此基礎(chǔ)上進(jìn)行修訂刪改,來完成本文第二章中所提到的內(nèi)容。該演示藍(lán)本有兩個文件,分別為 main.lua、testHttp.lua 兩個文件。大家如果了解可以跳過,如果不熟悉又不想去費(fèi)勁下載資源,可以直接復(fù)制使用。testHttp.lua 隨著本文的測試進(jìn)行,會有所修訂,本文最后會給出完整的包含所有修訂的文件。

5.2 使用 Luatools 工具

按照本文的第三章第 2 節(jié)所描述的方式連接好開發(fā)板后,確認(rèn)無誤后,我們就可以啟動 Luatools 工具,如下圖所示。點(diǎn)擊界面中“項(xiàng)目管理與測試”按鈕,出現(xiàn)下圖所示的窗口,點(diǎn)擊“創(chuàng)建項(xiàng)目”,并輸入項(xiàng)目名稱,如本文建立的項(xiàng)目名稱為 http_doc。

項(xiàng)目建立完成后,點(diǎn)添加腳本或資源文件,按上節(jié)所說將藍(lán)本 main.lua 與 testHttp.lua 添加上去,如圖所示。

將"usb 打印 trace”使能,“添加默認(rèn) lib”選中。

wKgZO2dIbL6AM0a_AALvS3Phfm0161.png

完成上面的操作后,還要選擇底層 CORE。因?yàn)楹现婺K有各種資源,不同的底層 CORE 支持的內(nèi)容不同,這些底層內(nèi)核一般安裝在工具所在目錄的 ressoure 子目錄下。打開此目錄,會有不同的選擇,如圖。因?yàn)?724ug 模塊屬于 8910 平臺,所以我們要選擇 8910 的某一個內(nèi)核,本文所說都是指對腳本語言 Lua 進(jìn)行開發(fā),因而我們選擇 8910_lua_lod 即可。點(diǎn)擊進(jìn)入,有多個內(nèi)核,我們選擇最基本的 LuatOS-Air_V4028_RDA8910.pac 即可,如果大家手上使用的內(nèi)核進(jìn)行了升級,會有一些區(qū)別,譬如版本號變化等,請留意即可。

wKgZPGdIbMqAJmKEAAdteK7Znho718.png

如果電腦上沒有上述固件,也可以通過下載的網(wǎng)址下載。

固件版本和上層腳本:https://docs.openluat.com/air724ug/luatos/firmware/

六、GET 請求演示

6.1 演示網(wǎng)站 httpbin.org

為了使本文的演示可直接使用并能得到結(jié)果,而不是隨便給個示范文本,有必要找一個可以進(jìn)行測試的網(wǎng)站,本文使用上面工具準(zhǔn)備里提到過的 httpbin.org 給出的 API 來進(jìn)行測試。

首先打開 httpbin.org 網(wǎng)站,并找到 Dynamic data 這一欄,然后點(diǎn)開下拉菜單,如圖示。

wKgZPGdIbN6AKJGeAAVY3lTkHRo907.png

找到 Dynamic data 這一欄,打開,如下圖所示。

wKgZO2dIbOyAGRhlAAcqZZNEswM163.png

在上面看到第一項(xiàng)是 GET 方法,url 是/base64/{value},表示使用 GET 方法可以從此連接(url)得到經(jīng)過 base64 編碼的內(nèi)容,也即將 value 還原為實(shí)際內(nèi)容,即解碼。我們來完成這個工作。

6.2 用 GET 方法實(shí)現(xiàn) base64 解碼 API

我們可以使用 crypto.base64_encode 函數(shù)來對字符完成 base64 的編碼,在 testHttp.lua 中找到 http.request( "GET" , "www.lua.org",nil,nil,nil,nil,cbFnc)這一行語句,在語句前定義一個本地變量并賦值”用合宙 724ug 模塊完成 http 的 GET 方法“,即 local base64_str = "用合宙 724ug 模塊完成 http 的 GET 方法"。

按 API 的說明,將 url 路徑也即將 "www.lua.org" 替換為 "httpbin.org/base64/"..crypto.base64_encode ( base64_str , base64_str:len() )。

修訂完成后是如下這個樣子,保存文件后我們使用 Luatools 將腳本下載到開發(fā)板中,看看結(jié)果如何。

wKgZPGdIbPiAChEJAAFv1nA12Cs339.png

特別注意

如果是第一次下載,要選擇下載底層與腳本,因?yàn)槟愕绞值拈_發(fā)板,里面到底是什么內(nèi)核還不清楚,如果內(nèi)核不對,也就運(yùn)行不起來,這一點(diǎn)切記。在完成了底層下載后,如果腳本再有修訂,就不需要再下載底層了,只下載腳本即可。

下載完成后,會自動啟動,并在 Luatools工具中顯示 trace 信息。直接看結(jié)果吧,如圖所示。

wKgZO2dIbQOAblXBAAezKyR53Lw319.png

在上圖中,可以看到結(jié)果 true 200,表示正確完成,http 狀態(tài)碼是 200。

同時返回了解碼的字串”用合宙 724ug 模塊完成 http 的 GET 方法“。

至此,GET 的演示工作順利完成。

6.3 完整代碼的約定

為方便大家取用,本文最后將列出完整的 testHttp.lua 代碼。本文所作的全部修訂,都將保留在 testHttp.lua 文件中,使用注釋符如“--[[”與“]]”的來進(jìn)行選取使用或不使用。

七、POST 請求演示

7.1 物聯(lián)網(wǎng)卡信息 API 接口

對 get 的演練,感覺還是挺容易的,一路下來也沒有什么障礙。不過 GET 我們使用的還不是真正的應(yīng)用場合,因?yàn)榉?wù)器仍然還只是一個演示。我們在 POST 就使用一個真實(shí)的應(yīng)用數(shù)據(jù),算是一個真實(shí)的項(xiàng)目應(yīng)用。

我們要演示,就得有服務(wù)器可以讓我們來實(shí)操,上面說了,我們要完成一個真實(shí)的項(xiàng)目。使用 724ug 模塊,就得有上網(wǎng)卡,物聯(lián)網(wǎng)卡是最優(yōu)的選擇。這里有一個物聯(lián)網(wǎng)卡服務(wù)商提供的物聯(lián)網(wǎng) SIM 卡信息的 API 接口,這個網(wǎng)站是

http://sim.taoyuan-tech.com。這是一個真實(shí)的網(wǎng)站,而且給客戶提供一個測試賬號,那么我們就使用這個測試賬號來進(jìn)行 POST 方法的操作,以讀取 SIM 卡的日志

這里測試賬號的用戶名:18168967871,密碼:18168967871。登錄進(jìn)去后,是下圖中所示的樣子。

wKgZPGdIbRaAIxlBAAFcksot3OM499.png

在上圖所示界面中,點(diǎn)擊獲取”APIkey 各 Secret“字樣的按鈕,可得到測試用戶的 API key 與 API Secret,注意保存這兩個數(shù)據(jù)備用。點(diǎn)擊”API 文檔“字樣的按鈕,可進(jìn)入詳細(xì)的接口 API 說明文檔頁面,如圖。

wKgZO2dIbSGAAky5AAHCr9qYmVw368.png

看文檔目錄,約定等前面幾項(xiàng)內(nèi)容是要關(guān)注的,好在簡短,切一張圖也就可以完全看到,列出于下圖。

wKgZO2dIbTWAF93yAAVuR4mfC7g701.png

我們在上圖中看到幾項(xiàng)注意事項(xiàng)。

a.所有請求參數(shù),使用 json 形式發(fā)送。這表示只接收 json 形式的數(shù)據(jù)與內(nèi)容;

b.需要返回狀態(tài)碼 200 才正確;

c.約定了所使用的單位,這樣可以方便的計算時間與費(fèi)用;

d.對認(rèn)證進(jìn)行了說明,這很重要,要仔細(xì)閱讀并理解 。認(rèn)證方式為 HTTP Basic Authorization,認(rèn)證信息的形式是 appkey:appsecret。就是前面提到要注意保存的那兩個數(shù)據(jù);

e.對可能的錯誤碼進(jìn)行了說明;

f.給出了主機(jī)地址為 http://api.taoyuan-tech.com/api/open。

所有這些約定及注意事項(xiàng)都很重要,不要忽略,可能后面我們都會要用到。

這個 API 有好幾個接口,我們就選第一個來實(shí)現(xiàn)即可。就是下面圖中所列出的日志查詢。圖中表格所給出的字段,是我們需要提供的訪問參數(shù)及返回結(jié)果。

wKgZPGdIbUWAUdBVAAVGwFMYco0740.png

7.2 使用 postman 工具驗(yàn)證

為了方便,我們可以先使用 postman 組織包內(nèi)容,然后再移植到 testHttp.lua 文件內(nèi)進(jìn)行測試。查看“物聯(lián)網(wǎng)卡指定日期用量日志查詢 ”API 的說明,我們知道此接口的訪問的 url 為“/iotcard/usagelog”,所以完整的訪問路徑為 http://api.taoyuan-tech.com/api/open/iotcard/usagelog,將此路徑填入到 postman 中,選擇 POST 方法,選擇頭部信息 Auth Type 類型為 Basic Auth。這些內(nèi)容都是 API 文檔約定與注意事項(xiàng)所確定的內(nèi)容。然后點(diǎn)擊 Auth,將前文提到過的 Apikey 與 Apisecret 分別填入到用戶名與密碼輸入框內(nèi)。如下圖所示。

wKgZPGdIbVCAFOnMAASD7FkgzBc225.png

接著再點(diǎn)擊 Body,輸入以下內(nèi)容:

其中字段的含義在前圖所示的表格中都有說明,請大家注意查閱。而 89860403102080512138 為 SIM 卡號的 iccids 號,此 SIM 卡可在測試用戶賬號中的卡片信息中查到。如果卡片信息沒有此號碼,可以查閱卡片信息以獲取用戶數(shù)據(jù)庫中真實(shí)存在的卡片 iccids 號。從圖中的說明中我們還知道,傳入的參數(shù)可以是其它的三種識別號碼之一,如 imei 號。在四個 SIM 卡的關(guān)聯(lián)識別號中四選一,本文我們選擇 iccids,想測試其它參數(shù)形式的,可以自行更改修訂。比如修訂為 imsis,則輸入內(nèi)容就變?yōu)椋?/p>

如下圖所示。

wKgZO2dIbV6AStIrAANKGretStU978.png

輸入完成,點(diǎn)擊 Send 發(fā)送。即返回如下圖所示的響應(yīng)。

wKgZPGdIbWiAeLFzAAK4KXwCWNs531.png

依據(jù)前圖所示的表格內(nèi)容可知,2024-10-10 這一天所消耗的流量為 0M,即"data_usage":0。同時,查看狀態(tài)碼為 200,結(jié)果 OK。這些完成后,我們就可以根據(jù)組包的相關(guān)信息,對 testHttp.lua 進(jìn)行修訂。

7.3 修訂文件內(nèi)容

打開 testHttp.lua 文件,我們在 77 行與 84 行之間,發(fā)現(xiàn)了一段代碼,使用了 POST 方法,可以在此基礎(chǔ)上進(jìn)行修訂,如下圖。首先將注釋去掉,再查看具體內(nèi)容,我們發(fā)現(xiàn)有幾點(diǎn)存在疑問。

wKgZPGdIbXGAXKxHAAG_3jPt3KI302.png

a.從上文可知,API 使用的是 Auth Basic 的方式,而且上面組包時,使用的是 Apikey 與 Apisecret 兩個內(nèi)容,這個與演示代碼的 ["Authorization]"="Basic jffdsfdsfdsfdsfjakljfdoiuweonlkdsjdsjapodaskdsf",好像相符,但又好像不相符,這里怎么去得到這個串呢;

b.前文提到,使用的 Content-type 是 application/json,與代碼中所使用的方式有所不同,因而此處需要修訂;

c.同時請求參數(shù)的內(nèi)容肯定也需要修訂,只是如何組織這個參數(shù)呢。從 table 類型的各種組織方式看,也沒有 name:value 這樣的形式。

有問題就好,一個個解決也就好了。首先我們從第一個問題開始,這就要用到本文開頭所給出抓包工具了,我們看看實(shí)際的數(shù)據(jù)是什么樣子,不就知道了嗎?直接上圖,如下面圖中所示,可以看到實(shí)際的數(shù)據(jù)包都有哪些內(nèi)容,當(dāng)然,此抓包工具也可以查看 BODY,auth 等各項(xiàng)數(shù)據(jù),可以切換各頁面看看都有哪些數(shù)據(jù)項(xiàng),以加深理解。

wKgZO2dIbXyAKOTcAAd8U-Nqhj8414.pngwKgZPGdIbYeAOg7IAAWxAPrrDMw905.png

在上圖中,我們看到了一行文字內(nèi)容:Authorization: Basic NkZhbXFsRmZTVmQ4OHNHejpLemt0SW8y ......這個正是我們所要的內(nèi)容,因而將此項(xiàng)復(fù)制,填入代替。

第二個問題簡單,直接修訂為['Content-Type']="application/json"即可。

第三個問題,需要調(diào)用 json 的一個函數(shù)來解決,就是下面這個函數(shù),即 json 編碼。

wKgZPGdIbZWARR9RAADCMO5fvhY476.png

其它的,['Connection']="keep-alive"要不要加上,看示例代碼中有些加了,有些沒有加。Http 是短連接,但又希望環(huán)境能得到保存,使下次再次發(fā)起 http 請求時,能快速得到反應(yīng),因而才有了這個['Connection']="keep-alive"的配置項(xiàng),但在 Http 1.1 之后,這個就是默認(rèn)的值,因而可以加上,也可以不加上,效果一樣。

經(jīng)過上面的修訂后,代碼成為了下面這樣子。

wKgZO2dIbZ-ANV3JAAM4TU0-PEg960.png

好了,現(xiàn)在我們將腳本下載到開發(fā)板中,看看是什么結(jié)果。

wKgZO2dIbamAa9ArAAS_pmwvZrM519.png

不出意外,如上圖中所示,可以看到返回的狀態(tài)碼是 200,結(jié)果為 true,代碼執(zhí)行正確無誤,同時,可以看到服務(wù)器返回的數(shù)據(jù),與從 postman 得到的數(shù)據(jù)一致。

到這里,POST 的演示算是完成了,另外要補(bǔ)充說明的是,其實(shí)頭部結(jié)構(gòu)里的 Auth Basic 有另一種取得方式,可以直接調(diào)用 crypto 模塊內(nèi)的 base64 函數(shù)來完成。如下代碼所示。

wKgZPGdIbbWAZlUDAAPlNW3xyis258.png

具體要如何使用,看實(shí)際情況,因?yàn)橛行┚W(wǎng)站的 API 提供的直接就是 BASE64 碼,此時用第一種顯然省事。本文最后完整源代碼使用生成方式。

八、文件上傳操作

8.1 準(zhǔn)備工作

對于文件上傳,我們?nèi)允褂?GET 方法時所使用的測試服務(wù)器,即 httpbin.org,因?yàn)槲覀兪褂谩眕ost"方法上傳文件,所以 url 為 httpbin.org/post。需要說明一點(diǎn)的是,httpbin.org/post 是一個回環(huán)服務(wù)器,即當(dāng)向其傳輸文件時,服務(wù)器會將傳輸內(nèi)容作為響應(yīng)返回,因而當(dāng)我們看到響應(yīng)并返回的內(nèi)容后,就可以判斷操作是否正確。其實(shí)我有考慮使用更直接的方式,但幾天下來找不到合用的服務(wù)器來進(jìn)行操作,只好以此作為本文的上傳文件演示了。

還是前面的方法,我們先使用 Postman 工具來組織數(shù)據(jù)包。

a.啟動 Postman 并將方法選擇為 POST;

b.在主機(jī)欄內(nèi)輸入“httpbin.org/post”;

c.然后選擇 body,選擇 binary;

d.選擇文件,本處為 test.txt,內(nèi)容為“uses post method to upload a file.”;如果沒有此文件,新建一個即可;

e.點(diǎn)擊發(fā)送;

f.稍后返回數(shù)據(jù)。

所有操作及數(shù)據(jù)如下圖所示。

wKgZPGdIbcmAOYquAAcycIZmXxg451.png

在圖中可以清楚地看到 200 OK 字樣,表示操作正確。同時,我們在圖中 6 號箭頭所指的文本中,可以發(fā)現(xiàn)一些有用的字串,分別是:

wKgZO2dIbdSAbTsOAAD-wahxjLA241.png

同時,我們也發(fā)現(xiàn)了:

"files":{}

"form":{}

為空,這個我們可以比對后面的多文件多參數(shù)上傳時的內(nèi)容來進(jìn)行理解。

8.2 文件修訂

如前面的方法,我們來修訂 testHttp.lua 文件的內(nèi)容。

在 testHttp.lua 的 56 行開始,有一處注釋掉了的代碼,可以為我們所用。如下圖。

wKgZPGdIbeqAWEC3AAJUTTgissY368.png

首先,去掉注釋括號,將 url 替換成“httpbin.org/post”;

其次,將['Content-Type']的值替換成前面所說的內(nèi)容,即"text/plain";

最后,將{[1]={['file']="/RecDir/rec001"}}修訂為{[1]={['file']="/luar/test.txt"}}并按保存。

修訂后的文本如列出如下。

wKgZO2dIbfWARqSgAAFQTYz5YMU565.png

8.3 固件下載及運(yùn)行結(jié)果

啟動 Luatools 固件下載工具,并點(diǎn)擊項(xiàng)目管理測試按鈕,將文件 main.lua,testHttp.lua 分別添加進(jìn)去,同時將文件 test.txt 也添加上去,如下圖所示。需要注意,大家建立項(xiàng)目的位置不同,圖中的文件路徑與項(xiàng)目路徑可能有些不同,與自己的實(shí)際內(nèi)容相符即可。

wKgZO2dIbf-AXanqAAPBQLHMJOc050.png

在圖中點(diǎn)下載腳本,然后切換到 Luatools 的 trace 頁面,等待腳本代碼運(yùn)行結(jié)果。

wKgZPGdIbgqADQNrAAjH3MF6gR0369.png

由圖中內(nèi)容可見,腳本復(fù)現(xiàn)了 Postman 演示的內(nèi)容,上文中我們所關(guān)注的內(nèi)容也都從圖中得到印證,見圖中紅框中的內(nèi)容,可以與 postman 的內(nèi)容進(jìn)行比較。

到這里文件上傳可以順利完成??赡苡腥艘獑柫?,文件是上傳了,可是我需要傳二進(jìn)制文件怎么辦,或者我要傳圖片怎么處理。其實(shí)也很簡單,我們還是用 postman 來進(jìn)行組包測試,如下圖。

wKgZO2dIbhaAbcRTAAlyavSr2Yg253.png

圖中我們將 test.txt 去掉,使用 test.bin 取代,將腳本的內(nèi)容類型即 Content-Type 修訂為"application/octet-stream"即可,其它不變,其中 application/octet-stream 就表示數(shù)據(jù)內(nèi)容是二進(jìn)制流。點(diǎn)擊 SEND 后,可看到返回信息。修訂后的內(nèi)容如下所示。

wKgZO2dIbiGAI9mzAAHf6yxjCD8587.png

使用 Luatools 下載后等待運(yùn)行結(jié)果如圖所示。與 postman 的相關(guān)結(jié)果亦相符。當(dāng)然,這里要特別提示幾點(diǎn)。

a.文件請注意大小,太大的文件可能會導(dǎo)致內(nèi)存不足,因而太大的文件需要經(jīng)過其它處理才可以。

b.相關(guān)資源文件請一并加到項(xiàng)目中,與腳本一起下載到模塊中。

c.對于二進(jìn)制文件,對內(nèi)容進(jìn)行了 base64 編碼,因而文件上傳后,真正使用時,需要進(jìn)行解碼。

wKgZPGdIbjCAW_eyAAlOXSZltAs137.png

8.4 文件上傳進(jìn)階篇

也許有些用途一方面要上傳文件,一方面又要傳參數(shù),此時又要如何處理呢。我們查看 testHttp.lua 文件,有一段代碼如下,也就是文件最后面約從 90 行開始的部分。我們可以利用此段代碼進(jìn)行比較復(fù)雜的文件上傳操作,比如傳多個文件,多個參數(shù)。下面這段代碼即是 testHttp.lua 文件中相應(yīng)的代碼段去掉注釋后的樣子。

wKgZO2dIbkOASKalAAQuJlWa_z4785.pngwKgZPGdIblWALDyNAAOB2p2u8NY765.pngwKgZPGdIbmOAZHVpAAIwsa_tIWs548.pngwKgZPGdIbm2AcxTFAAA8kH7KGO4203.png

在上面的代碼中,傳了兩個參數(shù),即 imei 卡號與時間,傳了一個文件,即"logo_color.jpg"。我們需要修訂為我們所用。首先我們將 url 修訂為“httpbin.org/post”,同時我們將上傳文件修訂為 “/lua/text.txt”。除此外,我們還有一個地方要修訂,即添加一個文件類型,即 txt = "text/plain"。表示這是一個文本文件,大抵如果是一個 BIN 文件,需要添加一個 BIN="application/octet-stream"吧,依此類推。

依上面修訂后,testHttp.lua 成為下面這個樣子。這是進(jìn)階篇完整的代碼,大家可以直接復(fù)制取用,為了節(jié)省篇章,此代碼為傳輸兩個文件,兩個參數(shù)的例子,不再一一講解一個文件,一個參數(shù)等其它搭配組合情況,請知悉。

wKgZO2dIbnqACu6QAASWuzO4Oe8926.pngwKgZO2dIboeALsAeAAOyEeJXdrk453.pngwKgZPGdIbpaAPUbaAAJBlkBl07w790.pngwKgZPGdIbqSADBqCAAEsbAOnsbI506.png

將上面代碼修訂后,與 main.lua,text.txt,text.bin 一起添加的項(xiàng)目文件內(nèi),如圖所示。沒有文本文件可以新建,二進(jìn)制文件可以在電腦上找一個較小的,比如我就找了一個單片機(jī)的二進(jìn)制固件 test.bin。文件不要過大,容易導(dǎo)致內(nèi)存問題,這也是我們實(shí)際要考慮的問題,即在實(shí)際應(yīng)用中,文件的處理還是要小心對待。

wKgZO2dIbq-AMHnlAAO49nwNnLI044.png

下載完成,我們查看運(yùn)行結(jié)果,如圖。

wKgZPGdIbrqAICiTAAdr9MYtyJk972.png

我們在上圖中找到了 true 200 表示正確返回,然后我們找到了第一個文件 test.bin 的相關(guān)數(shù)據(jù),因?yàn)榇翱诖笮≡颍瑳]有顯示第二個文件的內(nèi)容,我們可以翻看到第二個文件的內(nèi)容,如圖。

wKgZO2dIbsSAKcjeAAbndEj8Y0k740.png

我們在圖中找到了第二個文件的信息,文本文本并沒有進(jìn)行 base64 加密處理。同時,兩個參數(shù)的內(nèi)容也可以找到。

下面說說文件類型怎么定義的問題,因?yàn)槲覀兛吹轿募愋偷亩x有點(diǎn)懵。如下面的代碼中,有 jpg="image/jpeg"這樣的,也有 png ="image/png" 這樣的,而我們自己添加的兩個文件類型,卻不知這個類型為什么要這么填。

wKgZO2dIbs6ATzuhAAEa7bUs7HU372.png

這個還是得說回 postman,fiddler 兩個工具,我們在 postman 中組織演示時,發(fā)送后,可以在 fiddler 中看到具體的數(shù)據(jù)形式,在 fiddler 中切換到 WebForms,如下圖。

wKgZPGdIbtiAffGIAAIjSTgQmN0772.png

在圖中,各文件的數(shù)據(jù)轉(zhuǎn)換為了兩個表格,將 Content-Type 的值,如圖中也就是 application/octet-stream、image/png 分別填入到對應(yīng)的文件類型后即可。參照如此處理,大抵不會錯了。

九、文件下載

通過 http 文件下載,原則上相對簡單,但是由于服務(wù)器難找,平時的網(wǎng)站的文件又比較大,費(fèi)了不少時間,好在終于找到了一個自認(rèn)為比較好用的網(wǎng)站豆子外鏈:http://zuoye.free.fr/index.php,目前網(wǎng)站可用,可以用來進(jìn)行文件下載的測試。進(jìn)入網(wǎng)站,便會出現(xiàn)一個上傳文件界面,可以上傳一個自己的文件,然后使用 http 下載此文件進(jìn)行驗(yàn)證。當(dāng)然,也可以使用文件廣場內(nèi)已經(jīng)上傳的文件。

wKgZPGdIdD2AOUnGAAFCMG9MuVw163.png

我們將文件外鏈地址復(fù)制下來,然后修訂 testHttp.lua 文件。將其它的測試演示語句全部注釋掉,然后在文件 testHttp.lua 中添加一行代碼,然后按保存,并通過 Luatools 下載到開發(fā)板。

wKgZO2dIdFGAWzapAADAwDhdfkc563.png

下面是運(yùn)行結(jié)果。

wKgZPGdIdAuAe7n1AAfEPgbRobs940.png

我們可以看到 true 200 的字樣,表示網(wǎng)站正確返回,然后我們看到了文件名稱是 flag.png 及文件大小是 785,文件類型是圖片,然后也顯示了文件內(nèi)容,即 body 部分,只是由于是圖片文件,這里不能顯示出來,但我們可以查看一下我剛上傳的文件屬性比較一下文件大小是否相符,如下圖。當(dāng)然,二進(jìn)制數(shù)據(jù)不能顯示,但我們可以修改回調(diào)函數(shù)并使用 base64 編碼來顯示數(shù)據(jù),但此內(nèi)容不在本文演示范圍,不作擴(kuò)展顯示,有興趣的朋友可以自行試試。

wKgZO2dIc_6AOnqsAAQRP-ZPYfs476.png

十、HTTPS 加密通信

加密通信我們使用服務(wù)器"https://airtest.openluat.com 來進(jìn)行測試,使用 GET 方法,訪問此服務(wù)器將會返回 hello 字樣。打開鏈接 https://doc.openluat.com/share_article/KwExQpfcbL9Fs,是服務(wù)器的使用說明與各功能接口的入口,如圖。

wKgZPGdIdGWAW9V9AAGXJAs6nLA415.png

點(diǎn)擊 https Server 進(jìn)入相關(guān)說明,如圖。

wKgZO2dIdG6AZJioAAE5GMeEwkU057.png

可以看到服務(wù)器的說明及啟動方式等內(nèi)容,最后有一個 cert.rar 的壓縮文件,點(diǎn)擊下載,里面有三個證書文件,解壓保存,并將這三個文件加入到 Luatools 項(xiàng)目文件內(nèi),如圖所示。

wKgZO2dIdHmACt7MAAPXq3XVQgM324.png

完成上面操作后,接下來修訂文件 testHttp.lua,添加下面的內(nèi)容后按保存。然后轉(zhuǎn)到 Luatools 工具,點(diǎn)擊下載腳本。

wKgZO2dIdISAPp3UAAE82Mv_5d0301.png

等幾秒后,開發(fā)板重啟運(yùn)行,結(jié)果如下。

wKgZPGdIdI6AasoiAAcTj8jAn04671.png

十一、處理 JSON 數(shù)據(jù)

json 數(shù)據(jù)處理,主要就是兩個函數(shù),即 json.encode 與 json.decode。其實(shí) json.encode 我們在 post 那一節(jié)中已經(jīng)有使用,因而我們本節(jié)不再就 encode 函數(shù)的講解進(jìn)行說明,本節(jié)我們使用直接從網(wǎng)站讀取的 json 數(shù)據(jù),然后調(diào)用 json.decode 解碼。

本次我們?nèi)允褂?httpbin.org 網(wǎng)站來做這個事情,此網(wǎng)站有一個接口可以用于測試此功能,位于 Dynamic data 的 get 方法內(nèi),有一個 GET/stream/{n}的接口,根據(jù){n}的數(shù)值,返回 n 組 json 數(shù)據(jù),如下圖是 n=4 的情形。

wKgZPGdIdJmAfxwqAAas-otcSxQ662.png

我們將 body 部分 COPY 出來,列出如下:

wKgZO2dIdKeAH8uFAAmpjjr-GvY536.png

上面字符串,直接使用 json.decode()解析不了,原因是里面包含多條 json 字符串,因而需要進(jìn)行分解,為此編寫了下面的代碼,以分離字符串。由上面的代碼,1 行的結(jié)尾與 2 行的開始是字串”}{“,而且作為 json 文本,這樣的字串也只在兩個 json 字串之間存在,因而我們使用這個作為子串查找,以準(zhǔn)確找出各個 json 子串。同時我們將回調(diào)函數(shù)重新編寫一下,為了與原回調(diào)函數(shù)區(qū)別,本回調(diào)函數(shù)使用 cbFncJson 作為函數(shù)名。同時為了程序清晰,同時編寫了一個 json 字串解析輸出函數(shù) json_out。代碼列出如下。注:下面的字符串處理函數(shù)僅適用于本文演示的具體數(shù)據(jù),如使用到其它場合,請依據(jù)格式與內(nèi)容進(jìn)行適當(dāng)修訂或補(bǔ)全。

wKgZO2dIdLeAPZKXAAORbo8fktY901.pngwKgZPGdIdMaAB81KAAOdjrCEmzE419.png

完成上面的代碼編寫后,在 testHttp.lua 中再添加一行代碼,以使用 GET 方法將數(shù)據(jù)取回。

wKgZO2dIdNCABiPJAAEXkGkKXLU362.png

保存文件,并將文件下載到開發(fā)板,我們來看看執(zhí)行結(jié)果。為了方便,我們將解析字串復(fù)制過來,列出如下,刪除了一些多余的輸出,保留 json 的解析部分,以看得分明。

wKgZPGdIdN6AJ0eXAAhkFb_yriw419.pngwKgZO2dIdO6AfV6fAAhe1QTCUfw699.pngwKgZPGdIdP-AWfVkAAheBHSMAJU863.pngwKgZO2dIdRaAFbC_AAHewXCgMSk547.png

上面文本的輸出方式,首先輸出 json 字串,然后是 json 字串的解析,將各名稱對按一定的順序列出。

雖然上面的代碼是 json 的顯示,但其實(shí)綜合使用了 table,json,string 等多種數(shù)據(jù)類型的使用,因而這是一個綜合性比較強(qiáng)的一次演示,大家可以在此基礎(chǔ)上進(jìn)行更進(jìn)一步的測試演示,完成更復(fù)雜的內(nèi)容。

十二、gzip 操作

本操作使用下面的代碼進(jìn)行測試。因 724 尚沒有合用的解壓工具,因而也不作講解,只列出測試內(nèi)容與測試結(jié)果,也不作解壓還原操作。

wKgZO2dIdSKAMY6qAAFE1kN8VvA268.png

wKgZO2dIdSyAKJKNAAmUZke4qnQ619.png

十三、最終的測試文件

最終的 testHttp.lua 文件,此文件包含本文所有示例演示內(nèi)容,使用時,將對應(yīng)的注釋去掉,不使用該功能時,將注釋恢復(fù)即可。

wKgZO2dIdTmABH7UAAO3LaAAnEM855.pngwKgZPGdIdUeAEy8QAAQyoKi84yA259.pngwKgZO2dIdVWAcSteAAOqrzU5j3s199.pngwKgZO2dIdWWAIY6CAARomeKg8E0331.pngwKgZO2dIdXuAQqRhAAR6Zmoh2nk073.pngwKgZPGdIdYeAEu_ZAAUyrwg4yg4769.pngwKgZO2dIdZiAJnhMAARgpVOdpcI293.pngwKgZPGdIdaaAXTPIAAUUPTFarlk536.pngwKgZO2dIdbOALD8QAAPfswv7iaU669.pngwKgZPGdIdcGAM1jXAAQ1yQZiG_E447.pngwKgZO2dIdc2AWlcXAARIE40EFNU652.pngwKgZO2dIdd2ACdMUAAJjD1JZL4k186.pngwKgZPGdIdemAYgHSAAFngXf3ONk429.png

十四、總結(jié)

本文力求從實(shí)際應(yīng)用出發(fā),對 Http 協(xié)議的大部分方法進(jìn)行了演示測試,每一項(xiàng)操作都經(jīng)過本人實(shí)際操作。本文中,涉及一些服務(wù)器的選用,也是經(jīng)過多方的查找,各種比照之后,才決定選用的,具有一定的穩(wěn)定性,就是說在一定的時間范圍內(nèi),相應(yīng)資源都可用。最后,希望本文對各位讀者有用,并能解決大家一些實(shí)際問題。

十五、常見問題

15.1 腳本下載后沒有反應(yīng)。

檢查有沒有下載底層核心,因?yàn)殚_發(fā)板出廠時,一般情況下是 AT 版本,此時如果不下載底層核心,lua 腳本就運(yùn)行不起來。

15.2 接上 USB 線后,不能下載,也不閃燈

檢查 USB 線是否連接正確,724 開發(fā)板有兩個 USB 口,旁邊有 USB 字樣的,才是下載用的 USB 通訊口,另一個 USB 口是 USB 轉(zhuǎn) TTL 的 UART 通訊端口,此端口不提供電源支持,因而當(dāng)然不會有反應(yīng)。

15.3 不小心變磚了怎么辦?

在 Luatools 軟件中,點(diǎn)擊下載固件,選擇底層核心文件,使能 USB BOOT 下載,按住開發(fā)板上的重啟按鈕,直到聽到嘀的一聲后開始下載,看到可松開按鍵提示后,松開按鍵。如下圖。

wKgZO2dIdf-ATDgXAAa9niZddCg914.png

15.4 一直連接不上網(wǎng)

檢查天線是否連接完好,檢查所在位置信號是否良好,檢查 SIM 卡是否鎖死,檢查 SIM 卡是否欠費(fèi)等??墒褂米约旱氖謾C(jī)卡換上去進(jìn)行比較檢查。如果手機(jī)卡能上網(wǎng),則與硬件無關(guān),此時可檢查 SIM 的相關(guān)內(nèi)容。

分享完畢。

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

    關(guān)注

    12

    文章

    9123

    瀏覽量

    85324
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    504

    瀏覽量

    31194
  • 模組
    +關(guān)注

    關(guān)注

    6

    文章

    1487

    瀏覽量

    30360
  • LuatOS
    +關(guān)注

    關(guān)注

    0

    文章

    76

    瀏覽量

    1936
收藏 人收藏

    評論

    相關(guān)推薦

    分步實(shí)操 | Air724UG低功耗模組軟件中復(fù)刻高效FTP示例

    本文要說的是低功耗4G模組Air724UG軟件中復(fù)刻高效FTP示例,我已整理成文供大家參考。
    的頭像 發(fā)表于 12-03 11:45 ?579次閱讀
    分步實(shí)操 | <b class='flag-5'>Air724UG</b>低功耗<b class='flag-5'>模組</b>軟件中復(fù)刻高效FTP<b class='flag-5'>示例</b>!

    air724ug開發(fā)

    air724ug開發(fā)板,最近購買了一塊4G開發(fā)板來玩玩,做個開發(fā)記錄開發(fā)板采用合宙Air724UG
    發(fā)表于 07-22 07:25

    STM32+Air724UG基本控制篇

    Air724UG,4G Cat.1全網(wǎng)通③基本外設(shè):液晶OLED(IIC); RGB三色燈;溫濕度傳感器(DHT1...
    發(fā)表于 08-20 06:09

    來了!STM32移植LuatOS,潘多拉示例全新教程 精選資料推薦

    進(jìn)擊的五月,繼上期《使用Air724UG制作簡易貪吃蛇》教程之后,@打盹的消防車 又為大家?guī)砘赟TM32的潘多拉LuatOS移植全新教程:為什么使用潘多拉作為教程呢?STM32不能沒有通訊,那就
    發(fā)表于 08-24 06:10

    Air724UG模塊及其硬件接口規(guī)范

    1. 緒論本文檔定義了Air724UG模塊及其硬件接口規(guī)范,電氣特性和機(jī)械細(xì)節(jié),通過此文檔的幫助,結(jié)合我們的應(yīng)用手冊和用戶指導(dǎo)書,客戶可以快速應(yīng)用Air724UG模塊于無線應(yīng)用。2.綜述2.1
    發(fā)表于 11-11 06:44

    Air724UG是什么

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄前言一、Air724UG是什么?二、AT是什么?三、服務(wù)器是什么?四、我們要做什么?五、我們該怎么做?0.準(zhǔn)備工作1·連接模塊
    發(fā)表于 12-13 07:07

    AIR724UG模塊AT指令響應(yīng)時間發(fā)送指令后一定要等回復(fù)嗎

    AIR724UG模塊AT指令響應(yīng)時間發(fā)送指令后必須等待回復(fù),然后才能進(jìn)行下一個指令操作。
    發(fā)表于 03-02 06:20

    怎么解決通過air724ug獲取位置信息后通過mqtt發(fā)送到云端遇到的問題

    我想通過air724ug模塊獲取定位后,在通過mqtt發(fā)送到云端,但是查詢了位置信息之后mqtt就斷了 我是通過串口發(fā)送AT指令來獲取位置信息的 軟件包用的是at_device下的air720,mqtt用的是pahomqtt 兩個功能單獨(dú)使用都是可以成功實(shí)現(xiàn)功能的
    發(fā)表于 04-27 11:41

    Air724UGAir723UG模塊的硬件設(shè)計手冊免費(fèi)下載

    本文檔定義了Air724UG_Air723UG模塊及其硬件接口規(guī)范,電氣特性和機(jī)械細(xì)節(jié),通過此文檔的幫助,結(jié)合我們的應(yīng)用手冊和用戶指導(dǎo)書,客戶可以快速應(yīng)用Air724UG_Air723UG模塊于無線應(yīng)用。
    發(fā)表于 11-16 08:00 ?44次下載
    <b class='flag-5'>Air724UG</b>和<b class='flag-5'>Air723UG</b>模塊的硬件設(shè)計手冊免費(fèi)下載

    Air724UGAir723UG模塊硬件設(shè)計手冊免費(fèi)下載

    本文檔定義了Air724UG_Air723UG模塊及其硬件接口規(guī)范,電氣特性和機(jī)械細(xì)節(jié),通過此文檔的幫助,結(jié)合我們的應(yīng)用手冊和用戶指導(dǎo)書,客戶可以快速應(yīng)用Air724UG_Air723UG模塊于無線應(yīng)用。
    發(fā)表于 03-31 08:00 ?2次下載

    緣起Air724UG,Cat.1網(wǎng)紅“貓”到物聯(lián)網(wǎng)行業(yè)應(yīng)用經(jīng)典之選

    提起Air724UG,總讓人想起2020年的春天。群雄競起,各大模組廠商紛紛涌入激蕩的4GCat.1市場。相比之下,合宙Cat.1產(chǎn)品上市不算早,卻以“發(fā)布即量產(chǎn),用產(chǎn)品說話”的獨(dú)有風(fēng)格宣告開啟物
    的頭像 發(fā)表于 08-31 09:55 ?2526次閱讀
    緣起<b class='flag-5'>Air724UG</b>,Cat.1網(wǎng)紅“貓”到物聯(lián)網(wǎng)行業(yè)應(yīng)用經(jīng)典之選

    Air724UG軟件:ADC功能的創(chuàng)意展示

    今天我將對Air724UG軟件的ADC功能做出詳細(xì)示例,大家可以先收藏,再慢慢細(xì)讀,絕對有收獲。
    的頭像 發(fā)表于 11-17 09:53 ?288次閱讀
    <b class='flag-5'>Air724UG</b>軟件:ADC功能的創(chuàng)意展示

    4G模組Air724UG軟件示例:UDP實(shí)戰(zhàn)演練!

    關(guān)于4G模組Air724UG軟件的UDP示例,今天我將對其實(shí)戰(zhàn)演練,整理成文示例展示:
    的頭像 發(fā)表于 11-26 12:10 ?168次閱讀
    4G<b class='flag-5'>模組</b><b class='flag-5'>Air724UG</b>軟件<b class='flag-5'>示例</b>:UDP實(shí)戰(zhàn)演練!

    4G模組Air724UG的軟件教程:KEYPAD示例!

    本回我要說的是低功耗4G模組Air724UG的KEYPAD示例,我已整理成文,特供大家參考。
    的頭像 發(fā)表于 11-30 09:44 ?237次閱讀
    4G<b class='flag-5'>模組</b><b class='flag-5'>Air724UG</b>的軟件教程:KEYPAD<b class='flag-5'>示例</b>!

    解讀Air724UG低功耗4G模組軟件的語音通話!

    本篇文章以Air724UG模組為例,解讀低功耗4G模組軟件的語音通話,呈現(xiàn)實(shí)用教程供大家參考。
    的頭像 發(fā)表于 12-09 09:39 ?169次閱讀
    解讀<b class='flag-5'>Air724UG</b>低功耗4G<b class='flag-5'>模組</b>軟件的語音通話!
    主站蜘蛛池模板: 精品水蜜桃久久久久久久| 免费看黄软件| 国产精品麻豆AV| AV无码国产精品午夜A片麻豆| 亚洲午夜精品久久久久久抢| 特级黑人三人共一女| 视频成人永久免费看| 色多多污污在线观看网站| 青柠电影高清在线观看| 青青草原影视| 日本高清不卡一区久久精品| 欧美zzzoooxxx| 欧美一级久久久久久久久大| 日本美女抠逼| 小货SAO边洗澡边CAO你动漫| 亚洲国产精品天堂在线播放 | 囯产精品一品二区三区| 丰满五十老女人性视频| 国产精品亚洲国产三区| 精品欧美小视频在线观看| 蜜臀AV精品一区二区三区| 青娱国产区在线| 色欲AV无码乱码精品国产| 亚洲 欧美 日韩 精品 自拍 | 欧美97色伦综合网| 色偷偷网址| 亚洲中文字幕乱倫在线| 99视频精品全部 国产| 国产精品久久久久一区二区三区| 久久99re热在线播放7| 日本激情在线| 最近中文字幕MV免费高清在线| 国产99精品在线观看| 免费国产久久啪久久爱| 亚洲免费在线观看视频| 高h全肉图| 日本888 xxxx| 97视频在线观看视频最新| 久久久久国产精品美女毛片| 我的漂亮朋友在线观看全集免费 | 旧里番6080在线观看|