当前位置: 首页 > 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()
参考示例:示例

相关文章:

合宙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.time…...

MySQL建表和增添改查

1.创建一个名为mydb的数据库 mysql> show database mydb; 查询 mysql> show database mydb; 2.创建一个学生信息表 mysql> create table mydb.student_informtion( -> student_id int UNSIGNED NOT NULL PRIMARY KEY, //非空(不允许为空&#xff0…...

@Transactional 注解下,事务失效的七种场景

此文章为笔记,为阅读其他文章的感受、补充、记录、练习、汇总,非原创,感谢每个知识分享者。 文章目录 1、异常被捕获后没有抛出2、抛出非运行时异常3、方法内部直接调用4、新开启一个线程5、注解到private方法上6、数据库本身不支持7、事务传…...

chrome V3 插件开发 基础

目录 准备popup通信popup 发消息给 backgroundpopup 发消息给 content长期连接 如何页面上添加一个按钮?tabs.onUpdatedcontent-script.jsinject.js 右键菜单chrome.contextMenus举个例子添加关于报错(cannot create item with duplicate id XXX&#xf…...

【uniapp】uniapp自动导入自定义组件和设置分包:

文章目录 一、自动导入自定义组件:二、设置分包和预加载: 一、自动导入自定义组件: 【Volar 官网】https://github.com/vuejs/language-tools 二、设置分包和预加载: 【官方文档】https://uniapp.dcloud.net.cn/collocation…...

【深度学习MOT videos detect】Detect to Track and Track to Detect

论文:https://arxiv.org/abs/1710.03958 代码:https://github.com/feichtenhofer/Detect-Track 文章目录 Abstract1. Introduction2. Related work后面翻译略 Abstract 近期用于在视频中高精度检测和跟踪目标类别的方法越来越复杂,每年都变得…...

关于Neo4j的使用及其基本命令

关于Neo4j的使用 文章目录 关于Neo4j的使用1、启动方式2、创建新节点,节点内有属性3、创建关系4、查询节点5、查询关系6、删除两个节点的关系7、删除节点8、删除某个标签的全部关系9、某个节点添加属性10、删除节点某个属性 1、启动方式 进入bin目录: …...

【笔记】树状数组

【笔记】树状数组 目录 简介引入1. 直接暴力2. 维护前缀和数组总结 定义前置知识: lowbit ⁡ \operatorname{lowbit} lowbit 操作区间的表示方法操作单点修改前缀和查询任意区间查询 例题1: 单点修改,区间查询例题2: 区间修改,单点查询例题3:…...

vue全局组件自动注册直接使用,无需单独先引用注册再使用

目录结构: 本案例是在根目录下components文件夹测试的,文件位置项目内任意,确保在main.js挂载路径正确即可 1、新建文件夹(名字随意)zxy_components (放自己组件的地方) 2、在zxy_components文件夹下 !新建…...

【HarmonyOS】@ohos.request 上传下载的那些事儿

【关键字】 ohos.request、上传下载​ 【写在前面】 在进行HarmonyOS应用开发时,可能需要进行上传或下载文件功能开发,本文章主要进行上传下载相关功能介绍和一些注意事项及FAQ。 【上传开发步骤】 步骤1:上传下载接口需要申请ohos.permis…...

github版面混乱加载不出的解决办法

最近出现打开github 界面加载不成功,网页访问乱码,打开chrome的检查发现 github的github.githubassets.com 拒绝访问, 解法: 1.先打开hosts文件所在的目录C:\Windows\System32\drivers\etc 2.右键点击hosts文件-选择用记事本或者…...

dotNet 之数据库sqlite

Sqlite3是个特别好的本地数据库,体积小,无需安装,是写小控制台程序最佳数据库。NET Core是同样也是.NET 未来的方向。 **硬件支持型号 点击 查看 硬件支持 详情** DTU701 产品详情 DTU702 产品详情 DTU801 产品详情 DTU802 产品详情 D…...

走近ChatGPT与类似产品:原理解析与比较

目录 1. 引言1.1 技术的进步与自然语言处理1.2 ChatGPT的崭新概念 2. ChatGPT: 一览众山小2.1 GPT-3.5架构简介2.2 ChatGPT的学习与训练2.3 文本生成的工作原理 3. 市场上类似产品调研3.1 对话式人工智能产品分类3.2 文心一言3.3 讯飞星火 4. 应用前景与局限性展望4.1 ChatGPT的…...

HarmonyOS SDK开放能力,服务鸿蒙生态建设,打造优质应用体验

华为开发者大会2023(HDC.Together)于8月4日至6日在东莞松山湖举行,在HarmonyOS端云开放能力技术分论坛上,华为为广大开发者们介绍了HarmonyOS SDK开放能力在基础开发架构、功能特性等方面的变化之处,通过将常见的通用能…...

数字经济对产业结构升级和创业增长的影响(2011-2021年)

参照刘翠花(2022)的做法,对来自中国人口科学《数字经济对产业结构升级和创业增长的影响》一文中的基准回归部分进行复刻。文章从理论层面分析数字经济发展对产业结构升级、创业增长的影响及其机理,并利用2011-2021年中国省级面板数…...

GPT-4助力数据分析:提升效率与洞察力的未来关键技术 | 京东云技术团队

摘要 随着大数据时代的到来,数据分析已经成为企业和组织的核心竞争力。然而,传统的数据分析方法往往无法满足日益增长的数据分析需求的数量和复杂性。在这种背景下,ChatGPT-4作为一种先进的自然语言处理技术,为数据分析带来了革命…...

Zabbix6 对接飞书告警

文章目录 Zabbix对接飞书告警背景创建飞书群组Zabbix配置创建告警媒介类型创建动作用户关联飞书告警 Zabbix对接飞书告警 背景 运维 你看下他的进程是不是挂了,之前在9点28分有发消息的,这次没有发消息 哐哐哐的去看了一通,确实有个进程之前…...

Javascript异步编程的4种方法

你可能知道,Javascript语言的执行环境是"单线程"(single thread)。 所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一…...

【MySQL】表的内外连接

目录 一、内连接 二、外连接 1、左外连接 2、右外连接 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。 语法: select 字段 from 表1 i…...

详解Mysql——第一篇/连接查询

mysql的连接查询,相必在网上都能找到很多的教程,博主今天不做老话常谈,不走重复路线 1.建表 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id) – –课程编…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...