rtos ==== 作者:吴永 更新时间:2020年8月11日 关键字:rtos、文件系统空间大小、定时器、闹钟、tick、fota升级、core版本、重启原因、开机原因 .. _rtos-1: rtos ---- 系统相关接口 +------+ | @[ | | TOC] | +------+ | ### | | rt | | os.r | | ecei | | ve() | +------+ | 接收 | | 消息 | +------+ | - | | 语法 | +------+ | ``m | | sg,m | | sgpa | | ra = | | rto | | s.re | | ceiv | | e(ti | | meou | | t)`` | +------+ | - | | 参数 | +------+ | \| | | 参数 | | \| | | 释义 | | \| | | \| | | ——- | | \| | | ———— | | ———— | | ———— | | ———— | | ———— | | \| | | \| | | tim | | eout | | \| | | tim | | eout | | 超 | | 时返 | | 回以 | | 毫秒 | | 为单 | | 位, | | 可以 | | 用#r | | tos. | | INF_ | | TIME | | OUT# | | 表示 | | 阻塞 | | 等待 | | 消息 | | \| | +------+ | - | | 返 | | 回值 | +------+ | 如果 | | msg | | 为 | | t | | able | | 类 | | 型, | | msg | | 根 | | 据不 | | 同的 | | 消息 | | ms | | g.id | | 会有 | | 不同 | | 的数 | | 据: | +------+ | 如果 | | msg | | 为 | | nu | | mber | | 类 | | 型, | | msg | | 根 | | 据不 | | 同的 | | 消息 | | msg | | 会 | | 有不 | | 同的 | | 数据 | +------+ | > | | 1.rt | | os.M | | SG_T | | IMER | | 定 | | 时器 | | 超时 | | 消息 | +------+ | msg. | | time | | r_id | | 或者 | | msg | | para | | 为 | | 超时 | | 的定 | | 时器 | | id | +------+ | >2. | | rtos | | .MSG | | _UAR | | T_RX | | DATA | | 串口 | | ATC | | 数据 | | 提醒 | +------+ | msg | | .uar | | t_id | | 或 | | 者m | | sgpa | | ra为 | | 收到 | | 的数 | | 据的 | | 串口 | | id或 | | 者at | | c,收 | | 到该 | | 消息 | | 后可 | | 以通 | | 过u | | art. | | read | | 接口 | | 读取 | | 数据 | +------+ | >3 | | .rto | | s.MS | | G_KE | | YPAD | | 键盘 | | 消息 | | ,必 | | 须初 | | 始化 | | 按键 | | (#rt | | os.i | | nit_ | | modu | | le#) | | 后才 | | 会有 | | 键盘 | | 消息 | +------+ | msg | | .pre | | ssed | | 按 | | 键按 | | 下/ | | 弹起 | +------+ | ms | | g.ke | | y_ma | | trix | | _row | | 按键 | | 所在 | | 行值 | +------+ | ms | | g.ke | | y_ma | | trix | | _col | | 按键 | | 所在 | | 列值 | +------+ | >4.r | | tos. | | WAIT | | _MSG | | _TIM | | EOUT | | 等待 | | 消息 | | 超时 | +------+ | >5. | | rtos | | .MSG | | _INT | | 中断 | | 消息 | +------+ | ms | | g.in | | t_id | | 中断 | | id | +------+ | ms | | g.in | | t_re | | snum | | 中断 | | pin | | 脚 | | 编号 | +------+ | >6. | | rtos | | .MSG | | _PMD | | 电源 | | 管理 | | 消息 | +------+ | msg | | .pre | | sent | | 电池 | | 在位 | | 状态 | +------+ | m | | sg.l | | evel | | 百 | | 分比 | | 0 | | -100 | +------+ | msg | | .vol | | tage | | 电池 | | 电压 | +------+ | msg | | .cha | | rger | | 充 | | 电器 | | 在位 | | 状态 | +------+ | m | | sg.s | | tate | | 充电 | | 状态 | | :0- | | 不在 | | 充电 | | 1-充 | | 电中 | | 2- | | 充电 | | 停止 | +------+ rtos.timer_start() ~~~~~~~~~~~~~~~~~~ 启动定时器 - 语法 ``rtos.timer_start(timer_id, timeout)`` - 参数 +----------+----------------------------------------------------------+ | 参数 | 释义 | +==========+==========================================================+ | timer_id | 定时器 id,可以是任意整数,定时器到时 msg.timer_id | | | 值为启动时定时器 | +----------+----------------------------------------------------------+ | timeout | 定时器延时时间以毫秒为单位 | +----------+----------------------------------------------------------+ - 返回值 无 -------------- rtos.timer_stop() ~~~~~~~~~~~~~~~~~ 停止定时器 - 语法 ``rtos.timer_stop(timer_id)`` - 参数 ======== ========================================== 参数 释义 ======== ========================================== timer_id 输入与启动定时器时定义的 id 即可停止定时器 ======== ========================================== - 返回值 无 +------+ | ### | | rto | | s.ti | | ck() | +------+ | 获取 | | 系统 | | tick | +------+ | - | | 语法 | +------+ | ``r | | tos. | | tick | | ()`` | +------+ | - | | 参数 | +------+ | 无 | +------+ | - | | 返 | | 回值 | +------+ | 系统 | | 启动 | | 后的 | | 计数 | | 个数 | | ,单 | | 位为 | | 5ms | +------+ rtos.set_alarm() ~~~~~~~~~~~~~~~~ 打开/关闭闹钟 - 语法 ``rtos.set_alarm(on,year,month,day,hour,min,sec)`` - 参数 ===== =================================== 参数 释义 ===== =================================== on 打开/关闭闹钟,1表示打开,0表示关闭 year 闹钟日期-年,如2020,表示2020年 month 闹钟日期-月,如8,表示8月 day 闹钟日期-日,如20,表示20号 hour 闹钟时间-小时,如10,表示10点 min 闹钟时间-分钟,如20,表示20分 sec 闹钟时间-秒,如20,表示20秒 ===== =================================== - 返回值 无 +------+ | ### | | rto | | s.se | | t_ti | | me() | +------+ | 设置 | | 系统 | | 时间 | +------+ | - | | 语法 | +------+ | `` | | rtos | | .set | | _tim | | e(ye | | ar,m | | onth | | ,day | | ,hou | | r,mi | | n,se | | c)`` | +------+ | - | | 参数 | +------+ | \| | | 参数 | | \| | | 释义 | | \| | | \| | | ——– | | \| | | —— | | ———— | | ———— | | ———— | | \| | | \|ye | | ar\| | | 日期 | | -年, | | 如20 | | 20, | | 表示 | | 2020 | | 年\| | | \ | | |mon | | th\| | | 日 | | 期- | | 月, | | 如8 | | ,表 | | 示8 | | 月\| | | \|da | | y|日 | | 期- | | 日, | | 如20 | | ,表 | | 示20 | | 号\| | | \|h | | our| | | 时间 | | -小 | | 时, | | 如10 | | ,表 | | 示10 | | 点\| | | \| | | min| | | 时间 | | -分 | | 钟, | | 如20 | | ,表 | | 示20 | | 分\| | | \|se | | c|时 | | 间- | | 秒, | | 如20 | | ,表 | | 示20 | | 秒\| | +------+ | - | | 返 | | 回值 | +------+ | 无 | +------+ rtos.poweron_reason() ~~~~~~~~~~~~~~~~~~~~~ 读取开机原因值 - 语法 ``reason=rtos.poweron_reason()`` - 参数 无 - 返回值 =============================== ======================== rtos. POWERON_KEY(=0) 按键开机 =============================== ======================== **rtos. POWERON_CHARGER(=1)** **充电开机** **rtos. POWERON_ALARM(=2)** **闹钟开机** **rtos. POWERON_RESTART(=3)** **软件(异常)重启开机** **rtos. POWERON_EXCEPTION(=4)** **看门狗重启** **5** **硬件重启** =============================== ======================== -------------- rtos.poweron() ~~~~~~~~~~~~~~ 是否启动 GSM 开机 - 语法 ``rtos.poweron(flag)`` - 参数 ==== ================================ 参数 释义 ==== ================================ flag 0 表示不启动系统;1 表示启动系统 ==== ================================ - 返回值 无 -------------- rtos.poweroff() ~~~~~~~~~~~~~~~ 软件关机 - 语法 ``rtos.poweroff([type])`` - 参数 ==== ======================================== 参数 释义 ==== ======================================== type 可选参数,默认为0; 0正常关机;1关机充电 ==== ======================================== - 返回值 无 -------------- rtos.restart() ~~~~~~~~~~~~~~ 软件重启 - 语法 ``rtos.restart()`` - 参数 无 - 返回值 无 -------------- rtos.sleep() ~~~~~~~~~~~~ 延时函数 - 语法 ``rtos.sleep(millisecond)`` - 参数 =========== ======================= 参数 释义 =========== ======================= millisecond 延时时间 ,以毫秒为单位 =========== ======================= - 返回值 无 -------------- rtos.get_env_usage() ~~~~~~~~~~~~~~~~~~~~ 获取 lua 任务消息队列的使用百分比 - 语法 ``percentage=rtos.get_env_usage()`` - 参数 无 - 返回值 percentage,百分比,例如使用了 80%,则 percentage 为 80 -------------- rtos.make_dir() ~~~~~~~~~~~~~~~ 创建目录 - 语法 ``rtos.make_dir(path)`` - 参数 ==== ========== 参数 释义 ==== ========== path 文件夹路径 ==== ========== - 返回值 布尔值 true表示创建成功,false表示失败 -------------- rtos.remove_dir() ~~~~~~~~~~~~~~~~~ 删除文件夹 - 语法 ``rtos.remove_dir(path)`` - 参数 ==== ========== 参数 释义 ==== ========== path 文件夹路径 ==== ========== - 返回值 true表示删除成功,false表示失败 -------------- rtos.get_fs_free_size() ~~~~~~~~~~~~~~~~~~~~~~~ 获取文件系统剩余空间 - 语法 ``rtos.get_fs_free_size()`` - 参数 无 - 返回值 文件系统剩余空间,单位Bytes -------------- rtos.get_fs_total_size() ~~~~~~~~~~~~~~~~~~~~~~~~ 获取文件系统总空间 - 语法 ``rtos.get_fs_total_size()`` - 参数 无 - 返回值 文件系统总大小,单位Bytes -------------- rtos.toint64() ~~~~~~~~~~~~~~ 将数字字符串转为int64类型数据 - 语法 ``rtos.toint64(str,typ)`` - 参数 ==== =============================================== 参数 释义 ==== =============================================== str 待转换的字符串 typ ``"big"``\ 或\ ``"little"``\ ,表示大端还是小端 ==== =============================================== - 返回值 int64数据的二进制内容字符串 -------------- rtos.get_version() ~~~~~~~~~~~~~~~~~~ 获取底层固件版本号 - 语法 ``rtos.get_version()`` - 参数 无 - 返回值 底层固件Core版本号,例如:\ **Luat_V0019_RDA8910** -------------- rtos.fota_start() ~~~~~~~~~~~~~~~~~ 远程升级初始化 - 语法 ``rtos.fota_start()`` - 参数 无 - 返回值 .. rubric:: 无 :name: 无 .. rubric:: rtos.fota_process() :name: rtos.fota_process 远程升级 - 语法 ``rtos.fota_process(data, len)`` - 参数 ==== ========================================================= 参数 释义 ==== ========================================================= data 从网络端下载的固件包,部分数据 ,string类型,二进制数据流 len 差分包的总长度,不是本次写入的数据长度 ==== ========================================================= - 返回值 ====== ================================ 返回值 释义 ====== ================================ 0 固件数据包处理正常,可以继续下载 -99 内存不足 -96 固件校验错误 -95 固件写入错误 ====== ================================ -------------- .. rubric:: rtos.fota_end() :name: rtos.fota_end 远程升级结束,不管升级成功还是失败,都要调用一下该接口。 - 语法 ``rtos.fota_end()`` - 参数 无 - 返回值 无 - 注意 **固件下载成功后,需要调用一下rtos.restart()接口,进行固件更新** +------+ | ### | | rtos | | .not | | ify_ | | sim_ | | dete | | ct() | +------+ | sim | | 卡热 | | 插拔 | +------+ | - | | 语法 | +------+ | ``rt | | os.n | | otif | | y_si | | m_de | | tect | | (nsi | | m,co | | nnec | | t)`` | +------+ | - | | 参数 | +------+ | \| | | 参数 | | \| | | 释义 | | \| | | \| | | ——– | | \| | | ———— | | ———— | | ———— | | ———— | | ———— | | \| | | \| | | ns | | im\| | | sim | | 卡nu | | mber | | ,si | | m0为 | | 1, | | sim | | 1为2 | | \| | | \| | | con | | nect | | \| | | 0 | | 代表 | | 拔卡 | | ,1 | | 代表 | | 插卡 | | \| | +------+ | - | | 返 | | 回值 | +------+ | 无 | +------+ | - | | 使用 | | 说明 | +------+ | ** | | 硬件 | | 上将 | | sim | | 卡的 | | 插拔 | | 和某 | | 个IO | | 关联 | | 起来 | | ,软 | | 件上 | | 将这 | | 个IO | | 配置 | | 为中 | | 断, | | 当s | | im卡 | | 插拔 | | 时, | | 产生 | | IO中 | | 断, | | 根据 | | 中断 | | 状态 | | ,调 | | 用rt | | os.n | | otif | | y_si | | m_de | | tect | | 接口 | | 来实 | | 现热 | | 插拔 | | 的检 | | 测** | +------+ rtos.on() ~~~~~~~~~ 注册外部消息的处理函数 外部消息的定义参考: https://luatdoc.papapoi.com/wiki/pages/1730.html https://luatdoc.papapoi.com/wiki/pages/1769.html 有定时器消息,串口消息,socket消息,音频播放消息等等 - 语法 ``rtos.on(msgId, cbFnc)`` - 参数 ===== ================== 参数 释义 ===== ================== msgId 外部消息ID cbFnc 外部消息的处理函数 ===== ================== - 返回值 无 - 使用说明 .. rubric:: **一般来说,用户在自己的应用脚本中不需要使用此接口,一些必须的外部消息处理逻辑在lib脚本中已经封装实现** :name: 一般来说用户在自己的应用脚本中不需要使用此接口一些必须的外部消息处理逻辑在lib脚本中已经封装实现 rtos.init_module() ~~~~~~~~~~~~~~~~~~ 初始化外设模块,目前只支持\ ``rtos.MOD_KEYPAD``\ ,对应的外部消息处理函数通过\ ``rtos.on``\ 注册。 - 语法 ``rtos.init_module(modId, ...)`` - 参数 ===== ========== 参数 释义 ===== ========== modId 模块ID … 初始化参数 ===== ========== - 返回值 无 - 使用说明 无 --------------