构建DS_SUBSCRIBER:J2SE服务器与Angular UI整合pubsub事件API

需积分: 5 0 下载量 164 浏览量 更新于2024-11-26 收藏 787KB ZIP 举报
资源摘要信息:"本文档介绍了DS_SUBSCRIBER项目的构建和运行方法,该项目是一个利用J2SE Web服务器和Angular UI展示pubsub公开事件API的应用。开发者可以通过Maven打包,并解压目标文件,然后启动服务器和API来查看和操作事件数据。" DS_SUBSCRIBER是一个使用Java 2 Platform, Enterprise Edition (J2SE) Web服务器以及Angular前端框架构建的应用程序。它的目的是作为一个订阅者角色,捕获和展示pubsub(publish/subscribe,发布/订阅)模型中的事件。pubsub是一种消息传递模式,其中发布者和订阅者通过事件中心进行通信,发布者不直接向订阅者发送消息,而是向事件中心发布,而订阅者则从事件中心订阅自己感兴趣的消息。这种模式常用于构建松耦合的分布式系统。 在本项目中,开发者可以通过Maven工具来构建应用程序。Maven是一个广泛使用的项目管理和构建自动化工具,它依赖于一个项目对象模型(POM)文件来描述项目构建过程和依赖关系。构建命令如下所示: ```shell mvn package ``` 构建完成后,会产生一个名为`subscriber-2.0.zip`的压缩包文件。开发者需要将该文件解压到目标目录下,解压后会看到以下目录结构: - angularUI:包含了Angular前端项目文件,用于展示事件信息。 - lib:包含了项目依赖的第三方库文件。 - postman:包含Postman集合文件,用于测试API。 - startServer.sh:是一个启动脚本,用于启动服务器。 在启动服务器时,可以通过命令行指定端口: ```shell $ ./startServer.sh <port> # 默认端口为9000 ``` 应用程序还定义了几个RESTful API接口,可以用来处理事件的创建、查询和删除操作: - POST - `/event`:创建一个新事件。 - GET - `/history`:列出所有已发生的事件。 - DELETE - `/history`:删除所有历史事件,清空事件记录。 - GET - `/current`:获取最后一个发生的事件。 此外,还提到了使用Postman来测试这些API接口。Postman是一个流行的API测试工具,允许开发者发送请求、测试API的响应,还可以将API请求组织成集合进行管理。为了方便测试,开发者可以导入`subscriber.json.postman_collection`文件到Postman中。 JavaScript标签提示我们该项目可能在前端使用了JavaScript语言,尤其是在Angular UI的构建中。Angular是一个使用TypeScript编写的开源前端框架,它是Google开发的一个用于构建web应用程序的平台。TypeScript是JavaScript的一个超集,添加了静态类型定义特性,以及基于类的面向对象编程概念。 最后,文件名称列表`DS_SUBSCRIBER-master`表明项目是按照常见的GitHub命名规则命名的,即项目主分支的名称通常是master或main。在版本控制系统如Git中,master分支通常用于存放当前开发的主要代码库。 总结来说,DS_SUBSCRIBER是一个基于J2SE Web服务器和Angular UI的订阅者应用程序,它演示了pubsub事件模型的使用,并提供了RESTful API以供与事件相关的操作,同时支持Postman作为API测试工具。开发者可以通过Maven构建该项目,并通过简单的脚本操作来启动和测试API。

class ArmConnect: public rclcpp::Node { public: ArmConnect(const arm_connect::TopicType &topic_param); ~ArmConnect() = default; Camera::ImageInfo& GetImageInfo(Camera::CameraNum num); std::vector<std::vector<double>>& GetPointCloudInfo(); void SaveCalibrationDataInfo(const std::string &filename); std::vector<CalibrationData::detection>& GetCalibrationDataInfo(); bool IsGetCalibrationIdInfo(); bool IsGetCakubrationDataInfo(); private: void ImageCallback(const sensor_msgs::msg::Image &msg); void PointCloudCallback(const sensor_msgs::msg::PointCloud2 &msg); void CalibrationDataCallback(const apriltag_msgs::msg::AprilTagDetectionArray &msg); private: rclcpp::Subscription<sensor_msgs::msg::Image>::SharedPtr image_subscriber_; Camera::ImageInfo camera_image_; std::mutex image_lock_; rclcpp::Subscription<sensor_msgs::msg::PointCloud2>::SharedPtr pointcloud_subscriber_; rclcpp::Publisher<sensor_msgs::msg::PointCloud2>:: SharedPtr pointcloud_publisher_; std::vector<std::vector<double>> pointcloud_vector_; pcl::PointCloud<pcl::PointXYZ>::Ptr point_cloud_; std::mutex pointcloud_lock_; rclcpp::Subscription<apriltag_msgs::msg::AprilTagDetectionArray>::SharedPtr calibrationdata_subscriber_; std::vector<CalibrationData::detection> calibrationdata_vector_; mutable bool calibrationdata_flag_ = false; mutable bool calibrationboard_flag_ = false; std::mutex Calibrationdata_lock_; int CalibrationID; }; 上述是一个类的定义,如何在main函数中给上述类中的 int CalibrationID 赋值

2023-06-09 上传