- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
连接管理接口
头文件:include/tl_interface.h
相关示例代码:examples\cpp\ex_connect.cpp
1. connect_robot - 创建机械臂双端口连接控制句柄
方法: SOCKETFD connect_robot(const std::string& ip, const std::string& port);
功能描述:建立与机械臂控制器的网络通信通道。需要分别连接指令端口(6001)和实时端口(7000)以获得两个独立的句柄。
参数:
- ip:机械臂控制器 IP 地址,例如 "192.168.1.13"。
- port:端口号字符串,指令通道 "6001",实时跟踪通道 "7000"。
返回值:
- > 0:成功,返回套接字句柄。
- <= 0:失败,返回负错误码。
使用示例:
C++
// 连接控制器
std::cout << "[INFO] 连接控制器..." << std::endl;
auto socket_fd = tl::connect_robot(ip, port);
if (socket_fd < 0) {
std::cerr << "[ERROR] 连接失败,程序退出!"<< std::endl;
return -1;
}
std::cout << "[INFO] 连接成功 (socket=" << socket_fd << ")" << std::endl;
std::cout << "[INFO] 延时2s" << std::endl;
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
2. disconnect_robot - 关闭机械臂通信句柄
方法: Result disconnect_robot(SOCKETFD socketFd);
功能描述: 安全关闭指定的网络连接,释放资源。
参数:
- socketFd:要关闭的句柄。
返回值:
- 0:成功。
- 非 0:失败。
使用示例:
C++
// 断开控制器连接
std::cout << "[INFO] 断开控制器连接..." << std::endl;
auto ret = tl::disconnect_robot(socket_fd);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 断开连接失败,程序退出!"<< std::endl;
return -1;
}
std::cout << "[INFO] 断开连接成功" << std::endl;
return 0;
3. get_connection_status - 获取控制器连接状态
方法:Result get_connection_status(SOCKETFD socketFd);
功能描述:获得控制器连接状态。
参数:
- socketFd:已连接的句柄。
返回值:
- 0:成功。
- 非 0:失败。
使用示例:
C++
// 获取控制器连接状态
std::cout << "[INFO] 获取控制器连接状态..." << std::endl;
auto conn_ret = tl::get_connection_status(socket_fd);
if (conn_ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取连接状态失败,错误码: " << conn_ret << std::endl;
} else {
std::cout << "[INFO] 连接状态正常 (status=" << conn_ret << ")" << std::endl;
}
4. get_controller_network_config - 获取控制器网络配置
方法:Result get_controller_network_config(SOCKETFD socketFd, std::string& name, std::string& address,std::string& gateway, std::string& dns);
功能描述:获取控制器当前的网络配置信息。
参数:
- socketFd:已连接的句柄。
- name:网络接口名称。
- address:IP地址
- gateway:网关地址
- dns:DNS地址
返回值:
- 0:成功。
- 非 0:失败。
使用示例:
C++
// 获取控制器网络配置
std::cout << "[INFO] 获取控制器网络配置..." << std::endl;
std::string net_name, net_address, net_gateway, net_dns;
auto net_ret = tl::get_controller_network_config(socket_fd, net_name, net_address, net_gateway, net_dns);
if (net_ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取控制器网络配置失败,错误码: " << net_ret << std::endl;
} else {
std::cout << "[INFO] 网络接口: " << net_name
<< ",IP: " << net_address
<< ",网关: " << net_gateway
<< ",DNS: " << net_dns << std::endl;
}
5. set_controller_network_config - 设置控制器网络配置
方法:Result set_controller_network_config(SOCKETFD socketFd, const std::string& name, const std::string& ip, const std::string& gateway, const std::string& dns);
功能描述:设置控制器的网络配置信息。
参数:
- socketFd:已连接的句柄。
- name:要修改的网络接口名称
- ip:新的 IP 地址
- gateway:网关地址,传空字符串表示不配置网关
- dns:DNS 服务器地址,传空字符串表示不配置 DNS
返回值:
- 0:成功。
- 非 0:失败。
使用示例:
C++
// 设置控制器网络配置(危险操作,默认注释)
// ⚠️ 危险: 错误配置会导致控制器网络断连,且可能无法重新连接
// 取消下面代码的注释前,请确认 name/IP/网关/DNS 参数正确,
// 并将 IP 改为你实际想要配置的地址(网关/DNS 传空字符串表示不配置)
std::cout << "[INFO] 设置控制器网络配置..." << std::endl;
auto set_ret = tl::set_controller_network_config(socket_fd, "eth0", "192.168.1.14", "", "");
if (set_ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 设置控制器网络配置失败,错误码: " << set_ret << std::endl;
} else {
std::cout << "[INFO] 设置控制器网络配置成功,新IP: 192.168.1.14" << std::endl;
}
