Message0203.java
5.79 KB
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
package com.bsth.socket.protocol;
import com.bsth.constant.Constant;
import com.bsth.util.ConvertUtil;
import java.util.Arrays;
/**
* @author Hill
* 燃料电池数据
*/
public class Message0203 implements IMessageBody02 {
/**
* 信息类型
* 默认应该为0x03
*/
private byte infoType;
/**
* 电池电压 0-20000
* 分辨率0.1v
* 0xff 0xfe 异常
* 0xff 0xff 无效
*/
private short voltage;
/**
* 电池电流 0-20000
* 分辨率0.1v
* 0xff 0xfe 异常
* 0xff 0xff 无效
*/
private short current;
/**
* 燃料消耗率 0-60000
* 分辨率0.01kg/100km
* 0xff 0xfe 异常
* 0xff 0xff 无效
*/
private short fuelConsumeRate;
/**
* 电池温度探针数量 0-65531
* n
* 0xff 0xfe 异常
* 0xff 0xff 无效
*/
private short tempProbeQuantity;
/**
* 累计里程 0-240
* 分辨率1℃ 偏移量-40 n*1
* 0xff 0xff 0xff 0xfe 异常
* 0xff 0xff 0xff 0xff 无效
*/
private byte[] temps;
/**
* 氢系统中最高温度值 0-2400
* 分辨率0.1℃ 偏移量-400
* 0xff 0xfe 异常
* 0xff 0xff 无效
*/
private short hydrogenMaxTemp;
/**
* 氢系统最高温度探针代号 1-252
* 0xfe 异常
* 0xff 无效
*/
private byte maxTempSensorCode;
/**
* 氢气最大浓度 0-60000
* 分辨率1mg/kg
* 0xFF 0xFE 异常
* 0xFF 0xFF 无效
*/
private short hydrogenMaxConcentration;
/**
* 氢气最大浓度传感器代号 1-252
* 0xfe 异常
* 0xff 无效
*/
private byte maxConcentrationSensorCode;
/**
* 氢气最高压力 0-1000
* 分辨率0.1MPa
* 0xFF 0xFE 异常
* 0xFF 0xFF 无效
*/
private short hydrogenMaxPressure;
/**
* 氢气最大浓度传感器代号 1-252
* 0xfe 异常
* 0xff 无效
*/
private byte maxPressureSensorCode;
/**
* dc-dc状态
* 0x01 工作
* 0x02 断开
* 0xFE 异常
* 0xFF 无效
*/
private byte dcState;
@Override
public void read(byte[] bytes, int idx) {
// TODO Auto-generated method stub
infoType = bytes[idx]; idx++;
voltage = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
current = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
fuelConsumeRate = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
tempProbeQuantity = bytes[idx]; idx++;
temps = Arrays.copyOfRange(bytes, idx, idx + (tempProbeQuantity & Constant.BYTE_INT)); idx += tempProbeQuantity & Constant.BYTE_INT;
hydrogenMaxTemp = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
maxTempSensorCode = bytes[idx]; idx++;
hydrogenMaxConcentration = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
maxConcentrationSensorCode = bytes[idx]; idx++;
hydrogenMaxPressure = (short) ConvertUtil.bytes2int(bytes, idx, 2); idx += 2;
maxPressureSensorCode = bytes[idx]; idx++;
dcState = bytes[idx]; idx++;
}
@Override
public int getByteLen() {
return 19 + temps.length;
}
public byte getInfoType() {
return infoType;
}
public void setInfoType(byte infoType) {
this.infoType = infoType;
}
public short getVoltage() {
return voltage;
}
public void setVoltage(short voltage) {
this.voltage = voltage;
}
public short getCurrent() {
return current;
}
public void setCurrent(short current) {
this.current = current;
}
public short getFuelConsumeRate() {
return fuelConsumeRate;
}
public void setFuelConsumeRate(short fuelConsumeRate) {
this.fuelConsumeRate = fuelConsumeRate;
}
public short getTempProbeQuantity() {
return tempProbeQuantity;
}
public void setTempProbeQuantity(short tempProbeQuantity) {
this.tempProbeQuantity = tempProbeQuantity;
}
public byte[] getTemps() {
return temps;
}
public void setTemps(byte[] temps) {
this.temps = temps;
}
public short getHydrogenMaxTemp() {
return hydrogenMaxTemp;
}
public void setHydrogenMaxTemp(short hydrogenMaxTemp) {
this.hydrogenMaxTemp = hydrogenMaxTemp;
}
public byte getMaxTempSensorCode() {
return maxTempSensorCode;
}
public void setMaxTempSensorCode(byte maxTempSensorCode) {
this.maxTempSensorCode = maxTempSensorCode;
}
public short getHydrogenMaxConcentration() {
return hydrogenMaxConcentration;
}
public void setHydrogenMaxConcentration(short hydrogenMaxConcentration) {
this.hydrogenMaxConcentration = hydrogenMaxConcentration;
}
public byte getMaxConcentrationSensorCode() {
return maxConcentrationSensorCode;
}
public void setMaxConcentrationSensorCode(byte maxConcentrationSensorCode) {
this.maxConcentrationSensorCode = maxConcentrationSensorCode;
}
public short getHydrogenMaxPressure() {
return hydrogenMaxPressure;
}
public void setHydrogenMaxPressure(short hydrogenMaxPressure) {
this.hydrogenMaxPressure = hydrogenMaxPressure;
}
public byte getMaxPressureSensorCode() {
return maxPressureSensorCode;
}
public void setMaxPressureSensorCode(byte maxPressureSensorCode) {
this.maxPressureSensorCode = maxPressureSensorCode;
}
public byte getDcState() {
return dcState;
}
public void setDcState(byte dcState) {
this.dcState = dcState;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(" 信息类型: ").append(String.format("%02x", infoType))
.append(" 电池电压: ").append(voltage)
.append(" 电池电流: ").append(current)
.append(" 燃料消耗率: ").append(fuelConsumeRate)
.append(" 电池温度探针数量: ").append(tempProbeQuantity)
.append(" 氢系统最高温度值: ").append(hydrogenMaxTemp)
.append(" 氢系统最高温度探针代号: ").append(maxTempSensorCode)
.append(" 氢气最大浓度: ").append(hydrogenMaxConcentration)
.append(" 氢气最大浓度传感器代号: ").append(maxConcentrationSensorCode)
.append(" 氢气最高压力: ").append(hydrogenMaxPressure)
.append(" 氢气最高压力传感器代号: ").append(maxPressureSensorCode)
.append(" dc-dc状态: ").append(dcState);
return sb.toString();
}
}