1. 通道接口
1.1 通道从站发送接口
| 算子名称 | sys.send | ||
|---|---|---|---|
| 参数类型 | 参数名 | 参数说明 | |
| 输入参数 | string_t | channel | 通道名称,如:CANopenChannel |
| string_t | msgId | 消息类型,如:tuopan | |
| object_t / propset_t | props | 消息数据 | |
| 返回值 | void | ||
| 功能描述 | 用于从站模式给主站发送数据。 1. 如果是CAN总线等抢占式通道,则立即发送; 1. 如果是485等轮询通道,系统将暂存数据,等候主节点轮询时发送。 |
object_t类型消息数据用法:
sys.send("CANopenChannel", "tuopan", {var1 = 1,var2 = 2.0,var3 = "str"})
propset_t类型消息数据用法: ```lua table = sys.propset_t({
var1 = 1,
var2 = 2.0, var3 = “str” })
table2 = sys.propset_t({ var4 = 1, var5 = 2.0, var6 = “str” })
table:append(table2)
sys.send(“CANopenChannel”, “tuopan”, table)
<a name="uRw4V"></a>## 1.2 通道主站发送接口| 算子名称 | sys.sendto | | || --- | --- | --- | --- || | 参数类型 | 参数名 | 参数说明 || 输入参数 | string_t | channel | 通道名称,如:CANopenChannel || | string_t | node | 从站节点标识 || | string_t | msgId | 消息类型,如:tuopan || | object_t / propset_t | props | 消息数据 || 返回值 | void | | <br /> || 功能描述 | 用于主站模式发送数据到指定从站。<br />1. node参数是指init.lua脚本中add_node指令指定的节点名称,而不是真实的物理地址,系统会自动将节点标识翻译成物理地址。<br /> | | |<a name="pi3Kd"></a># 2 相机接口<a name="Ku74m"></a>## 2.1 相机软触发接口| 算子名称 | sys.trigger_camera | | || --- | --- | --- | --- || | 参数类型 | 参数名 | 参数说明 || 输入参数 | string_t | decoder | 解码器名称,如:Ifm3dDecoder || | propset_t / string_t / nil | cameras | 相机标识 || 返回值 | void | | <br /> || 功能描述 | 用于主站模式发送数据到指定从站。<br />1. camera参数是指init.lua脚本中add_camera指令指定的相机标识,而不是真实的物理地址,系统会自动将相机标识转换成相机特定的连接参数。<br />1. 可指定单个相机标识,或通过{}指定多个相机标识。<br />1. 不指定相机标识时,系统将对该解码器插件下所有连接的相机进行软触发。<br /> | | |用法举例:```luafunction main(node, props)if props::has("Tuppan_Enable") then -- 收到触发信号-- trigger camerasys.trigger_camera("Ifm3dDecoder") -- 触发所有相机sys.trigger_camera("Ifm3dDecoder", "lft_") -- 触发1个相机sys.trigger_camera("Ifm3dDecoder", { "lft_", "rgt_" }) -- 触发2个相机endreturn 0end
3 数据缓存接口
3.1 写缓存接口
| 算子名称 | sys.set_cache | ||
|---|---|---|---|
| 参数类型 | 参数名 | 参数说明 | |
| 输入参数 | string_t | key | 解码器名称,如:Ifm3dDecoder |
| object_t | value | 缓存数据 | |
| 返回值 | propset_t | props | 缓存数据返回 |
| 功能描述 | 暂时缓存数据,用于在多个脚本处理过程中,后续脚本使用,如第1个相机处理完左半边数据,暂存到缓存中,等第2个相机处理完有半边数据后,再取出左半边数据,合并处理后得出后续结果。 |
示例脚本:
if camera == "lft_" thenLeft = sys.set_cache("Left", {LeftTopX = upleg_pos.OBB_position.x * 1000,LeftTopY = upleg_pos.OBB_position.y * 1000,LeftTopZ = upleg_pos.OBB_position.z * 1000,LeftTopFlags = 0,})Right = sys.get_cache("Right")endif camera == "rgt_" thenLeft = sys.get_cache("Left")Right = sys.set_cache("Right", {RightTopX = upleg_pos.OBB_position.x * 1000,RightTopY = upleg_pos.OBB_position.y * 1000,RightTopZ = upleg_pos.OBB_position.z * 1000,RightTopFlags = 0,})endif Left.empty thenLeft = sys.propset_t({LeftTopX = 0,LeftTopY = 0,LeftTopZ = 0,LeftTopFlags = 0,})endif Right.empty thenRight = sys.propset_t({RightTopX = 0,RightTopY = 0,RightTopZ = 0,RightTopFlags = 0,})enddata = sys.propset_t()data:append(Left)data:append(Right)
