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

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

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

解讀版|Air780E軟件中C語言內(nèi)存數(shù)組的神秘面紗!

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

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


1、ZBUFF(C內(nèi)存數(shù)組)簡介

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

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

操作里面的元素時(shí),可以根據(jù)光標(biāo)進(jìn)行增刪改查。偏移方式有三種:從頭、當(dāng)前位置、末尾開始。常用參數(shù)如下:

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

2、演示功能概述

本demo將演示ZBUFF的創(chuàng)建、寫入數(shù)據(jù)、讀取數(shù)據(jù)、獲取zbuff長度、獲取光標(biāo)位置。

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

3.1 780E開發(fā)板一套,包括天線USB數(shù)據(jù)線

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

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

3.2 SIM

請準(zhǔn)備一張可正常上網(wǎng)的SIM卡,該卡可以是物聯(lián)網(wǎng)卡或您的個(gè)人手機(jī)卡。

特別提醒:請確保SIM卡未欠費(fèi)且網(wǎng)絡(luò)功能正常,以便順利進(jìn)行后續(xù)操作。

3.3 數(shù)據(jù)通信

typec接口USB數(shù)據(jù)線即可。

3.4 PC電腦

WINDOWS系統(tǒng)。

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

4.1 基本的下載調(diào)試工具

使用說明參考:Luatools下載和詳細(xì)使用;

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下載和使用教程-合宙模組資料中心

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

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

5.2 demo使用api介紹

zbuff.create(length,data,type)

作用:創(chuàng)建zbuff。

參數(shù)

參數(shù) 傳入值類型 解釋
length int 字節(jié)數(shù)
data any 可選參數(shù),number時(shí)為填充數(shù)據(jù),string時(shí)為填充字符串
type number 可選參數(shù),內(nèi)存類型??蛇x值:zbuff.HEAP_SRAM(內(nèi)部sram,默認(rèn)),zbuff.HEAP_PSRAM(外部psram),zbuff.HEAP_AUTO(自動(dòng)申請內(nèi)存)

返回值

返回值類型 解釋
object zbuff對象,創(chuàng)建失敗返回nil

buff:write(para,…)

作用:zbuff寫數(shù)據(jù)(從當(dāng)前指針位置開始;執(zhí)行后指針會(huì)向后移動(dòng))。

參數(shù)

參數(shù) 傳入值類型 解釋
para any 寫入buff的數(shù)據(jù)。string時(shí)為一個(gè)參數(shù),number時(shí)可為多個(gè)參數(shù)

返回值

返回值類型 解釋
number 數(shù)據(jù)成功寫入的長度

buff:read(length)

作用:zbuff讀數(shù)據(jù)(從當(dāng)前指針位置開始;執(zhí)行后指針會(huì)向后移動(dòng))

參數(shù)

參數(shù) 傳入值類型 解釋
length int 讀取buff中的字節(jié)數(shù)

返回值

返回值類型 解釋
string 讀取結(jié)果

buff:clear(num)

作用:zbuff清空數(shù)據(jù)(與當(dāng)前指針位置無關(guān);執(zhí)行后指針位置不變)

參數(shù)

參數(shù) 傳入值類型 解釋
num int 可選,默認(rèn)為0。要設(shè)置的值,不會(huì)改變指針位置

返回值

buff:seek(base,offset)

作用:zbuff設(shè)置光標(biāo)位置(可能與當(dāng)前指針位置有關(guān);執(zhí)行后指針會(huì)被設(shè)置到指定位置)

參數(shù)

參數(shù) 傳入值類型 解釋
offset int 偏移長度
base int 基點(diǎn),默認(rèn)zbuff.SEEK_SET??蛇x值:zbuff.SEEK_SET(文件開頭),zbuff.SEEK_CUR(當(dāng)前位置),zbuff.SEEK_END(文件尾)

返回值

返回值類型 解釋
int 設(shè)置光標(biāo)后從buff開頭計(jì)算起的位置

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

作用:將一系列數(shù)據(jù)按照格式字符轉(zhuǎn)化,并寫入(從當(dāng)前指針位置開始;執(zhí)行后指針會(huì)向后移動(dòng))

參數(shù)

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

返回值

返回值類型 解釋
int 成功寫入的數(shù)據(jù)長度

例子:

wKgaomcu7PmAT1HEAALYrHEazoY358.png

buff:unpack(format)

作用:將一系列數(shù)據(jù)按照格式字符讀取出來(從當(dāng)前指針位置開始;執(zhí)行后指針會(huì)向后移動(dòng))

參數(shù)

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

返回值

返回值類型 解釋
int 成功讀取的數(shù)據(jù)字節(jié)長度
any 按格式讀取的數(shù)據(jù)

buff:read類型()

作用:讀取一個(gè)指定類型的數(shù)據(jù)(從當(dāng)前指針位置開始;執(zhí)行后指針會(huì)向后移動(dòng))

參數(shù)

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

(浮點(diǎn)數(shù))F32、F64

返回值

返回值類型 解釋
number 讀取的數(shù)據(jù),越界則為nil

例如:

wKgaomcu7QyAfczlAADFvyPfCJ4307.png

buff:write類型(data)

作用:寫入一個(gè)指定類型的數(shù)據(jù)(從當(dāng)前指針位置開始;執(zhí)行后指針會(huì)向后移動(dòng))

參數(shù)

參數(shù) 傳入值類型 解釋
data number 待寫入的數(shù)據(jù)

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

(浮點(diǎn)數(shù))F32、F64

返回值

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

例如:

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

buff:len()

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

參數(shù)

返回值

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

buff:used()

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

參數(shù)

返回值

返回值類型 解釋
int 有效數(shù)據(jù)量大小

6代碼示例介紹

6.1 zbuff操作示例

6.1.1 創(chuàng)建zbuff,以c語言數(shù)組的形式操作zbuff

wKgZomcu7R2AHfG0AAFqbJ11NKI303.png

6.1.2 以io的形式操作

wKgaomcu7SuATA6rAAPRsepS4p8108.png

6.1.3 清除zbuff

wKgZoWcu7VGASH34AAEZG3Zao-M139.png

6.1.4 以pack庫的形式寫入或讀取數(shù)據(jù)

wKgaoWcu7V-ADbajAAGvIsV2eqU136.png

6.1.5 按類型讀寫數(shù)據(jù)

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

讀取的時(shí)候,記得注意下標(biāo)位置。

6.1.6 取出指定區(qū)間的數(shù)據(jù)

wKgaoWcu7XKAWy3PAADY2UyZj3M085.png

6.1.7 獲取創(chuàng)建的zbuff的長度,和指針當(dāng)前位置

wKgaoWcu7Y6AcL15AAFPW2ufNIg934.png

6.1.8 測試F32(32位單精度浮點(diǎn)數(shù))類型數(shù)據(jù)的讀寫

wKgZomcu7hCAaHRJAAIs269Geik520.png

7、功能驗(yàn)證

測試zbuff的使用

wKgaomcu7ieAIsO-AAhIJaLYts0563.png

8、總結(jié)

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

9常見問題

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

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

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

    關(guān)注

    8

    文章

    3025

    瀏覽量

    74047
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136824
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    417

    瀏覽量

    25947
收藏 人收藏

    評論

    相關(guān)推薦

    【合宙Air780E開發(fā)板趣味應(yīng)用】Air780E開發(fā)板方言打麻將

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

    基于Air780E的遠(yuǎn)程報(bào)警器方案

    恒博A780E-S智能遠(yuǎn)程報(bào)警器方案板,基于合宙低功耗4G Cat.1模組Air780E設(shè)計(jì),支持LuatOS二次開發(fā),無需額外添加單片機(jī);可以幫助行業(yè)客戶快速搭建遠(yuǎn)程報(bào)警產(chǎn)品及其配套系統(tǒng),并提供客戶端軟件服務(wù)。
    發(fā)表于 03-01 11:51 ?1891次閱讀

    Air780E硬件設(shè)計(jì)手冊

    電子發(fā)燒友網(wǎng)站提供《Air780E硬件設(shè)計(jì)手冊.pdf》資料免費(fèi)下載
    發(fā)表于 04-14 09:57 ?20次下載

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

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機(jī)問題如何分析簡介本文檔適用于合宙Air780E
    的頭像 發(fā)表于 07-19 15:37 ?669次閱讀
    <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模塊遇到死機(jī)問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到內(nèi)存死機(jī)如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到內(nèi)存死機(jī)如何分析簡介本文檔適用于合宙
    的頭像 發(fā)表于 07-19 16:07 ?530次閱讀
    <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'>內(nèi)存</b>死機(jī)如何分析

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

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機(jī)問題如何分析簡介本文檔適用于合宙Air780E、
    的頭像 發(fā)表于 08-01 17:27 ?802次閱讀
    合宙 <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模塊遇到死機(jī)問題如何分析

    合宙Air780E硬件設(shè)計(jì)手冊02

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

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

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

    Air780E如何發(fā)送SMS?一文詳解!

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

    奇妙的Air780E之UDP應(yīng)用示例大賞!

    關(guān)于UDP是一種無連接的、不可靠的傳輸層協(xié)議,主要用于實(shí)現(xiàn)網(wǎng)絡(luò)的快速通訊,我們今天將把Air780E的UDP應(yīng)用分析透徹。
    的頭像 發(fā)表于 11-04 09:25 ?353次閱讀
    奇妙的<b class='flag-5'>Air780E</b>之UDP應(yīng)用示例大賞!

    UDP應(yīng)用詳解:Air780E軟件的全面手冊

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

    Air780E模組AT指令下的MQTT應(yīng)用:技術(shù)指南

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

    Air780E軟件zlib解壓示例的詳細(xì)展示!

    今天我?guī)氲氖?b class='flag-5'>Air780E 軟件 zlib 解壓示例,希望大家有所收獲。
    的頭像 發(fā)表于 11-17 10:01 ?246次閱讀
    <b class='flag-5'>Air780E</b><b class='flag-5'>軟件</b><b class='flag-5'>中</b>zlib解壓示例的詳細(xì)展示!

    Air780E模組的ADC之旅 LuatOS開發(fā)實(shí)例

    今天學(xué)習(xí)一個(gè)新的示例,關(guān)于Air780E模組LuatOS開發(fā)的ADC應(yīng)用實(shí)例,希望大家有所收獲。
    的頭像 發(fā)表于 11-11 09:33 ?208次閱讀
    <b class='flag-5'>Air780E</b>模組的ADC之旅  LuatOS開發(fā)實(shí)例

    低功耗模組Air780E的AT指令:FTP示例!

    本文說的是關(guān)于4G模組AT指令的FTP示例,以Air780E為例,希望大家有所收獲。
    的頭像 發(fā)表于 11-30 09:40 ?194次閱讀
    低功耗模組<b class='flag-5'>Air780E</b>的AT指令:FTP示例!