二、IO 控制(Python)
本页对应 C++ 版。函数名与参数顺序与 C++ 完全一致(Python SDK 由 C++ 经 SWIG 生成),差异只在两处:
- 返回值形态:C++ 用引用参数回填数据;Python 的返回形态由 SWIG 绑定决定,逐接口实测,不按类型推断。
- 少数接口在 Python 中不可直接调用(绑定缺陷),页面内已逐个标注。
本页共 27 个接口,其中 27 个在 Python SDK 中存在。
IO 基础概念
2.1 IO 查询与设置
get_io_type
IO 型号查询,获取当前连接的 IO 板数量、型号及各类型端口数量。
def get_io_type(socketFd, io_type):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.IOtype() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。
示例:
import nrc_interface as nrc
fd = nrc.connect_robot("192.168.1.13", "6001")
out_io_type = nrc.IOtype()
ret = nrc.get_io_type(fd, out_io_type)
print(ret, out_io_type.type, out_io_type.num) # 结构体按字段读取参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| io_type | IOtype& | 输出参数,IO 型号和端口信息 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
set_digital_output
设置数字输出端口状态。
def set_digital_output(socketFd, port, value):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| port | int | 端口号,范围 [1, 最大端口数] |
| value | int | 输出值,0 或 1(0=低电平,1=高电平) |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
get_digital_output
一次获取所有数字输出端口状态。
def get_digital_output(socketFd, out):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorInt() 传入,调用成功后用 list(obj) 读取。
示例:
import nrc_interface as nrc
fd = nrc.connect_robot("192.168.1.13", "6001")
out_out = nrc.VectorInt()
ret = nrc.get_digital_output(fd, out_out)
print(ret, list(out_out)) # 容器用 list() 读取参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| out | std::vector<int>& | 输出参数,存储结果的数组;长度按 IO 板实际端口数确定(64 为最大长度)——以 get_io_type 的 io_port_sum 为准,不要写死 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
get_digital_input
一次获取所有数字输入端口状态。
def get_digital_input(socketFd, _in):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorInt() 传入,调用成功后用 list(obj) 读取。
示例:
import nrc_interface as nrc
fd = nrc.connect_robot("192.168.1.13", "6001")
out__in = nrc.VectorInt()
ret = nrc.get_digital_input(fd, out__in)
print(ret, list(out__in)) # 容器用 list() 读取参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| in | std::vector<int>& | 输出参数,存储结果的数组;长度按 IO 板实际端口数确定(64 为最大长度)——以 get_io_type 的 io_port_sum 为准,不要写死 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
set_analog_output
设置模拟输出端口数值。
def set_analog_output(socketFd, port, value):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| port | int | 端口号 |
| value | double | 输出数值,范围 [0, 10] |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
get_analog_output
查询所有模拟输出端口数值。
def get_analog_output(socketFd, aout):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。
示例:
import nrc_interface as nrc
fd = nrc.connect_robot("192.168.1.13", "6001")
out_aout = nrc.VectorDouble()
ret = nrc.get_analog_output(fd, out_aout)
print(ret, list(out_aout)) # 容器用 list() 读取参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| aout | std::vector<double>& | 输出参数,模拟输出数组,最大长度 64;实际数量以 get_io_type 的 io_port_sum 为准 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
get_analog_input
查询所有模拟输入端口数值。
def get_analog_input(socketFd, ain):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorDouble() 传入,调用成功后用 list(obj) 读取。
示例:
import nrc_interface as nrc
fd = nrc.connect_robot("192.168.1.13", "6001")
out_ain = nrc.VectorDouble()
ret = nrc.get_analog_input(fd, out_ain)
print(ret, list(out_ain)) # 容器用 list() 读取参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| ain | std::vector<double>& | 输出参数,模拟输入数组,最大长度 64;实际数量以 get_io_type 的 io_port_sum 为准 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
set_force_digital_input
设置数字输入端口是否强制打开(强制置位),用于调试场景模拟输入信号。
def set_force_digital_input(socketFd, port, force, value):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| port | int | 输入端口号 |
| force | int | 是否强制,1=强制,0=非强制 |
| value | int | 强制状态,0 或 1 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
get_force_digital_input
获取当前已打开强制功能的输入端口及其状态。
def get_force_digital_input(socketFd, port, status):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorInt() 传入,调用成功后用 list(obj) 读取。
示例:
import nrc_interface as nrc
fd = nrc.connect_robot("192.168.1.13", "6001")
out_port = nrc.VectorInt()
out_status = nrc.VectorDouble()
ret = nrc.get_force_digital_input(fd, out_port, out_status)
print(ret, list(out_status)) # 容器用 list() 读取参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| port | std::vector<int>& | 输出参数,当前打开强制输入的端口 |
| status | std::vector<double>& | 输出参数,对应端口状态,下标与 port 一一对应 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
2.2 IO 复位与报警
IO
当程序运行停止或报错时,IO 复位功能能使 IO 输出端口恢复到初始状态。共分三种复位类型:
| 复位类型 | type 值 | 触发条件 |
|---|---|---|
| 远程 IO 复位 | 1 | 远程模式给复位信号,机器人执行复位程序回到复位点时,将设置的 IO 端口复位到复位值;若复位程序中途停止则不复位 |
| 切模式停止 | 2 | 运行程序时切换到示教/远程模式导致程序停止,将设置的 IO 端口复位到复位值 |
| 程序报错 | 3 | 程序发生错误导致程序停止,将设置的 IO 端口复位到复位值(伺服报错、IO 设置的报错、系统运行中的报错) |
Python 中定义:nrc_interface.IO(构造:nrc.IO())。
可用字段(共 17 个,实测 dir()):
AO_laserPower、AO_pressure、DI_backMiddleArrival、DI_capacitance_、DI_followArrival、DI_liftUpArrival、DI_perforateArrival、DO_aspiration、DO_backMiddle、DO_capacitance_、DO_follow、DO_highPressgas、DO_liftUp、DO_lightGate、DO_lowPressgas、DO_redLight、pwm_port_
IO
可自定义 IO 输入输出端口触发报警时的提示信息,报警优先级高于其他类型 IO 报警。每条报警包含:
| 参数 | 说明 |
|---|---|
| 端口 | 绑定报警的 IO 端口 |
| 类型 | 消息(msgType=0)/ 警告(msgType=1)/ 错误(msgType=2) |
| 消息 | 触发报警后输出的内容 |
| 参数 | 0=端口为 0 时触发,1=端口为 1 时触发 |
| 使能 | 关闭后无论 IO 状态如何都不触发报警 |
三种报警类型的表现:
| 类型 | 界面表现 | 对机器人的影响 |
|---|---|---|
| 消息 | 右下角白色提示条 | 无影响 |
| 警告 | 右下角黄色提示条 | 无影响 |
| 错误 | 右下角红色提示条 | 若机器人正在运行会强制下使能 |
Python 中定义:nrc_interface.IO(构造:nrc.IO())。
可用字段(共 17 个,实测 dir()):
AO_laserPower、AO_pressure、DI_backMiddleArrival、DI_capacitance_、DI_followArrival、DI_liftUpArrival、DI_perforateArrival、DO_aspiration、DO_backMiddle、DO_capacitance_、DO_follow、DO_highPressgas、DO_liftUp、DO_lightGate、DO_lowPressgas、DO_redLight、pwm_port_
set_IO_reset_function
设置 IO 复位功能。
def set_IO_reset_function(socketFd, robotNum, type, enable, value):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| type | int | 复位类型:1=远程 IO 复位,2=切模式停止,3=程序报错 |
| enable | std::vector<int> | 是否复位容器,大小等于所有 IO 板输出端口总数 |
| value | std::vector<int> | 复位值容器,大小等于所有 IO 板输出端口总数 |
注意
每次设置需包含所有端口,否则会覆盖上一次的修改。多块 IO 板时端口顺序为上一块 IO 板末位端口的顺延。
get_IO_reset_function
获取 IO 复位相关参数。
def get_IO_reset_function(socketFd, robotNum, type, enable, value):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参容器原地填充——先创建 nrc.VectorInt() 传入,调用成功后用 list(obj) 读取。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| type | int | 复位类型:1=远程 IO 复位,2=切模式停止,3=程序报错 |
| enable | std::vector<int>& | 输出参数,是否复位容器 |
| value | std::vector<int>& | 输出参数,复位值容器 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
set_error_msg_of_digital_input / set_error_msg_of_digital_output
设置 IO 报警信息数字输入/输出端口报警功能。
set_error_msg_of_digital_input
def set_error_msg_of_digital_input(socketFd, msg):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
set_error_msg_of_digital_output
def set_error_msg_of_digital_output(socketFd, msg):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| msg | std::vector<AlarmdIO> | 消息设置结构体数组,大小与 IO 板端口数一致 |
注意
msg 数组大小必须与 IO 板端口数一致,每次设置相应端口均不能忽略,否则会覆盖上一次的设置。
get_error_msg_of_digital_input / get_error_msg_of_digital_output
获取 IO 报警信息数字输入/输出端口报警设置。
get_error_msg_of_digital_input
def get_error_msg_of_digital_input(socketFd, msg):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参对象原地填充——先创建出参对象传入,调用成功后从该对象读取。
get_error_msg_of_digital_output
def get_error_msg_of_digital_output(socketFd, msg):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参对象原地填充——先创建出参对象传入,调用成功后从该对象读取。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| msg | std::vector<AlarmdIO>& | 输出参数,消息设置结构体数组 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
2.3 远程 IO
远程模式信号说明
远程模式下可通过 IO 信号控制机器人启停及程序预约,标准信号功能如下:
数字 IO 输入(远程控制信号):
| 功能 | 触发方式 | 说明 |
|---|---|---|
| 启动 | 上升沿 | 参数为 1 时,信号 0 变 1 有效 |
| 停止 | 持续有效 | 参数为 1 时,信号持续有效 |
| 暂停 | 持续有效 | 参数为 1 时,信号持续有效 |
| 清除报警 | 上升沿 | 参数为 1 时,信号 0 变 1 有效 |
| 预约即启动 | 无 | 打开时,预约成功即上电 |
| IO 远程程序 1-10 | 脉冲(周期 0.6s) | 参数为 1 时,信号 0-1-0 有效,程序预约成功至少需触发 0.6 秒以上 |
| 紧急停止 1/2 | 高电平 | 1ms 扫描一次,扫描到即触发 |
| 安全光幕 1/2 | 高电平 | 运行中触发机器人暂停 |
| 屏蔽紧急停止 1/2 | 配合紧急停止 | 按钮打开即屏蔽,设置时间到后重新检测 |
数字 IO 输出(状态提示信号):
| 功能 | 说明 |
|---|---|
| Robot1 运行 | 程序运行时输出高电平 |
| Robot1 暂停 | 程序暂停时输出高电平 |
| Robot1 停止 | 程序停止时输出高电平 |
| 报错提示 | 常亮输出高电平,闪烁输出脉冲(周期 1s) |
| 使能 | 输出高电平 |
| IO 远程程序 1-10 预约输出 | 预约中闪烁(周期 1.2s),运行中常亮 |
| 主程序首行 | 输出一个高电平参数为 1 的信号,程序光标跳至主程序首行 |
| 可继续执行 | 输出高电平,可运行暂停的程序 |
| 拔出示教盒 | 拔出示教盒后输出高/低电平 |
远程模式状态说明:
| 状态 | 说明 |
|---|---|
| 未预约 | 进入远程模式后未预约过程序,或预约后取消 |
| 预约中 | 预约成功显示预约中 |
| 运行中 | 程序正在运行 |
| 已预约 | 程序运行完成或被触发停止 |
远程模式不能修改速度,速度修改需提前在【设置-远程程序设置】中修改;触发对应程序的 IO 口即预约程序,取消需再次触发。
set_remote_param
设置远程模式参数(速度、启动方式、屏蔽时间等)。
def set_remote_param(socketFd, robotNum, speed, start, time, startTime, num=10):返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型的出参为结构体容器(如 std::vector<struct>&),SWIG 未生成可用的填充绑定,调用会抛 TypeError。请改用 C++ SDK 调用该接口。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| speed | int | 远程模式默认速度 [1,100] |
| start | bool | 是否自动启动 |
| time | int | IO 重复触发屏蔽时间,单位 ms |
| startTime | int | 启动确认时间 |
| num | int | 远程 IO 数量,默认 10 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
get_remote_param
获取远程参数设置数据。
def get_remote_param(socketFd, robotNum, speed, start, time, startTime, num):返回值:list,共 6 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)
示例:
import nrc_interface as nrc
fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_remote_param(fd, 1, 0, False, 0, 0, 0)
print(ret, val) # 返回 list,可直接解包参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| speed | int& | 输出参数,远程模式默认速度 |
| start | bool& | 输出参数,是否自动启动 |
| time | int& | 输出参数,IO 重复触发屏蔽时间 (ms) |
| startTime | int& | 输出参数,启动确认时间 |
| num | int& | 输出参数,远程 IO 数量 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
set_remote_function
设置远程 IO 功能(通用控制信号 + 程序预约信号绑定)。
def set_remote_function(socketFd, robotNum, general, program, num=10):返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型的出参为结构体容器(如 std::vector<struct>&),SWIG 未生成可用的填充绑定,调用会抛 TypeError。请改用 C++ SDK 调用该接口。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| general | RemoteControl | 通用功能远程 IO 参数(启动/暂停/停止/清除报警等) |
| program | std::vector<RemoteProgram> | 远程控制程序参数,program.size() 必须与 num 相等 |
| num | int | 远程 IO 数量(24.03 版本必须与 set_remote_param 中的 num 一致) |
get_remote_function
获取远程 IO 功能设置数据。
def get_remote_function(socketFd, robotNum, num, time, general, program):返回值:list,共 3 个元素,形如 [结果码, 数据...]。下标 0 是结果码,其余为各出参值(按 C++ 参数顺序)。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| num | int& | 输出参数,远程 IO 数量 |
| time | int& | 输出参数,IO 重复触发屏蔽时间 (ms) |
| general | RemoteControl& | 输出参数,通用功能远程 IO 参数 |
| program | std::vector<RemoteProgram>& | 输出参数,远程控制程序参数 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
set_remote_status_tips
设置远程状态提示功能(运行/暂停/停止等状态输出端口)。
def set_remote_status_tips(socketFd, robotNum, outagePort, outageValue, program):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| outagePort | int | 断电保持数据恢复端口 |
| outageValue | int | 断电保持数据恢复端口有效值 (0/1/2) |
| program | std::vector<RemoteProgram> | 远程状态提示参数(size 必须与 set_remote_param 的 num 相等) |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
get_remote_status_tips
获取远程状态提示功能数据。
def get_remote_status_tips(socketFd, robotNum, num, outagePort, outageValue, program):返回值:list,共 4 个元素,形如 [结果码, 数据...]。下标 0 是结果码,其余为各出参值(按 C++ 参数顺序)。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| num | int& | 输出参数,远程 IO 数量 |
| outagePort | int& | 输出参数,断电保持数据恢复端口 |
| outageValue | int& | 输出参数,断电保持数据恢复端口有效值 |
| program | std::vector<RemoteProgram>& | 输出参数,远程控制程序参数 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
set_remote_program
设置 IO 远程程序选择(预约哪个作业文件、运行次数)。
def set_remote_program(socketFd, robotNum, program):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| program | std::vector<RemoteProgramSetting> | 远程程序设置 |
get_remote_program
获取 IO 远程程序设置数据。
def get_remote_program(socketFd, robotNum, num, program):返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,其余为各出参值(按 C++ 参数顺序)。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| num | int& | 输出参数,远程 IO 数量 |
| program | std::vector<RemoteProgramSetting>& | 输出参数,远程程序设置 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
2.4 安全 IO
安全 IO 说明
安全 IO 用于紧急停止、安全光幕等安全功能的端口绑定与电平设置:
| 功能 | 说明 |
|---|---|
| 紧急停止 | 触发后机器人下电并切至伺服停止;解除后需先清错才可继续操作 |
| 安全光幕 | 触发后机器人暂停,再次按下启动按钮可继续运行 |
| 屏蔽紧急停止 | 打开后屏蔽时间内紧急停止信号被屏蔽 |
| 使能硬接线 | 使用使能硬接线示教盒时绑定 DIN 端口,上电使能由 IO 板输入信号控制 |
使能端口 1 为上电使能,使能端口 2 为下电使能;打开此功能后示教盒使能按钮失效。非使能硬接线示教盒请勿设置。
set_hard_enable_port
设置是否使能硬接及相关端口。
def set_hard_enable_port(socketFd, enable, port1, port2):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| enable | int | 是否打开使能硬接 (0/1) |
| port1 | int | 使能硬接端口 1(上电使能) |
| port2 | int | 使能硬接端口 2(下电使能) |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
get_hard_enable_port
获取使能硬接开关是否打开及相关绑定端口。
def get_hard_enable_port(socketFd, enable, port1, port2):返回值:list,共 4 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)
示例:
import nrc_interface as nrc
fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.get_hard_enable_port(fd, 0, 0, 0)
print(ret, val) # 返回 list,可直接解包参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| enable | int& | 输出参数,是否打开使能硬接 |
| port1 | int& | 输出参数,使能硬接端口 1 |
| port2 | int& | 输出参数,使能硬接端口 2 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。
set_safe_IO_function
设置 IO 安全设置参数(紧急停止、安全光幕、屏蔽时间等)。
def set_safe_IO_function(socketFd, robotNum, safeIO):返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。
参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| safeIO | SafeIO | IO 安全设置参数结构体 |
get_safe_IO_function
获取 IO 安全设置参数。
def get_safe_IO_function(socketFd, robotNum, safeIO):返回值:int 结果码(0 成功,负数为错误码)。数据通过出参结构体原地填充——先创建 nrc.SafeIO() 传入,调用成功后按字段读取(如 obj.field;结构体不支持 list())。
示例:
import nrc_interface as nrc
fd = nrc.connect_robot("192.168.1.13", "6001")
out_safeIO = nrc.SafeIO()
ret = nrc.get_safe_IO_function(fd, 1, out_safeIO)
print(ret, out_safeIO.type, out_safeIO.num) # 结构体按字段读取参数说明(与 C++ 一致):
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| safeIO | SafeIO& | 输出参数,IO 安全设置参数 |
C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。