jiangping
2025-02-14 c185de12314b8733f23ed7856e6d1e87ee95c1ca
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
package org.yzh.protocol.t808;
 
import io.github.yezhihao.protostar.annotation.Field;
import io.github.yezhihao.protostar.annotation.Message;
import io.swagger.models.auth.In;
import lombok.Data;
import org.yzh.protocol.basics.JTMessage;
import org.yzh.protocol.commons.JT808;
import org.yzh.protocol.commons.transform.AttributeConverter;
import org.yzh.protocol.commons.transform.AttributeConverterYue;
 
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Map;
 
/**
 * @author yezhihao
 * https://gitee.com/yezhihao/jt808-server
 */
@Message(JT808.位置信息汇报)
@Data
public class T0200 extends JTMessage {
 
    /**
     * 使用 Bit.isTrue判断报警和状态标志位
     * @see org.yzh.protocol.commons.Bit
     */
    @Field(length = 4, desc = "报警标志")
    private int warnBit;
    @Field(length = 4, desc = "状态")
    private int statusBit;
    @Field(length = 4, desc = "纬度")
    private int latitude;
    @Field(length = 4, desc = "经度")
    private int longitude;
    @Field(length = 2, desc = "高程(米)")
    private int altitude;
    @Field(length = 2, desc = "速度(1/10公里每小时)")
    private int speed;
    @Field(length = 2, desc = "方向")
    private int direction;
    @Field(length = 6, charset = "BCD", desc = "时间(YYYY-MM-DDTHH-mm-ss)")
    private LocalDateTime deviceTime;
    @Field(converter = AttributeConverter.class, desc = "位置附加信息", version = {-1, 0})
    @Field(converter = AttributeConverterYue.class, desc = "位置附加信息(粤标)", version = 1)
    private Map<Integer, Object> attributes;
 
    public int getWarnBit() {
        return warnBit;
    }
 
    public void setWarnBit(int warnBit) {
        this.warnBit = warnBit;
    }
 
    public int getStatusBit() {
        return statusBit;
    }
 
    public void setStatusBit(int statusBit) {
        this.statusBit = statusBit;
    }
 
    public int getLatitude() {
        return latitude;
    }
 
    public void setLatitude(int latitude) {
        this.latitude = latitude;
    }
 
    public int getLongitude() {
        return longitude;
    }
 
    public void setLongitude(int longitude) {
        this.longitude = longitude;
    }
 
    public int getAltitude() {
        return altitude;
    }
 
    public void setAltitude(int altitude) {
        this.altitude = altitude;
    }
 
    public int getSpeed() {
        return speed;
    }
 
    public void setSpeed(int speed) {
        this.speed = speed;
    }
 
    public int getDirection() {
        return direction;
    }
 
    public void setDirection(int direction) {
        this.direction = direction;
    }
 
    public LocalDateTime getDeviceTime() {
        return deviceTime;
    }
 
    public void setDeviceTime(LocalDateTime deviceTime) {
        this.deviceTime = deviceTime;
    }
 
 
 
    @Override
    public String toString() {
        StringBuilder sb = toStringHead();
        sb.append("T0200{deviceTime=").append(deviceTime);
        sb.append(",longitude=").append(longitude);
        sb.append(",latitude=").append(latitude);
        sb.append(",altitude=").append(altitude);
        sb.append(",speed=").append(speed);
        sb.append(",direction=").append(direction);
        sb.append(",warnBit=").append(Integer.toBinaryString(warnBit));
        sb.append(",statusBit=").append(Integer.toBinaryString(statusBit));
        sb.append(",attributes=").append(attributes);
        sb.append('}');
        return sb.toString();
    }
}