优化client端(附带解释说明)

#include "ros/ros.h"          // 包含 ROS 核心库头文件,提供 ROS 基本功能(如节点初始化、消息通信等)
#include "plumbing_server_client/AddInts.h"  // 包含自定义服务消息头文件,定义服务的请求(num1、num2)与响应(sum)格式

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "");  // 设置本地化环境,确保支持中文输出(如日志中的中文提示)

    // 检查命令行参数数量:argc 表示参数总数,需传入 2 个数字参数(程序名 + 两个参数共 3 个元素)
    if (argc != 3) {
        ROS_INFO("提交的参数个数不对。");  // 打印参数错误提示信息
        return 1;  // 终止程序,返回错误码 1
    }

    // 初始化 ROS 节点:节点名为 "daBao",同时将命令行参数传递给 ROS 系统
    ros::init(argc, argv, "daBao"); 

    ros::NodeHandle nh;  // 创建节点句柄,用于管理 ROS 资源(如创建客户端、访问参数等)

    // 创建服务客户端:连接名为 "addInts" 的服务,使用自定义的 AddInts 消息类型进行通信
    ros::ServiceClient client = nh.serviceClient<plumbing_server_client::AddInts>("addInts");

    plumbing_server_client::AddInts ai;  // 创建服务消息对象,存储请求数据与接收响应数据

    // 组织请求数据:将命令行参数(字符串)转换为整数,填充到请求的 num1 和 num2 字段
    ai.request.num1 = atoi(argv[1]); 
    ai.request.num2 = atoi(argv[2]); 

    bool flag = client.call(ai);  // 发送请求并等待响应,call() 方法返回是否成功收到服务端响应

    // 处理响应结果
    if (flag) {
        ROS_INFO("响应成功!");  // 打印响应成功提示
        // 从响应中提取求和结果并打印
        ROS_INFO("响应结果 = %d", ai.response.sum); 
    } else {
        ROS_INFO("处理失败....");  // 打印响应失败提示
    }

    return 0;  // 程序正常结束,返回 0
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值