实现两个数字求和(4、优化)

    问题:
        如果先启动客户端,那么会请求异常


    需求:
        如果先启动客户端,不要直接抛出异常,而是挂起,等服务器启动后,再正常请求
    解决:
        在ROS中内置了相关函数,这些函数可以让客户端启动后挂起,等待服务器启动

//调用判断服务器状态函数
//函数一
client.waitForExistence();
//函数二需传参,参数是被等待的服务
ros::service::waitForService("addInts");

优化后完成客户端完整程序:

//  1、包含头文件;
#include "ros/ros.h"
#include "plumbing_server_client/AddInts.h"

int main(int argc, char *argv[])
{
    setlocale(LC_ALL,"");
    //优化实现,获取命令中函数
    if(argc !=3){
        ROS_INFO("提交的参数个数不对。");
        return 1;

    }

    //  2、初始化ROS节点;
    ros::init(argc,argv,"dabao");

    //  3、创建节点句柄;
    ros::NodeHandle nh;

    //  4、创建一个客户端对象;
    ros::ServiceClient client=nh.serviceClient<plumbing_server_client::AddInts>("addInts");

    //  5、提交请求并处理响应;
    plumbing_server_client::AddInts ai;

    //5.1组织请求
    ai.request.num1 = atoi(argv[1]);
    ai.request.num2 = atoi(argv[2]);

    //5.2处理响应

    //调用判断服务器状态的函数(二选一即可)
    //函数一
    //client.waitForExistence();
    //函数二
    ros::service::waitForService("addInts");

    bool flag = client.call(ai);
    if (flag)
    {
        ROS_INFO("响应成功!");
        ROS_INFO("响应结果=%d",ai.response.sum);
    }else{
        ROS_INFO("处理失败!");
    }
    
    return 0;
}

内容参考:AutolaborROS机器人入门(视频链接如下):

https://www.bilibili.com/video/BV1Ci4y1L7ZZ?p=1&vd_source=44198704c80851fc629e59778edea695

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值