目录
一、角色
二、流程
注意
三、例子描述
四、srv文件
编译配置文件
vscode配置
五、Server.cpp编写例子
编写CMakeList
六、观察server的效果
七、Client编写例子
编写CMakeList
八、观察Client的结果
九、Client优化(动态输入)
了解argc和argv
修改上面的Client代码
十、观察Client优化成动态输入后的结果
一、角色
1.master --------> 管理者(114查询平台)
2.Server ---------> 服务器 (服务公司)
3.Client ----------> 客户端 (我)
二、流程
master 会根据话题实现Server 和 Client 的连接
注意
1.保证顺序,客户端发起请求时,服务端需要已经启动
2.客户端和服务端都可以存在多个
3.Server 和 Client 的连接需要用到话题
4.数据载体
三、例子描述
实现目标:服务通信中,客户端提交两个整数至服务端,服务端求和并响应结果到客户端,请创建服务器与客户端通信的数据载体。
流程:
srv 文件内的可用数据类型与 msg 文件一致,且定义 srv 实现流程与自定义 msg 实现流程类似
1.按照固定格式创建srv文件
2.编辑配置文件
3.编译生成中间文件
四、srv文件
编译配置文件
vscode配置
为了避免误报错误异常和代码不能补齐
五、Server.cpp编写例子
这里我出现了一个问题一启动server就停止,后来发现是代码中少了ros::spin();
编写CMakeList
六、观察server的效果
1.打开roscore
七、Client编写例子
编写CMakeList
八、观察Client的结果
九、Client优化(动态输入)
参数的动态提交格式:rosrun xxxx xxxxx 66 77
了解argc和argv
在C/C++语言中,argc
和argv
是main
函数的参数。
argc
是一个整数,代表命令行参数的数量(argument count)。argv
是一个指向字符指针数组的指针,代表命令行参数的值(argument vector)。
当你在命令行中执行一个程序时,可以向程序传递参数。例如:
./my_program arg1 arg2 arg3
在这个例子中,argc
将是4,因为有4个参数(包括程序名本身),而argv
将指向一个数组,其中包含以下内容:
argv[0]
指向程序名./my_program
。argv[1]
指向arg1
。argv[2]
指向arg2
。argv[3]
指向arg3
。
所以,通过这两个参数,你可以在C程序中访问命令行传递的参数和参数数量。