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

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...