Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
component:signals:zh [2023/11/29 09:17]
hfsr [运动传感器]
component:signals:zh [2023/12/27 04:28] (current)
hfsr [信号]
Line 2: Line 2:
 ==== ====
  
-信号是由某些外部来源发送给电脑的信息,可被用于各种用途。它们需要至少有个名字,然后还可以有任意数量的(简单)参数。注意,电脑也可以向自己的信号队列中添加信号。+信号是由某些外部来源发送给电脑的信息,可被用于各种用途。它们需要至少有个名字,然后还可以有任意数量的(简单)参数。注意,电脑自己也可以向自己的信号队列中添加信号。
  
-信号可以通过调用[[api:​computer:​zh|computer.pullSignal()]]或其简单封装[[api:​event:​zh|event.pull()]]消耗。+信号可以[[api:​computer:​zh|computer.pullSignal()]]或其更方便的封装[[api:​event:​zh|event.pull()]]消耗
  
 下面列出了所有由组件和内置库触发的信号。它们由以下格式列出:`信号名(参数名:​ 参数类型,​ ...)`,你可以用`local name, arg, ... = event.pull()`这样的写法拉取它们。  ​ 下面列出了所有由组件和内置库触发的信号。它们由以下格式列出:`信号名(参数名:​ 参数类型,​ ...)`,你可以用`local name, arg, ... = event.pull()`这样的写法拉取它们。  ​
Line 107: Line 107:
  
 - `modem_message(receiverAddress:​ string, senderAddress:​ string, port: number, distance: number, ...)`  ​ - `modem_message(receiverAddress:​ string, senderAddress:​ string, port: number, distance: number, ...)`  ​
-  当在开放的端口上收到息时,[[item:​lan_card:​zh|网卡]] (包括无线网卡)会将这个信号添加到事件队列。`receiverAddress` 是收到息的网卡的地址,`senderAddress` 是发送息的网卡的地址。注意,如果消息经过了一个或多个[[block:​switch:​zh|中继器]],那么发送者的地址可能与实际发送息的网卡地址不同。`port` 是收到息的端口。`distance` 只有收到*无线*网络信息时才有效,此时它的值是接收者到发送者之间的距离。对于普通的网卡来说,这个永远零。其他所有参数都是用户定义的,并对应用户在调用 [[component:​modem:​zh|modem.send()]] 或 `modem.broadcast()` 时指定的内容,用作信息载荷。+  当在开放的端口上收到息时,[[item:​network_card:​zh|网卡]](包括无线网卡)会将信号添加到事件队列。 ​  
 +  ​`receiverAddress` 是收到息的网卡的地址,`senderAddress`是发送息的网卡的地址。注意,若信息经过了一个或多个[[block:​switch:​zh|中继器]],那么发送者的地址可能与实际发送息的网卡地址不同。`port`是收到息的端口。`distance`参数只有收到**无线**网络信息时才有效,此时它的值是接收者到发送者之间的距离。对于普通的网卡来说,值永远零。其他所有参数都是用户定义的,并对应用户在调用[[component:​modem:​zh|modem.send()]] 或 `modem.broadcast()`时指定的内容,信息载荷。
  
  
Line 114: Line 115:
  
 - `inventory_changed(slot:​ number)`  ​ - `inventory_changed(slot:​ number)`  ​
-  当机器人的物品栏发生变化时,机器人会将这个信号添加到事件队列。注意只包括储存在槽中的物品种类变化。增加或减少一个物品堆中的物品数量并不会触发这个信号。然而玩家手动将机器人库存中的一物品换成另一件物品(例如玩家鼠标持有木棍,然后点击机器人库存中的火把,玩家鼠标上的物品会变成火把,机器人对应槽中的物品会变成木棍)时实际上会触发*两个*信号:一个是移除火把的信号,一个是与此同时放入木棍的信号。使用 [[api:​robot:​zh|robot.transferTo()]] 交换两个槽中的物品甚至会触发*四个*信号——原因同上,但这次涉及到两个槽间的物品交换。 +  当机器人的物品栏发生变化时,机器人会将信号添加到队列。注意只包括储存在槽中的物品种类变化。增加或减少一个物品堆中的物品数量并不会触发这个信号。 ​  
-  此外,这个信号只针对机器人实际可寻址的物品栏,也就是说,它不会因备(工具、卡槽内的卡、升级槽内的升级组件)的变化而被触发。+  ​玩家手动将机器人库存中的一物品换成另一(例如火把木棍)时实际上会触发**两个**信号:一个是移除火把的信号,一个是与此同时放入木棍的信号。使用[[api:​robot:​zh|robot.transferTo()]]交换两个槽中的物品甚至会触发**四个**信号——原因同上,但这次涉及到两个槽间的物品交换。 ​  
 +  此外,信号只针对机器人物品栏中有地址的部分,也就是说,它不会因备(工具、扩展卡、升级)的变化而被触发。
  
  
-抽象总线+抽象总线
 -------- --------
 +
 +来自[Stargate Tech 2](http://​stargatetech.theender.net/​miscellaneous/​home.html)。
  
 - `bus_message(protocolId:​ number, senderAddress:​ number, targetAddress:​ number, data: table, metadata: table)` ​ - `bus_message(protocolId:​ number, senderAddress:​ number, targetAddress:​ number, data: table, metadata: table)` ​
-  - `protocolId` 是所使用的协议的版本。 +  - `protocolId`是所使用的协议的版本。 
-  - `senderAddress` 是发送息的设备地址。 +  - `senderAddress`是发送息的设备地址。 
-  - `targetAddress` 是所指向的设备地址(网络广播为 -1)。 +  - `targetAddress`是息的目标设备地址(网络广播为 -1)。 
-  - `data`是发送数据的表。 +  - `data`是包含所发送数据的表。 
-  - `metadata` 是发送设备所特有的数据的表。+  - `metadata`是特定于发送设备的数据的表。
  
  
-运输组件+车辆
 -------- --------
  
-**重要**: 这个组件已被移动到附属模组 OpenComponents。+来自[Redstone in motion / remain in motion(红石运动机构)](https://​www.curseforge.com/​minecraft/​mc-mods/​remain-in-motion) 
 + 
 +<del>**注意:**组件的驱动程序已被移动到附属模组OpenComponents中。</​del> ​  
 +OpenComponents模组的内容已合并进主模组
  
 - `carriage_moved(success:​ boolean[, reason:​string[,​ x:number, y: number, z: number]])`  ​ - `carriage_moved(success:​ boolean[, reason:​string[,​ x:number, y: number, z: number]])`  ​
-  ​这个信号会在运输组件发出移动或模拟命令后入队列。`success` 参数指出移动或模拟指令是否执行成功,即运载工具是否移动如果移动失败,`reason` ​包含的就是错误信息。取决于错误信息,(`x`,​ `y`, `z`)会是造成移动失败的方块在世界中的坐标。+  ​信号会在车辆组件成功执行移动或模拟移动命令后入队列。`success`参数指出移动或模拟移动指令是否执行成功,即车辆是否移动。移动失败,`reason`即为错误信息。取决于错误信息,(`x`,​`y`,​`z`)会是造成移动失败的方块在世界中的坐标。
  
 目录 目录
 ----------- -----------
-{{page>api:​contents:​zh&​noheader&​noeditbutton&​nouser&​nofooter}}+{{page>component:​contents:​zh&​noheader&​noeditbutton&​nouser&​nofooter}}