1. 引入依赖以及插件
依赖包如下:
<properties>
<grpc.version>1.69.0</grpc.version>
<protoc.version>3.25.3</protoc.version>
<grpc-java.version>1.69.0</grpc-java.version>
</properties>
<!-- gRPC protobuf 依赖 -->
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>${grpc.version}</version>
</dependency>
<!-- gRPC Stub 依赖 -->
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>${grpc.version}</version>
</dependency>
<!-- grpc-netty-shaded -->
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>${grpc.version}</version>
</dependency>
syntax = "proto3";
option java_multiple_files = false;
option java_package = "com.unipower.robot.server.component.grpc.power";
package powerManagement;
import "google/protobuf/empty.proto";
// 设备设置项
message DeviceSetting {
string device = 1; // 设备名称
bool status = 2; // 状态
bool necessary = 3; // 是否必要
}
// 设备电源控制请求
message DevicePowerControlRequest {
// 设备控制指令。
repeated DeviceSetting settings = 1;
}
// 设备电源控制响应
message DevicePowerControlResponse {
// 状态码。
// 成功:200;失败:500。
int32 code = 1;
// 操作结果消息。
// 成功:操作成功;失败:操作失败,失败原因
string message = 2;
}
message AppLayerPowerState {
// 电池数据
float voltage = 1;
float current = 2;
float rsoc = 3;
float nominalCapacity = 4;
uint32 cycleCount = 5;
// ----
// N1数据
bool shutdownSignal = 6;
bool buzzer = 7;
bool motor = 8;
// ----
// N2数据
bool appLayerCamera = 9;
bool radar = 10;
// ----
// 数据采集时间戳
uint64 timestamp = 11;
// 可变部分
string status = 12;
}
// L1E AppLayerPowerState.status JSON format
// "sideCharging": bool // 是否通过侧边充电中
// "bottomCharging": bool // 是否通过底部充电中
// "bottomChargeEnabled": bool // 底部充电开关状态
// "SC": bool // SC电源开关状态
// "controlBoardFan": bool // 控制板散热风扇开关状态
// "appBoardFan": bool // 应用板散热风扇开关状态
// "wiperFan": bool // 雨刷风扇开关状态
// "emergencyStopSignal": bool // 急停信号
// "alarmLight": bool // 告警灯开关状态
// 电源管理服务定义
service PowerManagementService {
// 控制设备电源状态
rpc SetDevicePowerState (DevicePowerControlRequest) returns (DevicePowerControlResponse);
// 获取电源状态状态
rpc GetAppLayerPowerStateOnce (google.protobuf.Empty) returns (AppLayerPowerState);
rpc GetAppLayerPowerStateStream (google.protobuf.Empty) returns (stream AppLayerPowerState);
}
compile
负责生成 Protobuf 消息类,用于数据序列化和反序列化。XXX.java
(Protobuf 消息类):对应.proto
文件中的message
定义,作为数据传输对象 (DTO)。XXXOrBuilder.java
(接口):用于支持 Protobuf 生成的类的Builder
模式。
compile-custom
作用是调用 protoc-gen-grpc–java 插件,生成 gRPC 相关的 Java 代码。XXXGrpc.java
(gRPC 服务类):包含 gRPC 服务器和客户端的存根 (stub)。XXXGrpc.XxxBlockingStub
(同步调用的客户端存根)XXXGrpc.XxxFutureStub
(异步调用的客户端存根)XXXGrpc.XxxStub
(非阻塞调用的客户端存根)XXXGrpc.XXXImplBase
(服务器端基类,服务端需要继承该类并实现具体逻辑)
compile
负责- 孙菲菲
2. 引入依赖以及插件
正文完