当前位置: 首页 > news >正文

【服务通信自定义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的格式在客户端的格式如果后面没有两个数,就会变成提交的参数不对。

http://www.lryc.cn/news/57871.html

相关文章:

  • React跨域解决方案
  • 内存五区的概念,内存池技术的诞生。
  • 力扣:字符串中的第一个唯一字符(C++实现)
  • 攻防世界 favorite_number mfw、[BJDCTF2020]ZJCTF,不过如此
  • SummingMergeTree
  • JUC并发编程基础篇第一章之进程/并发/异步的概念[理解基本概念]
  • c语言—指针进阶
  • 总结二分法
  • 二叉搜索树和AVL树
  • 计算机体系结构量化研究方法【2】高速缓存Cache
  • 初识设计模式 - 迭代器模式
  • 三路快排(基于三指针单趟排序的快速排序)+快排时间复杂度再分析
  • Eyeshot Ultimate 2023 Crack
  • JAVA-8-[SpringBoot]入门程序案例和原理分析
  • 前端工程化
  • 【redis】单线程 VS 多线程(入门)
  • 2023蓝桥杯Java研究生组赛题
  • 多维时序 | MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测
  • 微积分——Rolle定理的理解(罗尔定理)
  • linux内核之select/poll/epoll
  • 文件流下载
  • C语言模拟实现:atoi函数
  • LeetCode.每日一题 2427. 公因子的数目
  • 蓝牙BQB认证 - HFP profile配置说明
  • 【接口测试工具】Eolink Apikit 快速入门教程
  • 使用Python和OpenCV实现实时人脸检测并保存截图
  • [linux kernel]slub内存管理分析(7) MEMCG的影响与绕过
  • MySQL创建数据库(CREATE DATABASE语句)
  • 【JavaWeb】4—Tomcat
  • 宝塔Linux面板部署Python flask项目