当前位置: 首页 > 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) – –课程编…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制&#xff0…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...