很多朋友都問我不會Lua又想open開發,怎么辦?我的答復是Lua先學起來,再看LuatOS具體應用示例,上手極快,感興趣的朋友們,可以參照本文一起學。
Lua視頻教程
無廢話30分鐘Lua快速入門教程:
https://b23.tv/DMaAHQ1
LuatOS文檔教程
資料中心:
https://docs.openluat.com
LuatOS支持的主要模組型號:
Air780E/Air780EX/Air780EP/Air780EPS/
Air201…
可通過資料中心查看對應型號模組的LuatOS二次開發快速入門教程,內容持續更新中。
今天,我們先一起看看LuatOS基礎知識:
LuatOS系統通過Lua虛擬機,支持Lua腳本在4G模組的的運行。LuatOS系統還實現了一套多任務的機制,這套機制是在sys庫實現的。
一、sys模塊簡述
sys模塊利用了Lua語言的協程機制,實現了實時多任務的調度。開發者可以在業務代碼中,新建多個任務,而不用像單片機的開發方式一樣,只能用定時器進行延時。
在開發LuatOS業務代碼時,需要在代碼中引用sys庫(_G.sys=require("sys")),并且在代碼的最后一行,調用sys.run()以啟動主程序,使得框架內的任務代碼會在sys.run()中運行。
二、sys模塊的實時多任務機制詳解
01.創建多個并行的任務
如下代碼創建了兩個任務,每個任務都是一個循環,只要循環不結束,任務就一直在運行。
02.多任務之間互相等待
通過sys模塊的publish和waitUntil調用,實現多個任務之間的同步。
03.多任務之間互相等待并傳遞數據
04.傳統定時器
三、sys庫接口文檔
01.sys.wait(ms)
Task任務延時函數,只能用于任務函數中。
參數:
返回值:
定時結束返回nil,被其他線程喚起返回調用線程傳入的參數。
例子:
sys.wait(30)
02.sys.waitUntil(id, ms)
Task任務的條件等待函數(包括事件消息和定時器消息等條件),只能用于任務函數中。
參數:
返回值:
result接收到消息返回true,超時返回false data,接收到消息返回消息參數。
例子:
result, data = sys.waitUntil("SIM_IND", 120000)
03.sys.waitUntilExt(id, ms)
Task任務的條件等待函數擴展(包括事件消息和定時器消息等條件),只能用于任務函數中。
參數:
返回值:
message接收到消息返回message,超時返回false data,接收到消息返回消息參數。
例子:
result, data = sys.waitUntilExt("SIM_IND", 120000)
04.sys.taskInit(fun, ...)
創建一個任務線程,在模塊最末行調用該函數并注冊模塊中的任務函數,main.lua導入該模塊即可。
參數:
返回值:
co返回該任務的線程號。
例子:
sys.taskInit(task1,'a','b')
05.sys.timerStop(val, ...)
關閉定時器。
參數:
返回值:
無
例子:
timerStop(1)
06.sys.timerStopAll(fnc)
關閉同一回調函數的所有定時器。
參數:
返回值:
無
例子:
timerStopAll(cbFnc)
07.sys.timerStart(fnc, ms, ...)
開啟一個定時器。
參數:
返回值:
number定時器ID,如果失敗,返回nil。
例子:
08.sys.timerLoopStart(fnc, ms, ...)
開啟一個循環定時器。
參數:
返回值:
number定時器ID,如果失敗,返回nil。
例子:
09.sys.timerIsActive(val, ...)
判斷某個定時器是否處于開啟狀態。
參數:
返回值:
number開啟狀態返回true,否則nil。
例子:
10.sys.subscribe(id, callback)
訂閱消息
參數:
返回值:
無
例子:
subscribe("NET_STATUS_IND", callback)
11.sys.unsubscribe(id, callback)
取消訂閱消息
參數:
返回值:
無
例子:
unsubscribe("NET_STATUS_IND", callback)
12.sys.publish(...)
發布內部消息,存儲在內部消息隊列中。
參數:
返回值:
無
例子:
publish("NET_STATUS_IND")
13.sys.run()
從底層獲取core消息并及時處理相關消息,查詢定時器并調度各注冊成功的任務線程運行和掛起。
參數:無
返回值:無
例子:sys.run()
今天的內容就分享到這里了
審核編輯 黃宇
-
開發
+關注
關注
0文章
370瀏覽量
40842 -
Open
+關注
關注
0文章
18瀏覽量
11075 -
Lua語言
+關注
關注
0文章
9瀏覽量
1491
發布評論請先 登錄
相關推薦
評論