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

电子商务网站建设试卷.doc互联网推广策划

电子商务网站建设试卷.doc,互联网推广策划,产品包装设计素材网站,莫奈设计公司官网背景 当节点使用服务进行通信时#xff0c;发送数据请求的节点称为客户端节点#xff0c;响应请求的节点称为服务节点。请求和响应的结构由.srv文件确定。 这里使用的例子是一个简单的整数加法系统#xff1b;一个节点请求两个整数之和#xff0c;另一个节点响应结果。 … 背景 当节点使用服务进行通信时发送数据请求的节点称为客户端节点响应请求的节点称为服务节点。请求和响应的结构由.srv文件确定。 这里使用的例子是一个简单的整数加法系统一个节点请求两个整数之和另一个节点响应结果。 任务 1 创建包 导航到上一教程ros2_ws中创建的目录。 回想一下包应该在src目录中创建而不是在工作区的根目录中。导航到ros2_ws/src并创建一个新包 ros2 pkg create --build-type ament_cmake cpp_srvcli --dependencies rclcpp example_interfacescpp_srvcli您的终端将返回一条消息验证您的包及其所有必需文件和文件夹的创建。 该--dependencies参数将自动将必要的依赖行添加到package.xml和CMakeLists.txt。 是包含.srv 文件的example_interfaces包您需要构建请求和响应 int64 a int64 b --- int64 sum前两行是请求的参数破折号下面是响应。 1.1 更新package.xml 由于您--dependencies在包创建期间使用了该选项因此无需手动将依赖项添加到package.xml或CMakeLists.txt。 不过与往常一样请确保将描述、维护者电子邮件和姓名以及许可证信息添加到package.xml. descriptionC client server tutorial/description maintainer emailyouemail.comYour Name/maintainer licenseApache License 2.0/license2 编写服务节点 在ros2_ws/src/cpp_srvcli/src目录中创建一个名为的新文件add_two_ints_server.cpp并将以下代码粘贴到其中 #include rclcpp/rclcpp.hpp #include example_interfaces/srv/add_two_ints.hpp#include memoryvoid add(const std::shared_ptrexample_interfaces::srv::AddTwoInts::Request request,std::shared_ptrexample_interfaces::srv::AddTwoInts::Response response) {response-sum request-a request-b;RCLCPP_INFO(rclcpp::get_logger(rclcpp), Incoming request\na: %ld b: %ld,request-a, request-b);RCLCPP_INFO(rclcpp::get_logger(rclcpp), sending back response: [%ld], (long int)response-sum); }int main(int argc, char **argv) {rclcpp::init(argc, argv);std::shared_ptrrclcpp::Node node rclcpp::Node::make_shared(add_two_ints_server);rclcpp::Serviceexample_interfaces::srv::AddTwoInts::SharedPtr service node-create_serviceexample_interfaces::srv::AddTwoInts(add_two_ints, add);RCLCPP_INFO(rclcpp::get_logger(rclcpp), Ready to add two ints.);rclcpp::spin(node);rclcpp::shutdown(); }2.1 检查代码 前两条#include语句是您的包依赖项。 该add函数将请求中的两个整数相加并将总和提供给响应同时使用日志通知控制台其状态。 void add(const std::shared_ptrexample_interfaces::srv::AddTwoInts::Request request,std::shared_ptrexample_interfaces::srv::AddTwoInts::Response response) {response-sum request-a request-b;RCLCPP_INFO(rclcpp::get_logger(rclcpp), Incoming request\na: %ld b: %ld,request-a, request-b);RCLCPP_INFO(rclcpp::get_logger(rclcpp), sending back response: [%ld], (long int)response-sum); }该main函数逐行完成以下任务 初始化 ROS 2 C 客户端库 rclcpp::init(argc, argv);创建一个名为 的节点add_two_ints_server std::shared_ptrrclcpp::Node node rclcpp::Node::make_shared(add_two_ints_server);创建一个以add_two_ints该节点命名的服务并使用以下方法自动在网络上通告它add rclcpp::Serviceexample_interfaces::srv::AddTwoInts::SharedPtr service node-create_serviceexample_interfaces::srv::AddTwoInts(add_two_ints, add);准备好后打印一条日志消息 RCLCPP_INFO(rclcpp::get_logger(rclcpp), Ready to add two ints.);旋转节点使服务可用。 rclcpp::spin(node);2.2 添加可执行文件 该add_executable宏生成一个可执行文件您可以使用 运行。添加以下代码块以创建名为 的可执行文件ros2 runCMakeLists.txtserver add_executable(server src/add_two_ints_server.cpp) ament_target_dependencies(server rclcpp example_interfaces)因此可以找到可执行文件将以下行添加到文件末尾之前ros2 runament_package() install(TARGETSserverDESTINATION lib/${PROJECT_NAME})您现在可以构建包获取本地安装文件并运行它但我们首先创建客户端节点以便您可以看到完整的系统在工作。 3 编写客户端节点 在ros2_ws/src/cpp_srvcli/src目录中创建一个名为的新文件add_two_ints_client.cpp并将以下代码粘贴到其中 #include rclcpp/rclcpp.hpp #include example_interfaces/srv/add_two_ints.hpp#include chrono #include cstdlib #include memoryusing namespace std::chrono_literals;int main(int argc, char **argv) {rclcpp::init(argc, argv);if (argc ! 3) {RCLCPP_INFO(rclcpp::get_logger(rclcpp), usage: add_two_ints_client X Y);return 1;}std::shared_ptrrclcpp::Node node rclcpp::Node::make_shared(add_two_ints_client);rclcpp::Clientexample_interfaces::srv::AddTwoInts::SharedPtr client node-create_clientexample_interfaces::srv::AddTwoInts(add_two_ints);auto request std::make_sharedexample_interfaces::srv::AddTwoInts::Request();request-a atoll(argv[1]);request-b atoll(argv[2]);while (!client-wait_for_service(1s)) {if (!rclcpp::ok()) {RCLCPP_ERROR(rclcpp::get_logger(rclcpp), Interrupted while waiting for the service. Exiting.);return 0;}RCLCPP_INFO(rclcpp::get_logger(rclcpp), service not available, waiting again...);}auto result client-async_send_request(request);// Wait for the result.if (rclcpp::spin_until_future_complete(node, result) rclcpp::FutureReturnCode::SUCCESS){RCLCPP_INFO(rclcpp::get_logger(rclcpp), Sum: %ld, result.get()-sum);} else {RCLCPP_ERROR(rclcpp::get_logger(rclcpp), Failed to call service add_two_ints);}rclcpp::shutdown();return 0; }3.1 检查代码 与服务节点类似以下代码行创建节点然后为该节点创建客户端 std::shared_ptrrclcpp::Node node rclcpp::Node::make_shared(add_two_ints_client); rclcpp::Clientexample_interfaces::srv::AddTwoInts::SharedPtr client node-create_clientexample_interfaces::srv::AddTwoInts(add_two_ints);接下来创建请求。它的结构是由.srv前面提到的文件定义的。 auto request std::make_sharedexample_interfaces::srv::AddTwoInts::Request(); request-a atoll(argv[1]); request-b atoll(argv[2]);该while循环给客户端 1 秒的时间来搜索网络中的服务节点。如果找不到它将继续等待。 RCLCPP_INFO(rclcpp::get_logger(rclcpp), service not available, waiting again...);如果客户端被取消例如通过您进入CtrlC终端它将返回一条错误日志消息表明它被中断。 RCLCPP_ERROR(rclcpp::get_logger(rclcpp), Interrupted while waiting for the service. Exiting.);return 0;然后客户端发送请求节点旋转直到收到响应或失败。 3.2 添加可执行文件 返回CMakeLists.txt为新节点添加可执行文件和目标。从自动生成的文件中删除一些不必要的样板后您的文件CMakeLists.txt应该如下所示 cmake_minimum_required(VERSION 3.5) project(cpp_srvcli)find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(example_interfaces REQUIRED)add_executable(server src/add_two_ints_server.cpp) ament_target_dependencies(serverrclcpp example_interfaces)add_executable(client src/add_two_ints_client.cpp) ament_target_dependencies(clientrclcpp example_interfaces)install(TARGETSserverclientDESTINATION lib/${PROJECT_NAME})ament_package()4 构建并运行 在构建之前最好rosdep在工作区的根目录 ( ros2_ws) 中运行以检查是否缺少依赖项 Linux苹果系统视窗 rosdep install -i --from-path src --rosdistro galactic -y导航回工作区的根目录ros2_ws并构建新包 Linux苹果系统视窗 colcon build --packages-select cpp_srvcli打开一个新终端导航到ros2_ws并获取安装文件 Linux苹果系统视窗 . install/setup.bash现在运行服务节点 ros2 run cpp_srvcli server终端应返回以下消息然后等待 [INFO] [rclcpp]: Ready to add two ints.打开另一个终端再次从内部获取安装文件ros2_ws。启动客户端节点后跟任意两个以空格分隔的整数 ros2 run cpp_srvcli client 2 3例如如果您选择2和3客户端将收到如下响应 [INFO] [rclcpp]: Sum: 5返回到运行服务节点的终端。您将看到它在收到请求和收到的数据以及发回的响应时发布了日志消息 [INFO] [rclcpp]: Incoming request a: 2 b: 3 [INFO] [rclcpp]: sending back response: [5]在服务器终端中输入CtrlC以停止节点旋转。
http://www.tj-hxxt.cn/news/231101.html

相关文章:

  • 民宿网站开发的开题报告百度如何快速收录
  • 做兼职设计去哪个网站好家装设计师网站
  • 百度网站提交地址cms建站模板app
  • 有没有网站是免费做店招图片的服务器出租网站
  • 网站开发详细报价网站建设图片属性设置
  • 信用网站建设工作总结o2o网站建设新闻
  • 网站备案有时间吗怎么做公司宣传网站
  • 包头移动的网站建设线上推广策略
  • 安丘网站建设制作百度推广工作怎么样
  • 成品免费网站源码梧州网站推广费用
  • 服装网站论文树莓派可以做网站空间吗
  • 有关wordpress教学的网站代做道路毕业设计网站
  • 四川城乡和建设厅网站淘宝网站可以做seo吗
  • 做网站按什么收费多少钱足球比赛直播 视频直播
  • 南宁住房建设部网站免费做网站的网页
  • 网站建设规划公司怎么样查中企动力做的网站
  • 网站建设需求网络公关公司收费
  • 明星百度指数在线查询seo的作用是什么
  • 汉川市城乡建设局网站从零开始学网站建设
  • 做视频有赚钱的网站有哪些网页设计教程
  • 宅男做网站做网站主流软件是php吗
  • 万载网站建设江门建设建筑网站
  • 做网站的技术大连市网站制作电话
  • 代理会计公司网站模版公司重名 做网站
  • 做网站好平台化新浪云平台创建wordpress
  • 申请建设单位门户网站的请示电子商务的特点
  • 上海优化网站关键词wordpress替代2017
  • 凡科做的网站户外网站建设
  • 做的最好的视频网站在安阳想建个网站怎么做
  • 如何做企业网站小程序育才网站建设