张世豪
3 天以前 0930bed760105b81e2e5055801bec6d6e8d57358
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package Mqttmessage.Entity;
 
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
@Data
@NoArgsConstructor
@AllArgsConstructor
public class GPSData{
    // JSON中的原始字段
    private String msg_id;          // 消息唯一标识
    private Long timestamp;         // 时间戳(毫秒)
    private String device_id;       // 设备编号
    private String data_type;       // 数据类型
    private String gps_raw;         // 原始GPS数据
 
    // IMU数据内部类
    private IMUData imu_data;
 
    // 状态数据(新协议格式)
    private StatusInfo status;
 
    // NMEA GGA解析结果(可选,根据需要添加)
    private GGAData ggaData;
 
    /**
     * 获取原始GPS数据
     * @return 原始GPS数据字符串
     */
    public String getGps_raw() {
        return gps_raw;
    }
 
    /**
     * 设置原始GPS数据
     * @param gps_raw 原始GPS数据字符串
     */
    public void setGps_raw(String gps_raw) {
        this.gps_raw = gps_raw;
    }
 
 
 
 
 
    /**
     * IMU数据内部类(简化版,只包含角度信息)
     */
    @Data
    @NoArgsConstructor
    public static class IMUData {
        private Double roll;       // 横滚角 角度
        private Double pitch;      // 俯仰角 角度
        private Double yaw;        // 偏航角 角度
 
        /**
         * 带参数的构造函数
         * @param roll 横滚角 角度
         * @param pitch 俯仰角 角度
         * @param yaw 偏航角 角度
         */
        public IMUData(Double roll, Double pitch, Double yaw) {
            this.roll = roll;
            this.pitch = pitch;
            this.yaw = yaw;
        }
    }
 
    /**
     * 状态信息内部类(与StatusData中的StatusInfo保持一致)
     */
    @Data
    @NoArgsConstructor
    public static class StatusInfo {
        private Integer battery_level;      // 电池电量百分比
        private Double battery_voltage;     // 电池电压
        private String operation_mode;      // 操作模式:manual, auto, emergency_stop
        private String motor_status;        // 电机状态:stopped, running, error
        private String blade_status;        // 刀片状态:stopped, rotating
        private Integer blade_height;       // 刀盘高度 厘米
        private Integer self_check_status;  // 自检状态:1-完成,0-未完成
        private Integer error_code;         // 错误代码
        private String error_message;       // 错误信息
 
        /**
         * 带参数的构造函数
         * @param battery_level 电池电量百分比
         * @param battery_voltage 电池电压
         * @param operation_mode 操作模式:manual, auto, emergency_stop
         * @param motor_status 电机状态:stopped, running, error
         * @param blade_status 刀片状态:stopped, rotating
         * @param blade_height 刀盘高度 厘米
         * @param self_check_status 自检状态:1-完成,0-未完成
         * @param error_code 错误代码
         * @param error_message 错误信息
         */
        public StatusInfo(Integer battery_level, Double battery_voltage, String operation_mode,
                         String motor_status, String blade_status, Integer blade_height,
                         Integer self_check_status, Integer error_code, String error_message) {
            this.battery_level = battery_level;
            this.battery_voltage = battery_voltage;
            this.operation_mode = operation_mode;
            this.motor_status = motor_status;
            this.blade_status = blade_status;
            this.blade_height = blade_height;
            this.self_check_status = self_check_status;
            this.error_code = error_code;
            this.error_message = error_message;
        }
    }
 
    /**
     * GGA数据解析类(可选,用于存储解析后的GGA数据)
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class GGAData {
        private String utcTime;     // UTC时间
        private String latitude;    // 纬度(原始度分格式)
        private String latitudeDir; // 纬度方向
        private String longitude;   // 经度(原始度分格式)
        private String longitudeDir;// 经度方向
        private Integer gpsQuality; // GPS质量指示
        private Integer satellites; // 使用的卫星数量
        private Double hdop;        // 水平精度因子
        private Double altitude;    // 海拔高度
        private String altitudeUnit;// 海拔高度单位
        private Double geoidSep;    // 大地水准面分离
        private String geoidSepUnit;// 大地水准面分离单位
        private String age;         // 差分GPS数据期限
        private String stationId;   // 差分参考基站标号
    }
}