连接管理接口

头文件: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;
     }