API/computer/zh: Difference between revisions
Jump to navigation
Jump to search
imported>OCDoc Import Imported from legacy OpenComputers documentation at ocdoc.cil.li |
Clean up Markdown artifacts from DokuWiki migration |
||
| Line 1: | Line 1: | ||
= Computer(电脑) API = | = Computer(电脑) API = | ||
此API主要提供了关于正在运行Lua state的电脑的信息,例如其地址和运行时间。API中还包含了用于用户管理的函数。此API中的函数可以从属于 | 此API主要提供了关于正在运行Lua state的电脑的信息,例如其地址和运行时间。API中还包含了用于用户管理的函数。此API中的函数可以从属于<code>os</code>API,但是为了保持“整洁”,这些函数归类为单独的API。 | ||
* | * <code>computer.address(): string</code> | ||
<pre>此电脑的[[:component:component_access:zh|组件地址]]。 | <pre>此电脑的[[:component:component_access:zh|组件地址]]。 | ||
</pre> | </pre> | ||
* | * <code>computer.tmpAddress(): string</code> | ||
<pre>此电脑的临时文件系统组件地址(如果有),用于在启动时挂载此文件系统。 | <pre>此电脑的临时文件系统组件地址(如果有),用于在启动时挂载此文件系统。 | ||
</pre> | </pre> | ||
* | * <code>computer.freeMemory(): number</code> | ||
<pre>当前未使用的内存大小,单位为字节。如果此数值接近0,那么你的电脑可能会很快因为内存不足而崩溃(报出“out of memory”错误)。请注意,为了运行OpenOS,高度建议用户安装1条或以上1.5级内存条。系统能用单条1级内存启动,但很快就容易内存不足。 | <pre>当前未使用的内存大小,单位为字节。如果此数值接近0,那么你的电脑可能会很快因为内存不足而崩溃(报出“out of memory”错误)。请注意,为了运行OpenOS,高度建议用户安装1条或以上1.5级内存条。系统能用单条1级内存启动,但很快就容易内存不足。 | ||
</pre> | </pre> | ||
* | * <code>computer.totalMemory(): number</code> | ||
<pre>此电脑安装的内存总量,单位为字节。 | <pre>此电脑安装的内存总量,单位为字节。 | ||
</pre> | </pre> | ||
* | * <code>computer.energy(): number</code> | ||
<pre>电脑所在网络中当前可用的能量数量。对机器人而言是机器人自己的能量/燃料量。 | <pre>电脑所在网络中当前可用的能量数量。对机器人而言是机器人自己的能量/燃料量。 | ||
</pre> | </pre> | ||
* | * <code>computer.maxEnergy(): number</code> | ||
<pre>电脑所在网络中能够存储的最大能量数量。对机器人而言是机器人的内置能量缓存大小(可以在机器人的GUI中查看)。 | <pre>电脑所在网络中能够存储的最大能量数量。对机器人而言是机器人的内置能量缓存大小(可以在机器人的GUI中查看)。 | ||
</pre> | </pre> | ||
* | * <code>computer.uptime(): number</code> | ||
<pre>此电脑运行的时间,单位为现实世界的秒。计算方法为自电脑启动以来游戏世界经过的时间——意味着游戏暂停时此数值不会增长。 | <pre>此电脑运行的时间,单位为现实世界的秒。计算方法为自电脑启动以来游戏世界经过的时间——意味着游戏暂停时此数值不会增长。 | ||
</pre> | </pre> | ||
* | * <code>computer.shutdown([reboot: boolean])</code> | ||
<pre> | <pre>关闭电脑。如果reboot为true也可以重启电脑,重启即先关机再自动启动。此函数不会有返回值。 | ||
下面的样例将会在电脑运行至少300秒(5分钟)后重启电脑。 | 下面的样例将会在电脑运行至少300秒(5分钟)后重启电脑。 | ||
</pre> | </pre> | ||
<syntaxhighlight lang="lua"> | |||
local computer = require("computer") if computer.uptime() >= 300 then | |||
computer.shutdown(true) | |||
</ | |||
end | |||
</syntaxhighlight> | |||
* | * <code>computer.getBootAddress():string</code> | ||
<pre>获取首先尝试用于引导启动的文件系统组件地址。 | <pre>获取首先尝试用于引导启动的文件系统组件地址。 | ||
</pre> | </pre> | ||
'''OC 1.3新加入。''' | '''OC 1.3新加入。''' | ||
* | * <code>computer.setBootAddress([address:string])</code> | ||
<pre> | <pre>设定首先尝试用于引导启动的文件系统组件地址。传参nil/不传参调用以清除。 | ||
</pre> | </pre> | ||
'''OC 1.3新加入。''' | '''OC 1.3新加入。''' | ||
* | * <code>computer.runlevel(): string|number</code> | ||
<pre>返回电脑当前所在的[[https://en.wikipedia.org/wiki/Runlevel|运行级别(runlevel)]](英文维基百科)。OpenOS的运行级别有: | <pre>返回电脑当前所在的[[https://en.wikipedia.org/wiki/Runlevel|运行级别(runlevel)]](英文维基百科)。OpenOS的运行级别有: | ||
* | * S: 单用户模式,组件和文件系统尚未初始化。 | ||
* | * 1: 单用户模式,文件系统与组件已初始化——OpenOS完成了启动。 | ||
</pre> | </pre> | ||
* | * <code>computer.users(): string, ...</code> | ||
<pre> | <pre>此电脑上的全体登记用户列表,形式为元组(tuple)。若要将结果转化为表,请先对其使用table.pack。 | ||
请参见[[:computer_users:zh|用户行为控制文档]]获取更多信息。 | 请参见[[:computer_users:zh|用户行为控制文档]]获取更多信息。 | ||
</pre> | </pre> | ||
* | * <code>computer.addUser(name: string): boolean or nil, string</code> | ||
<pre> | <pre>在此电脑上登记一个新用户。若添加成功则返回true,否则返回nil和一条报错信息。 | ||
欲添加的用户必须在游戏中。此用户将会获得此电脑的完全访问权限。在shell中,可以执行useradd <用户名>命令调用此方法。 | |||
</pre> | </pre> | ||
* | * <code>computer.removeUser(name: string): boolean</code> | ||
<pre> | <pre>删除此电脑上的某个用户。若用户成功被移除则返回true,若用户先前未被登记则返回false。 | ||
此用户将会失去对此电脑的一切访问权限。当用户列表中的所有用户均被移除时,任何用户均可访问此电脑。在命令行中可使用userdel <用户名>调用此方法。 | |||
</pre> | </pre> | ||
* | * <code>computer.pushSignal(name: string[, ...])</code> | ||
<pre> | <pre>向队列中推送一个新信号。信号按照先进先出顺序处理。推送的信号应至少有信号名,是否存在一并传递的参数均可。请注意只有基本数据类型才可作为信号参数,包括:nil、boolean、number、string和table。表(table)类型确实受支持(请继续读),但是线程和函数型变量不受支持。 | ||
请注意只有特定类型的表才受支持。具体而言,表必须由受支持的数据类型组成,例如string型和number型,甚至可以是子表。但是不可以包含线程和数组。 | |||
</pre> | </pre> | ||
* | * <code>computer.pullSignal([timeout: number]): name, ...</code> | ||
<pre> | <pre>尝试从队列中拉取一个信号,在等待指定时长后判定为失败并返回nil。如果不指定时间则永久等待。 | ||
返回结果的第一个值为信号名,后续返回值与pushSignal推送的内容有关。依事件类型而定。 | |||
通常而言使用[[API/event/zh|event]] | 通常而言使用[[API/event/zh|event]]库中的event.pull函数更加方便。返回值完全一致,但是event库提供了更多选项。 | ||
</pre> | </pre> | ||
* | * <code>computer.beep([frequency:string or number[, duration: number])</code> | ||
<pre> | <pre>若frequency为数字,其值需要介于20与2000之间。 | ||
让电脑产生频率为frequency Hz,时长为duration秒的滴声。此函数已经被重载为可以接收字符串参数,其格式为点.与-破折号的组合,分别代表短与长滴声。 | |||
</pre> | </pre> | ||
* | * <code>computer.getDeviceInfo(): table</code> | ||
<pre>返回存储了此电脑上安装的设备信息的表。 | <pre>返回存储了此电脑上安装的设备信息的表。 | ||
| Line 110: | Line 112: | ||
{{:API/contents/zh}} | {{:API/contents/zh}} | ||
Latest revision as of 20:26, 24 August 2026
Computer(电脑) API
此API主要提供了关于正在运行Lua state的电脑的信息,例如其地址和运行时间。API中还包含了用于用户管理的函数。此API中的函数可以从属于osAPI,但是为了保持“整洁”,这些函数归类为单独的API。
computer.address(): string
此电脑的[[:component:component_access:zh|组件地址]]。
computer.tmpAddress(): string
此电脑的临时文件系统组件地址(如果有),用于在启动时挂载此文件系统。
computer.freeMemory(): number
当前未使用的内存大小,单位为字节。如果此数值接近0,那么你的电脑可能会很快因为内存不足而崩溃(报出“out of memory”错误)。请注意,为了运行OpenOS,高度建议用户安装1条或以上1.5级内存条。系统能用单条1级内存启动,但很快就容易内存不足。
computer.totalMemory(): number
此电脑安装的内存总量,单位为字节。
computer.energy(): number
电脑所在网络中当前可用的能量数量。对机器人而言是机器人自己的能量/燃料量。
computer.maxEnergy(): number
电脑所在网络中能够存储的最大能量数量。对机器人而言是机器人的内置能量缓存大小(可以在机器人的GUI中查看)。
computer.uptime(): number
此电脑运行的时间,单位为现实世界的秒。计算方法为自电脑启动以来游戏世界经过的时间——意味着游戏暂停时此数值不会增长。
computer.shutdown([reboot: boolean])
关闭电脑。如果reboot为true也可以重启电脑,重启即先关机再自动启动。此函数不会有返回值。 下面的样例将会在电脑运行至少300秒(5分钟)后重启电脑。
local computer = require("computer") if computer.uptime() >= 300 then
computer.shutdown(true)
endcomputer.getBootAddress():string
获取首先尝试用于引导启动的文件系统组件地址。
OC 1.3新加入。
computer.setBootAddress([address:string])
设定首先尝试用于引导启动的文件系统组件地址。传参nil/不传参调用以清除。
OC 1.3新加入。
computer.runlevel(): string|number
返回电脑当前所在的[[https://en.wikipedia.org/wiki/Runlevel|运行级别(runlevel)]](英文维基百科)。OpenOS的运行级别有: * S: 单用户模式,组件和文件系统尚未初始化。 * 1: 单用户模式,文件系统与组件已初始化——OpenOS完成了启动。
computer.users(): string, ...
此电脑上的全体登记用户列表,形式为元组(tuple)。若要将结果转化为表,请先对其使用table.pack。 请参见[[:computer_users:zh|用户行为控制文档]]获取更多信息。
computer.addUser(name: string): boolean or nil, string
在此电脑上登记一个新用户。若添加成功则返回true,否则返回nil和一条报错信息。 欲添加的用户必须在游戏中。此用户将会获得此电脑的完全访问权限。在shell中,可以执行useradd <用户名>命令调用此方法。
computer.removeUser(name: string): boolean
删除此电脑上的某个用户。若用户成功被移除则返回true,若用户先前未被登记则返回false。 此用户将会失去对此电脑的一切访问权限。当用户列表中的所有用户均被移除时,任何用户均可访问此电脑。在命令行中可使用userdel <用户名>调用此方法。
computer.pushSignal(name: string[, ...])
向队列中推送一个新信号。信号按照先进先出顺序处理。推送的信号应至少有信号名,是否存在一并传递的参数均可。请注意只有基本数据类型才可作为信号参数,包括:nil、boolean、number、string和table。表(table)类型确实受支持(请继续读),但是线程和函数型变量不受支持。 请注意只有特定类型的表才受支持。具体而言,表必须由受支持的数据类型组成,例如string型和number型,甚至可以是子表。但是不可以包含线程和数组。
computer.pullSignal([timeout: number]): name, ...
尝试从队列中拉取一个信号,在等待指定时长后判定为失败并返回nil。如果不指定时间则永久等待。 返回结果的第一个值为信号名,后续返回值与pushSignal推送的内容有关。依事件类型而定。 通常而言使用[[API/event/zh|event]]库中的event.pull函数更加方便。返回值完全一致,但是event库提供了更多选项。
computer.beep([frequency:string or number[, duration: number])
若frequency为数字,其值需要介于20与2000之间。 让电脑产生频率为frequency Hz,时长为duration秒的滴声。此函数已经被重载为可以接收字符串参数,其格式为点.与-破折号的组合,分别代表短与长滴声。
computer.getDeviceInfo(): table
返回存储了此电脑上安装的设备信息的表。
目录
| < 100% 15% 15% > | ||
| API | OpenOS | buffer - colors - component - computer - event - filesystem - uuid - internet - keyboard - note - process - rc - robot - serialization - shell - sides - term - text - thread - transforms - unicode |
| ::: | Lua 库 | coroutine - package - io - os |