本文我們解析的是低功耗4G模組Air780E的LuatOS開發的數據打包解包,示例如下:
一、LuatOS string 庫pack和unpack接口
LuatOS string庫的pack和unpack是一個用于在Lua程序中進行二進制數據打包和解包操作的接口,支持多種數據類型和字節序格式,方便處理二進制協議和文件。
由于Lua中字符串幾乎可以用于存儲所有形式的數據,所以下面先系統介紹下Lua字符串的特點,方便習慣使用C語言編程的初學者系統的了解兩種語言在數據存儲方面的一些差異。
1.1 字節序的概念
字節序是指在計算機存儲或傳輸多字節數據時,字節的排列順序,通常分為大端序(big-endian,最高有效字節在前)和小端序(little-endian,最低有效字節在前)。
大端也常被稱作叫“網絡序”因為 TCP、UDP 網絡數據傳輸和存儲都使用這種格式,而一些像 STM32 等 ARM 單片機,則使用小端存儲格式;
1.2 Lua 中字符串存儲
Lua 中字符串可以存儲所有字節數據,包括“字符串中的可見和不可見字符”,這一點與 C 語言有很大區別;
1.3 Lua 中字符串的序號
注:Lua 中字符串首字節從序號 1 開始,而不像 C 語言是從序號 0 開始;并且 Lua 字符串有正數序號也有負數序號,這一點也與 C 語言不同;
二、演示功能概述
本文使用 Air780E 核心板,運用 LuatOS string 庫 pack 和 unpack 接口對二進制數據進行打包和解包操作。
三、準備硬件環境
3.1 Air780E 開發板
(注意:需要配套采購 4G 物聯網卡!)
3.2 TYPE-C 數據線
四、準備軟件環境
4.1 Luatools
Luatools日志打印與程序燒錄軟件下載:
https://docs.openluat.com/Luatools/
4.2 core 固件和源碼腳本
注:core 固件,是基礎環境,該固件由官方提供,用戶不可修改;源碼腳本,為應用程序,可由客戶自行修改
五、軟硬件資料
1、Air780E 開發板原理圖
打開 Air780E 產品手冊,訪問頁面中的 《EVB_Air780X_V1.6.zip》:
https://docs.openluat.com/air780e/product/
2、API 使用介紹說明
3、Air780E開發板使用說明
打開Air780E 產品手冊,訪問頁面中的 《開發板Core_Air780E使用說明 V1.0.5.pdf》
5.1 開發板按鈕與指示燈圖示與說明
5.2 硬件安裝與連接
5.2.1 SIM 卡安裝
5.2.2 實物連接圖
注:開發板與電腦通過 TYPE-C 線連接,用于通信與供電,所以必須使用具有 USB 通信功能的 TYPE-C 線才可以;
六、代碼示例介紹
6.1 完整程序清單
注:完整復制后保存為 main.lua,可直接使用
七、功能驗證
7.1 開機
按下圖所示通過TYPE-C線將開發板與電腦連接無誤后,開發板電源指示紅燈常亮,網絡指示燈滅:
此時按下開機鍵,約2秒后釋放,等待幾秒網絡指示綠燈常亮,即開機成功,如下圖:
此時電腦設備管理器中會發現下圖所示幾個設備,即代表開機成功!
7.2 打開 Luatool 軟件工具并進入項目管理測試頁面
7.3 按序號步驟創建項目
7.4 按如下步驟進行程序燒錄
注:如果出現下圖警告,請點“確認”(首次使用該軟件一定要升級到最新版本)
7.5 觀察下載過程后確認燒錄結果
7.6 關閉項目管理界面,回到調試頁面,觀察輸出
注:詳細日志輸出內容,在程序中有增強注釋說明,請詳細查看。
八、總結
至此,我們已使用 Air780E 開發板驗證了 LuatOS string 庫 pack 和 unpack 接口對二進制數據進行打包和解包的功能。
九、拓展說明
lua 5.3 之前,string 不支持這兩個接口,當時我們移植了 pack 庫,使用方法和 string 庫的兩個接口原理一樣,函數入口參數順序有少許差別,具體可以參考 api(https://docs.openluat.com/air780e/luatos/api/core/pack/),當前最新固件 string 已完全支持 pack 和 unpack 兩個接口,所以開發者可直接使用string這兩個方法即可。
分享完畢。
審核編輯 黃宇
-
物聯網
+關注
關注
2909文章
44557瀏覽量
372757 -
低功耗
+關注
關注
10文章
2396瀏覽量
103670 -
LuatOS
+關注
關注
0文章
76瀏覽量
1936
發布評論請先 登錄
相關推薦
評論