精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

解讀版|Air780E軟件中C語言內存數組的神秘面紗!

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2024-11-17 10:00 ? 次閱讀

今天我們來揭開Air780E 軟件中 C 語言內存數組的神秘面紗,希望有所收獲。


1、ZBUFF(C內存數組)簡介

zbuff庫可以用c風格直接操作(下標從0開始),例如buff[0]=buff[3]

可以在sram上或者psram上申請空間,也可以自動申請(如存在psram則在psram進行申請,如不存在或失敗則在sram進行申請)。

操作里面的元素時,可以根據光標進行增刪改查。偏移方式有三種:從頭、當前位置、末尾開始。常用參數如下:

常量 類型 解釋
zbuff.SEEK_SET number 以頭為基點
zbuff.SEEK_CUR number 以當前位置為基點
zbuff.SEEK_END number 以末尾為基點
zbuff.HEAP_AUTO number 自動申請
(如存在psram,則在psram進行申請,
如不存在或失敗則在sram進行申請)
zbuff.HEAP_SRAM number 在sram申請
zbuff.HEAP_PSRAM number 在psram申請

2、演示功能概述

本demo將演示ZBUFF的創建、寫入數據、讀取數據、獲取zbuff長度、獲取光標位置。

3、準備硬件環境

3.1 780E開發板一套,包括天線USB數據線

此核心板的詳細使用說明參考:
https://docs.openluat.com/air780e/product/

Air780E產品手冊中的<<開發板Core_Air780E使用說明V1.0.5.pdf>>,X.X.X指版本號;核心板使用過程中遇到任何問題,可以直接參考這份使用說明pdf文檔。

3.2 SIM

請準備一張可正常上網的SIM卡,該卡可以是物聯網卡或您的個人手機卡。

特別提醒:請確保SIM卡未欠費且網絡功能正常,以便順利進行后續操作。

3.3 數據通信

typec接口USB數據線即可。

3.4 PC電腦

WINDOWS系統。

4、準備軟件環境

4.1 基本的下載調試工具

使用說明參考:Luatools下載和詳細使用;

5、ZBUFF操作軟硬件資料

5.1 文檔和工具:

780E模塊使用固件:SDK&Demo-合宙文檔中心,本demo使用的固件版本是:

LuatOS-SoC_V1112_EC618_FULL.soc

教程使用的demo:

https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/zbuff

將固件和腳本燒錄到模塊中:Luatools下載和使用教程-合宙模組資料中心

源碼和固件已打包,如下所示:點我,下載完整壓縮文件包

zbuff-全部api地址,如果只看本demo的api直接看下面的5.2demo使用api介紹即可。

5.2 demo使用api介紹

zbuff.create(length,data,type)

作用:創建zbuff。

參數

參數 傳入值類型 解釋
length int 字節數
data any 可選參數,number時為填充數據,string時為填充字符串
type number 可選參數,內存類型。可選值:zbuff.HEAP_SRAM(內部sram,默認),zbuff.HEAP_PSRAM(外部psram),zbuff.HEAP_AUTO(自動申請內存)

返回值

返回值類型 解釋
object zbuff對象,創建失敗返回nil

buff:write(para,…)

作用:zbuff寫數據(從當前指針位置開始;執行后指針會向后移動)。

參數

參數 傳入值類型 解釋
para any 寫入buff的數據。string時為一個參數,number時可為多個參數

返回值

返回值類型 解釋
number 數據成功寫入的長度

buff:read(length)

作用:zbuff讀數據(從當前指針位置開始;執行后指針會向后移動)

參數

參數 傳入值類型 解釋
length int 讀取buff中的字節數

返回值

返回值類型 解釋
string 讀取結果

buff:clear(num)

作用:zbuff清空數據(與當前指針位置無關;執行后指針位置不變)

參數

參數 傳入值類型 解釋
num int 可選,默認為0。要設置的值,不會改變指針位置

返回值

buff:seek(base,offset)

作用:zbuff設置光標位置(可能與當前指針位置有關;執行后指針會被設置到指定位置)

參數

參數 傳入值類型 解釋
offset int 偏移長度
base int 基點,默認zbuff.SEEK_SET。可選值:zbuff.SEEK_SET(文件開頭),zbuff.SEEK_CUR(當前位置),zbuff.SEEK_END(文件尾)

返回值

返回值類型 解釋
int 設置光標后從buff開頭計算起的位置

buff:pack(format,val1,val2,…)

作用:將一系列數據按照格式字符轉化,并寫入(從當前指針位置開始;執行后指針會向后移動)

參數

參數 傳入值類型 解釋
format string 后面數據的格式(符號含義見示例)
val val 傳入的數據,可以為多個數據

返回值

返回值類型 解釋
int 成功寫入的數據長度

例子:

wKgaomcu7PmAT1HEAALYrHEazoY358.png

buff:unpack(format)

作用:將一系列數據按照格式字符讀取出來(從當前指針位置開始;執行后指針會向后移動)

參數

參數 傳入值類型 解釋
format string 數據的格式(符號含義見pack示例)

返回值

返回值類型 解釋
int 成功讀取的數據字節長度
any 按格式讀取的數據

buff:read類型()

作用:讀取一個指定類型的數據(從當前指針位置開始;執行后指針會向后移動)

參數

類型可為:(前綴I指有符號位,U指無符號位,后面的數字指有幾位)I8、U8、I16、U16、I32、U32、I64、U64。

(浮點數)F32、F64

返回值

返回值類型 解釋
number 讀取的數據,越界則為nil

例如:

wKgaomcu7QyAfczlAADFvyPfCJ4307.png

buff:write類型(data)

作用:寫入一個指定類型的數據(從當前指針位置開始;執行后指針會向后移動)

參數

參數 傳入值類型 解釋
data number 待寫入的數據

寫入類型,可為:(前綴I指有符號位,U指無符號位,后面的數字指有幾位)I8、U8、I16、U16、I32、U32、I64、U64。

(浮點數)F32、F64

返回值

返回值類型 解釋
number 成功寫入的長度

例如:

locallen=buff:writeI8(10)locallen=buff:writeU32(1024)

buff:len()

作用:獲取zbuff對象的長度(與當前指針位置無關;執行后指針位置不變)

參數

返回值

返回值類型 解釋
int zbuff對象的長度

buff:used()

作用:獲取zbuff中最后一個數據位置指針到首地址的偏移量,表示zbuff內已有有效數據量大小。注意,此值不同于分配的空間大小,seek()會改變最后一個數據位置指針,也會影響used()的返回值。

參數

返回值

返回值類型 解釋
int 有效數據量大小

6代碼示例介紹

6.1 zbuff操作示例

6.1.1 創建zbuff,以c語言數組的形式操作zbuff

wKgZomcu7R2AHfG0AAFqbJ11NKI303.png

6.1.2 以io的形式操作

wKgaomcu7SuATA6rAAPRsepS4p8108.png

6.1.3 清除zbuff

wKgZoWcu7VGASH34AAEZG3Zao-M139.png

6.1.4 以pack庫的形式寫入或讀取數據

wKgaoWcu7V-ADbajAAGvIsV2eqU136.png

6.1.5 按類型讀寫數據

讀取類型可為:I8、U8、I16、U16、I32、U32、I64、U64、F32、F64

讀取的時候,記得注意下標位置。

6.1.6 取出指定區間的數據

wKgaoWcu7XKAWy3PAADY2UyZj3M085.png

6.1.7 獲取創建的zbuff的長度,和指針當前位置

wKgaoWcu7Y6AcL15AAFPW2ufNIg934.png

6.1.8 測試F32(32位單精度浮點數)類型數據的讀寫

wKgZomcu7hCAaHRJAAIs269Geik520.png

7、功能驗證

測試zbuff的使用

wKgaomcu7ieAIsO-AAhIJaLYts0563.png

8、總結

本示例介紹了zbuff的作用和用法。

9常見問題

9.1 先buff:write(0x12),再設置光標到正確位置后,使用buff:read(1)讀取不到數據。

直接讀取是不可見字符,要使用buff:read(1):toHex()讀取數據。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3004

    瀏覽量

    73900
  • C語言
    +關注

    關注

    180

    文章

    7601

    瀏覽量

    136251
  • 數組
    +關注

    關注

    1

    文章

    416

    瀏覽量

    25912
收藏 人收藏

    評論

    相關推薦

    【合宙Air780E開發板趣味應用】Air780E開發板方言打麻將

    Air780E音頻擴展板以及喇叭 ,可輕松實現趣味TTS+AMR+MP3語音播放功能。更更更讓開發者心顫的是,合宙還搞了個音頻擴展板使用創意視頻大賽,想要進一步從開發者腦細胞榨汁:然而這還不夠,這真的不夠,合宙
    發表于 01-04 13:45

    基于Air780E的遠程報警器方案

    恒博A780E-S智能遠程報警器方案板,基于合宙低功耗4G Cat.1模組Air780E設計,支持LuatOS二次開發,無需額外添加單片機;可以幫助行業客戶快速搭建遠程報警產品及其配套系統,并提供客戶端軟件服務。
    發表于 03-01 11:51 ?1859次閱讀

    Air780E硬件設計手冊

    電子發燒友網站提供《Air780E硬件設計手冊.pdf》資料免費下載
    發表于 04-14 09:57 ?20次下載

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析簡介本文檔適用于合宙Air780E
    的頭像 發表于 07-19 15:37 ?595次閱讀
    <b class='flag-5'>Air780E</b>/<b class='flag-5'>Air780</b>EP/<b class='flag-5'>Air780</b>EQ/<b class='flag-5'>Air</b>201模塊遇到死機問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到內存死機如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到內存死機如何分析簡介本文檔適用于合宙
    的頭像 發表于 07-19 16:07 ?486次閱讀
    <b class='flag-5'>Air780E</b>/<b class='flag-5'>Air780</b>EP/<b class='flag-5'>Air780</b>EQ/<b class='flag-5'>Air</b>201模塊遇到<b class='flag-5'>內存</b>死機如何分析

    合宙 Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析簡介本文檔適用于合宙Air780E
    的頭像 發表于 08-01 17:27 ?700次閱讀
    合宙 <b class='flag-5'>Air780E</b>/<b class='flag-5'>Air780</b>EP/<b class='flag-5'>Air780</b>EQ/<b class='flag-5'>Air</b>201模塊遇到死機問題如何分析

    合宙Air780E硬件設計手冊02

    合宙低功耗4G模組Air780E硬件設計介紹
    的頭像 發表于 09-06 12:02 ?408次閱讀
    合宙<b class='flag-5'>Air780E</b>硬件設計手冊02

    如何使用Air780E開發板?看這篇就夠了!

    Air780E 模塊進行性能評估,功能調試,軟件開發等用途 二、開發板配置 IO 口默認電平 3.3V (1.8V 可調) 支持 USB 5V 直接供電 自彈式 Micro SIM 卡座 一代 IPEX 天線
    的頭像 發表于 10-23 17:07 ?301次閱讀
    如何使用<b class='flag-5'>Air780E</b>開發板?看這篇就夠了!

    從箱子里找出來的示例:Air780E軟件指南之TCP應用

    今天翻箱倒柜,把塵封已久的關于Air780E軟件指南之TCP應用教程翻出來給大家展示展示:讓我從概述、環境準備、問題等方面來給大家說清楚。
    的頭像 發表于 11-02 11:58 ?343次閱讀
    從箱子里找出來的示例:<b class='flag-5'>Air780E</b><b class='flag-5'>軟件</b>指南之TCP應用

    Air780E如何發送SMS?一文詳解!

    ?今天一起來學習使用合宙低功耗4G模組Air780E發送SMS短消息: 一、SMS簡介 SMS(短消息服務,ShortMessageService)功能主要用于在蜂窩網絡傳輸短消息。 在4G網絡
    的頭像 發表于 11-03 08:22 ?220次閱讀
    <b class='flag-5'>Air780E</b>如何發送SMS?一文詳解!

    奇妙的Air780E之UDP應用示例大賞!

    關于UDP是一種無連接的、不可靠的傳輸層協議,主要用于實現網絡的快速通訊,我們今天將把Air780E的UDP應用分析透徹。
    的頭像 發表于 11-04 09:25 ?246次閱讀
    奇妙的<b class='flag-5'>Air780E</b>之UDP應用示例大賞!

    UDP應用詳解:Air780E軟件的全面手冊

    了解Air780E軟件UDP應用全面手冊,永享編程幸福人生。
    的頭像 發表于 11-05 12:31 ?151次閱讀
    UDP應用詳解:<b class='flag-5'>Air780E</b><b class='flag-5'>軟件</b>的全面手冊

    Air780E模組AT指令下的MQTT應用:技術指南

    今天我要講的是Air780E模組AT指令下的MQTT應用,希望對大家有所幫助。
    的頭像 發表于 11-07 14:02 ?235次閱讀
    <b class='flag-5'>Air780E</b>模組AT指令下的MQTT應用:技術指南

    Air780E軟件zlib解壓示例的詳細展示!

    今天我帶入的是Air780E 軟件 zlib 解壓示例,希望大家有所收獲。
    的頭像 發表于 11-17 10:01 ?173次閱讀
    <b class='flag-5'>Air780E</b><b class='flag-5'>軟件</b><b class='flag-5'>中</b>zlib解壓示例的詳細展示!

    Air780E模組的ADC之旅 LuatOS開發實例

    今天學習一個新的示例,關于Air780E模組LuatOS開發的ADC應用實例,希望大家有所收獲。
    的頭像 發表于 11-11 09:33 ?151次閱讀
    <b class='flag-5'>Air780E</b>模組的ADC之旅  LuatOS開發實例