# sys模块 | 状态 |最后更新 | API版本 | | ------ | ------ | ------ | | Active | 2019-11-14 | V1.00.00 | ## 描述 此模块提供对系统数据的部分访问。 ## 版本格式 让我们先定义一种版本格式`naïve`。 一个uint32的变量用于存储版本信息,更大的数字表示更新的版本, 当转化为用户可读字符串时,两个逗号分别插入到倒数第二个数字和倒数第四个数字处。例如,12345 (十进制) 转化后为 V1.23.4,V1.23.5比V1.23.4更新。 ## sys.gHWVer() ### 描述 以 `naïve` 格式获取系统的硬件版本。 ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | HW_VER | number| | 硬件版本 | ### 调用例 ```lua hwVer = sys.gHWVer() ``` ## sys.gFWVer() ### 描述 以 `naïve` 格式获取系统的固件版本。 ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | FW_VER | number| | 固件版本 | ### 调用例 ```lua fwVer = sys.gFaWVer() ``` ## sys.gIsUSBPowered() ### 描述 检查系统是否由5V独立USB电源供电。 ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | connected | boolean| | 是否 | ### Example call ```lua isConnected = sys.gIsUSBPowered() ``` ## sys.gTick() ### 描述 获取RTOS的Tick数。 ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | tick | number| | 从系统开机以来的Tick数(Tick频率为1000HZ) | ### 调用例 ```lua tick = sys.gTick() ``` ## sys.sLuaModDebug() ### 描述 设置是否启用lua API的调试输出。 这用于调试lua API本身,调试输出同样被输出到用户终端。 ### 参数 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | status | number| | 1为启用,0为禁用,默认为禁用 | ### 返回值 nil ### 调用例 ```lua sys.sLuaModDebug(1) ``` ## sys.gLuaAPIVer() ### 描述 以`naïve`格式获取lua API的版本。 ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | API_VER | number| | API版本 | ### 调用例 ```lua apiVer = sys.gLuaAPIVer() ``` ## sys.gTotalHeap() ### 描述 获取系统的堆的总大小。 ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | size | number| | 以字节为单位的堆大小 | ### 调用例 ```lua heapTotal = sys.gTotalHeap() ``` ## sys.gFreeHeap() ### 描述 获取当前空闲的堆大小。 ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | size | number| | 以字节为单位的空闲堆大小 | ### 调用例 ```lua heapFree = sys.gFreeHeap() ``` ## sys.gFreeHeapEver() ### 描述 获取自开机以来,最少的空闲堆大小,用于评估内存峰值使用量。 ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | size | number| | 以字节为单位的最小空闲堆大小 | ### 调用例 ```lua heapFreeEver = sys.gFreeHeapEver() ``` ## sys.gVDD() ### 描述 获取VDD电源轨的电压,这个值通常为3.3V ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | voltage | number| | 以伏特为单位的VDD电压 | ### 调用例 ```lua vdd = sys.gVDD() ``` ## sys.gBoardTempK() ### 描述 以开尔文为单位获取板载温度传感器的读数。 ### 参数 nil ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | temperature | number| | 以开尔文为单位的温度 | ### 调用例 ```lua temp = sys.gBoardTempK() ``` ## sys.verToString() ### 描述 将一个`naïve`格式的版本转化为用户可读的字符串。 ### 参数 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | <version> | number| | `naïve` | ### 返回值 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | readable | string| | 经过转化的版本字符串 | ### 调用例 ```lua print(sys.verToString(10000)) ``` ## sys.reset() ### 描述 执行一次系统复位。 ### 参数 nil ### 返回值 nil ### 调用例 ```lua sys.reset() ``` ## sys.gByteCode() ### 描述 转化一个`*.lua`的lua源文件到`*.lc`的字节码文件。 输出文件在输入文件同一目录内。 ### 参数 | 名称 | 类型 | 范围 | 用途 | | ------ | ------ | ------ | ------ | | <path> | string| | 源文件的路径 | | [option] | number| `sys.STRIP_DEBUG_INFO` `sys.RESERVE_DEBUG_INFO`|可选参数,指定是否去掉调试信息。缺省值为`sys.STRIP_DEBUG_INFO`。| ### 返回值 nil ### 调用例 ```lua sys.gByteCode("0:/lua/user/UI_Demo.lua") ``` ## 示例代码 ```lua --[[This is a demo for sys APIs. The output will be on the terminal. Version: 191111 Author: yanke928]] print("Hardware Version:",sys.verToString(sys.gHWVer())) print("Software Version:",sys.verToString(sys.gFWVer())) print("Lua API Version: ",sys.verToString(sys.gLuaAPIVer())) print("Is USB Powered: ",sys.gIsUSBPowered()) print("System Tick: ",sys.gTick()) print("Total Heap: ",sys.gTotalHeap()) print("Free Heap: ",sys.gFreeHeap()) print("Free Heap Ever: ",sys.gFreeHeapEver()) print("VDD Voltage: ",sys.gVDD()) print("Board Temp Kel: ",sys.gBoardTempK()) --[[ call sys.reset() to reboot.]] os.exit() ```