【服务通信自定义srv调用3----客户端的优化】
客户端的优化
服务通信自定义srv调用,客户端随意提交两个数,完成数的相加。也就是实现参数的动态提交:
1.格式:rosrun xxxx xxxx 12 34
2.节点执行时候,需要获取命令中的参数,并且组织进 request
代码中应该加入
//优化实现。获取命令的参数if (argc !=3){ROS_INFO("提交的参数不对");return 1;}
改掉固定输入值:
// 5.组织请求数据plumbing_server_client::AddInts ai;ai.request.num1 = atoi(argv[1]);ai.request.num2 = atoi(argv[2]);
总体代码在demo02里面改动,demo01服务端不改动。
/*需求: 编写两个节点实现服务通信,客户端节点需要提交两个整数到服务器服务器需要解析客户端提交的数据,相加后,将结果响应回客户端,客户端再解析服务器实现:1.包含头文件2.初始化 ROS 节点3.创建 ROS 句柄4.创建 客户端 对象5.请求服务,接收响应实现参数的动态提交:1.格式:rosrun xxxx xxxx 12 342.节点执行时候,需要获取命令中的参数,并且组织进 request*/
// 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 句柄ros::NodeHandle nh;// 4.创建 客户端 对象ros::ServiceClient client = nh.serviceClient<plumbing_server_client::AddInts>("addints");// 5.组织请求数据plumbing_server_client::AddInts ai;ai.request.num1 = atoi(argv[1]);ai.request.num2 = atoi(argv[2]);// 6.处理响应bool flag = client.call(ai);// 7.处理响应if (flag){ROS_INFO("响应成功");ROS_INFO("请求正常处理,响应结果:%d",ai.response.sum);}else{ROS_ERROR("请求处理失败....");return 1;}return 0;
}
完毕之后ctrl+shift+b进行编译。
然后ctrl+alt+t打开终端
输入roscore启动ros
然后新开一个终端
输入```bash
source ./devel/setup.bash
rosrun plumbing_server_client demo01_server
然后新开一个终端
输入
source ./devel/setup.bash
rosrun plumbing_server_client demo02_client 12 334
输出结果如下:
1.格式:rosrun xxxx xxxx 12 34
注意rosrun的格式在客户端的格式如果后面没有两个数,就会变成提交的参数不对。
【服务通信自定义srv调用3----客户端的优化】相关推荐
- 服务通信—自定义srv
1.创建工作空间并初始化与生成srv文件 1.创建工作空间并初始化 mkdir -p demo02_ws/src cd demo03_ws catkin_make 2.进入 src 创建 ros 包并 ...
- ROS话题通信自定义msg实现发送接收(六)c++、python
目录 自定义msg简介 自定义msg实现 话题通信自定义msg调用(C++) vscode配置 实现发布方 实现订阅方 Python实现 编写发布方 实现订阅方 自定义msg简介 在 ROS 通信协议 ...
- ROS通信机制(二) —— 服务(service)与srv文件
文章目录 简述 特点 相关常用命令 通信模型 核心元素 通信过程 代码示例(服务端和客户端) 服务端(server.cpp) 客户端(client.cpp) 配置 CMakeLists.txt 编译和 ...
- 在服务器端调用微软office接口,Office 365 服务通信 API 参考
Office 365 服务通信 API 参考 2021/8/11 本文内容 重要 Microsoft Graph 中的服务运行状况和通信 API 现已推出. Microsoft Graph API 替 ...
- ROS服务通信机制原理及示例代码
ROS服务通信:节点间直接通信并获得应答.服务需要用户自己开发,可在功能包下创建srv文件夹并编写源代码,服务类型是功能包名称和.srv文件名称的组合,比如python中引入srv类型为,from g ...
- 微服务采用何种远程调用方式?
无论是微服务还是SOA,都面临着服务间的远程调用.那么服务间的远程调用方式有哪些呢? 常见的远程调用方式有以下几种: RPC:Remote Produce Call远程过程调用,类似的还有RMI.自定 ...
- ROS笔记(8) 服务通信
ROS笔记(8) 服务通信 1. 自定义服务请求与应答 2. 服务端 Service 3. 客户端 Client 4. 服务通信 1. 自定义服务请求与应答 在 hh_ros 功能包 srv 文件夹中 ...
- 2.6 自定义srv python
功能介绍 以自定义数据类型为基础,完成一个节点作为服务器,另一个节点接收传送两个数字到服务端,服务端计算后反馈到客户端进行打印输出 1.工作空间 1.1 创建工作空间lee_ws mkdir -p ~ ...
- 高性能服务通信框架Gaea的详细实现--server请求处理流程
为什么80%的码农都做不了架构师?>>> #<i class="icon-file">Gaea请求处理流程</i> Gaea支持tc ...
最新文章
- 技术15期:4种常用的可视化技术【web前端】
- Metasploit profiling工具的利用
- Ruby备份mongodb(fsync lock)
- C#Socket开发TCP详解(二)
- 米家扫拖一体机器人重置键_全面升级——米家扫拖机器人1T体验
- 洛谷-P1903 数颜色 分块 bitset
- ubuntu系统安装socket服务器,Ubuntu上进行socket编程,并且实现通信功能
- c++计算园的面积与周长
- Centos6.3搭建cactinagios
- [教程] 康盛创想 Windows (server 2003) 服务器部署标准 白丁简明版
- Android使用Zxing库生成PDF417扫描后多一个字符A
- 转发:Android自动开关机实现
- C语言中图形题,c语言图形输出习题.doc
- Matlab回归分析获取预测变量的系数和p值和R2(仅一行代码)
- 逆波兰表达式(含小数)、C语言
- html在w3c很多错误,在w3c中验证时发生CSS解析错误
- iptables 之-m -state
- 小丸子学Hadoop系列之——部署Hbase集群
- ubuntu18 dso安装
- Connection Timeout 问题排查