当前位置: 首页 > news >正文

合宙Air724UG LuatOS-Air script lib API--sys

sys
Table of Contents
sys
sys.restart®
sys.wait(ms)
sys.waitUntil(id, ms)
sys.waitUntilExt(id, ms)
sys.taskInit(fun, …)
sys.init(mode, lprfnc)
sys.timerStop(val, …)
sys.timerStopAll(fnc)
sys.timerStart(fnc, ms, …)
sys.timerLoopStart(fnc, ms, …)
sys.timerIsActive(val, …)
sys.subscribe(id, callback)
sys.unsubscribe(id, callback)
sys.publish(…)
rtos.on (id, handler)
sys.run()
sys
模块功能:Luat协程调度框架

sys.restart®
软件重启

参数
名称 传入值类型 释义
r string 重启原因,用户自定义,一般是string类型,重启后的trace中会打印出此重启原因
返回值

例子
sys.restart(‘程序超时软件重启’)
详细指南:指南

sys.wait(ms)
task任务延时函数

只能直接或者间接的被task任务主函数调用,如果定时器创建成功,则本task会挂起

参数
名称 传入值类型 释义
ms number 延时时间,单位毫秒,最小1,最大0x7FFFFFFF
实际上支持的最小超时时间是5毫秒,小于5毫秒的时间都会被转化为5毫秒
返回值
result,分为如下三种情况:
1、如果定时器创建失败,本task不会被挂起,直接返回nil
2、如果定时器创建成功,本task被挂起,超时时间到达后,会激活本task,返回nil
3、如果定时器创建成功,本task被挂起,在超时时间到达之前,其他业务逻辑主动激活本task,
返回激活时携带的可变参数(如果不是故意为之,可能是写bug了)

例子
task延时5秒:
sys.taskInit(function()
sys.wait(5000)
end)
详细指南和示例参考:指南 示例

sys.waitUntil(id, ms)
task任务条件等待函数(支持事件消息和定时器消息)

只能直接或者间接的被task任务主函数调用,调用本接口的task会挂起

参数
名称 传入值类型 释义
id string 消息ID,建议使用string类型
ms number 可选参数,默认为nil 延时时间,单位毫秒,最小1,最大0x7FFFFFFF
实际上支持的最小超时时间是5毫秒,小于5毫秒的时间都会被转化为5毫秒
返回值
result,data,分为如下三种情况:
1、如果存在超时时间参数:
(1)、在超时时间到达之前,如果收到了等待的消息ID,则result为true,data为消息ID携带的参数(可能是多个参数)
(2)、在超时时间到达之前,如果没收到等待的消息ID,则result为false,data为nil
2、如果不存在超时时间参数:如果收到了等待的消息ID,则result为true,data为消息ID携带的参数(可能是多个参数)
(1)、如果收到了等待的消息ID,则result为true,data为消息ID携带的参数(可能是多个参数)
(2)、如果没收到等待的消息ID,则task一直挂起
3、还存在一种特殊情况,本task挂起时,可能被task的外部应用逻辑给主动激活(如果不是故意为之,可能是写bug了)

例子
task延时120秒或者收到"SIM_IND"消息:
sys.taskInit(function()
local result, data = sys.waitUntil(“SIM_IND”,120000)
end)
详细指南和示例参考:指南 示例

sys.waitUntilExt(id, ms)
Task任务的条件等待函数扩展(包括事件消息和定时器消息等条件),只能用于任务函数中。

参数
名称 传入值类型 释义
id param 消息ID
ms number 等待超时时间,单位ms,最大等待126322567毫秒
返回值
message 接收到消息返回message,超时返回false
data 接收到消息返回消息参数

例子
result, data = sys.waitUntilExt(“SIM_IND”, 120000)
sys.taskInit(fun, …)
创建一个任务并且运行该任务

参数
名称 传入值类型 释义
fun param 任务主函数,激活task时使用
… param 任务主函数fun的可变参数
返回值
co 返回该任务的线程ID

例子
sys.taskInit(task1,‘a’,‘b’)
详细指南和示例参考:指南 示例

sys.init(mode, lprfnc)
Luat平台初始化

参数
名称 传入值类型 释义
mode param 充电开机是否启动GSM协议栈,1不启动,否则启动
lprfnc param 用户应用脚本中定义的“低电关机处理函数”,如果有函数名,则低电时,本文件中的run接口不会执行任何动作,否则,会延时1分钟自动关机
返回值

例子
sys.init(1,0)
参考示例:示例

sys.timerStop(val, …)
关闭sys.timerStart和sys.timerLoopStart创建的定时器

有两种方式可以唯一标识一个定时器:
1、定时器ID
2、定时器回调函数和可变参数

参数
名称 传入值类型 释义
val param 有两种形式:
1、为number类型时,表示定时器ID
2、为function类型时,表示定时器回调函数
… param 可变参数,当val为定时器回调函数时,此可变参数才有意义,表示定时器回调函数的可变回调参数
返回值
nil

例子
– 通过定时器ID关闭一个定时器:
local timerId = sys.timerStart(publicTimerCbFnc,8000,“second”)
sys.timerStop(timerId)
– 通过定时器回调函数和可变参数关闭一个定时器:
sys.timerStart(publicTimerCbFnc,8000,“first”)
sys.timerStop(publicTimerCbFnc,“first”)
详细指南和示例参考:指南 示例

sys.timerStopAll(fnc)
关闭sys.timerStart和sys.timerLoopStart创建的某个回调函数的所有定时器

参数
名称 传入值类型 释义
fnc function 定时器回调函数
返回值
nil

例子
– 关闭回调函数为publicTimerCbFnc的所有定时器
local function publicTimerCbFnc(tag)
log.info(“publicTimerCbFnc”,tag)
end
sys.timerStart(publicTimerCbFnc,8000,“first”)
sys.timerStart(publicTimerCbFnc,8000,“second”)
sys.timerStart(publicTimerCbFnc,8000,“third”)
sys.timerStopAll(publicTimerCbFnc)
详细指南和示例参考:指南 示例

sys.timerStart(fnc, ms, …)
创建并且启动一个单次定时器

有两种方式可以唯一标识一个定时器:
1、定时器ID
2、定时器回调函数和可变参数

参数
名称 传入值类型 释义
fnc param 定时器回调函数,必须存在,不允许为nil
当定时器超时时间到达时,回调函数的调用形式为fnc(…),其中…为回调参数
ms number 定时器超时时间,单位毫秒,最小1,最大0x7FFFFFFF
实际上支持的最小超时时间是5毫秒,小于5毫秒的时间都会被转化为5毫秒
… param 可变参数,回调函数fnc的回调参数
返回值
number timerId,创建成功返回定时器ID;创建失败返回nil

例子
– 创建一个5秒的单次定时器,回调函数打印"timerCb",没有可变参数:
sys.timerStart(function() log.info(“timerCb”) end, 5000)
– 创建一个5秒的单次定时器,回调函数打印"timerCb"和"test",可变参数为"test":
sys.timerStart(function(tag) log.info(“timerCb”,tag) end, 5000, “test”)
详细指南和示例参考:指南 示例

sys.timerLoopStart(fnc, ms, …)
创建并且启动一个循环定时器

有两种方式可以唯一标识一个定时器:
1、定时器ID
2、定时器回调函数和可变参数

参数
名称 传入值类型 释义
fnc param 定时器回调函数,必须存在,不允许为nil
当定时器超时时间到达时,回调函数的调用形式为fnc(…),其中…为回调参数
ms number 定时器超时时间,单位毫秒,最小1,最大0x7FFFFFFF
实际上支持的最小超时时间是5毫秒,小于5毫秒的时间都会被转化为5毫秒
… param 可变参数,回调函数fnc的回调参数
返回值
number timerId,创建成功返回定时器ID;创建失败返回nil

例子
– 创建一个5秒的循环定时器,回调函数打印"timerCb",没有可变参数:
sys.timerLoopStart(function() log.info(“timerCb”) end, 5000)
– 创建一个5秒的循环定时器,回调函数打印"timerCb"和"test",可变参数为"test":
sys.timerLoopStart(function(tag) log.info(“timerCb”,tag) end, 5000, “test”)
详细指南和示例参考:指南 示例

sys.timerIsActive(val, …)
判断“通过timerStart或者timerLoopStart创建的定时器”是否处于激活状态

参数
名称 传入值类型 释义
val param 定时器标识,有两种表示形式
1、number类型,通过timerStart或者timerLoopStart创建定时器时返回的定时器ID,此情况下,不需要传入回调参数…就能唯一标识一个定时器
2、function类型,通过timerStart或者timerLoopStart创建定时器时的回调函数,此情况下,如果存在回调参数,需要传入回调参数…才能唯一标识一个定时器
… param 回调参数,和“通过timerStart或者timerLoopStart创建定时器”的回调参数保持一致
返回值
status,定时器激活状态;根据val的表示形式,有不同的返回值:
1、val为number类型时:如果处于激活状态,则返回function类型的定时器回调函数;否则返回nil
2、val为function类型时:如果处于激活状态,则返回bool类型的true;否则返回nil

例子
– 定时器ID形式标识定时器的使用参考:
local timerId1 = sys.timerStart(function() end,5000)
sys.taskInit(function()
sys.wait(3000)
log.info(“after 3 senonds, timerId1 isActive?”,sys.timerIsActive(timerId1))
sys.wait(3000)
log.info(“after 6 senonds, timerId1 isActive?”,sys.timerIsActive(timerId1))
end)
– 回调函数和回调参数标识定时器的使用参考:
local function timerCbFnc2(tag)
log.info(“timerCbFnc2”,tag)
end
sys.timerStart(timerCbFnc2,5000,“test”)
sys.taskInit(function()
sys.wait(3000)
log.info(“after 3 senonds, timerCbFnc2 test isActive?”,sys.timerIsActive(timerCbFnc2,“test”))
sys.wait(3000)
log.info(“after 6 senonds, timerCbFnc2 test isActive?”,sys.timerIsActive(timerCbFnc2,“test”))
end)
详细指南和示例参考:指南 示例

sys.subscribe(id, callback)
订阅消息

参数
名称 传入值类型 释义
id param 消息id
callback param 消息回调处理
返回值

例子
subscribe(“NET_STATUS_IND”, callback)
详细指南和示例参考:指南 示例

sys.unsubscribe(id, callback)
取消订阅消息

参数
名称 传入值类型 释义
id param 消息id
callback param 消息回调处理
返回值

例子
unsubscribe(“NET_STATUS_IND”, callback)
详细指南和示例参考:指南 示例

sys.publish(…)
发布内部消息,存储在内部消息队列中

参数
名称 传入值类型 释义
… param 可变参数,用户自定义
返回值

例子
publish(“NET_STATUS_IND”)
详细指南和示例参考:指南 示例

rtos.on (id, handler)
注册rtos消息回调处理函数

参数
名称 传入值类型 释义
id number 消息类型id
handler param 消息处理函数
返回值

例子
rtos.on(rtos.MSG_KEYPAD, function(param) handle keypad message end)
详细指南和示例参考:指南 示例

sys.run()
run()从底层获取core消息并及时处理相关消息,查询定时器并调度各注册成功的任务线程运行和挂起

参数

返回值

例子
sys.run()
参考示例:示例

http://www.lryc.cn/news/121475.html

相关文章:

  • MySQL建表和增添改查
  • @Transactional 注解下,事务失效的七种场景
  • chrome V3 插件开发 基础
  • 【uniapp】uniapp自动导入自定义组件和设置分包:
  • 【深度学习MOT videos detect】Detect to Track and Track to Detect
  • 关于Neo4j的使用及其基本命令
  • 【笔记】树状数组
  • vue全局组件自动注册直接使用,无需单独先引用注册再使用
  • 【HarmonyOS】@ohos.request 上传下载的那些事儿
  • github版面混乱加载不出的解决办法
  • dotNet 之数据库sqlite
  • 走近ChatGPT与类似产品:原理解析与比较
  • HarmonyOS SDK开放能力,服务鸿蒙生态建设,打造优质应用体验
  • 数字经济对产业结构升级和创业增长的影响(2011-2021年)
  • GPT-4助力数据分析:提升效率与洞察力的未来关键技术 | 京东云技术团队
  • Zabbix6 对接飞书告警
  • Javascript异步编程的4种方法
  • 【MySQL】表的内外连接
  • 详解Mysql——第一篇/连接查询
  • uniapp获取屏幕宽度时 获取不到移动设备中内容盒子宽度
  • 篇十二:代理模式:控制对象访问
  • P1657 选书
  • 代码随想录第46天 | 139. 单词拆分、多重背包
  • Unreal View Model结合GAS使用
  • Spring-Cloud-Loadblancer详细分析_2
  • uniapp 左右滑动切换页面并切换tab
  • FinClip 支持小程序维度域名配置;桌面端体验活动进行中
  • 已有公司将ChatGPT集成到客服中心以增强用户体验
  • 108. 将有序数组转换为二叉搜索树
  • 视频分辨率: UXGA/SVGA/VGA/QVGA/QQVGA