package org.yzh.protocol.t808; import io.github.yezhihao.protostar.annotation.Field; import io.github.yezhihao.protostar.annotation.Message; import lombok.Data; import lombok.ToString; import lombok.experimental.Accessors; 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.time.LocalDateTime; import java.util.Map; /** * @author yezhihao * https://gitee.com/yezhihao/jt808-server */ @ToString @Data @Accessors(chain = true) @Message(JT808.位置信息汇报) 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 = "时间(YYMMDDHHMMSS)") private LocalDateTime deviceTime; @Field(converter = AttributeConverter.class, desc = "位置附加信息", version = {-1, 0}) // @Field(converter = AttributeConverterYue.class, desc = "位置附加信息(粤标)", version = 1) private Map attributes; public int getAttributeInt(int key) { if (attributes != null) { Integer value = (Integer) attributes.get(key); if (value != null) { return value; } } return 0; } public long getAttributeLong(int key) { if (attributes != null) { Long value = (Long) attributes.get(key); if (value != null) { return value; } } return 0L; } public double getLng() { return longitude / 1000000d; } public double getLat() { return latitude / 1000000d; } public float getSpeedKph() { return latitude / 10f; } }