|
@@ -10,8 +10,8 @@ public class DataParser {
|
|
|
public static GasMonitorData parseMessage(byte[] frame) {
|
|
public static GasMonitorData parseMessage(byte[] frame) {
|
|
|
GasMonitorData data = new GasMonitorData();
|
|
GasMonitorData data = new GasMonitorData();
|
|
|
|
|
|
|
|
- // 帧类型(直接输出)
|
|
|
|
|
- data.setFrameType(Integer.valueOf(String.format("%02X", frame[3])));
|
|
|
|
|
|
|
+ // 帧类型
|
|
|
|
|
+ data.setFrameType(frame[3] & 0xFF);
|
|
|
|
|
|
|
|
// MAC 地址 (4~11)
|
|
// MAC 地址 (4~11)
|
|
|
byte[] macBytes = new byte[8];
|
|
byte[] macBytes = new byte[8];
|
|
@@ -19,10 +19,11 @@ public class DataParser {
|
|
|
data.setMacAddress(ProtocolUtils.bytesToHex(macBytes));
|
|
data.setMacAddress(ProtocolUtils.bytesToHex(macBytes));
|
|
|
|
|
|
|
|
// 短地址 (12~13)
|
|
// 短地址 (12~13)
|
|
|
- data.setShortAddress(String.format("%02X%02X", frame[12], frame[13]));
|
|
|
|
|
|
|
+ int shortAddressDecimal = ((frame[12] & 0xFF) << 8) | (frame[13] & 0xFF);
|
|
|
|
|
+ data.setShortAddress(String.valueOf(shortAddressDecimal));
|
|
|
|
|
|
|
|
// 自动应答 (14)
|
|
// 自动应答 (14)
|
|
|
- data.setAutoReplyOption(Integer.valueOf(String.format("%02X", frame[14])));
|
|
|
|
|
|
|
+ data.setAutoReplyOption( frame[14] & 0xFF);
|
|
|
|
|
|
|
|
// 跳过 AA 帧头(15) 和数据长度(16)
|
|
// 跳过 AA 帧头(15) 和数据长度(16)
|
|
|
int offset = 17;
|
|
int offset = 17;
|
|
@@ -40,11 +41,11 @@ public class DataParser {
|
|
|
offset++;
|
|
offset++;
|
|
|
|
|
|
|
|
// 协议版本 (20)
|
|
// 协议版本 (20)
|
|
|
- data.setProtocolVersion(String.format("%02X", frame[offset]));
|
|
|
|
|
|
|
+ data.setProtocolVersion(String.valueOf(frame[offset] & 0xFF));
|
|
|
offset++;
|
|
offset++;
|
|
|
|
|
|
|
|
// 报警信息 (21~22)
|
|
// 报警信息 (21~22)
|
|
|
- int alarmInfo = ((frame[offset + 1] & 0xFF) << 8) | (frame[offset] & 0xFF);
|
|
|
|
|
|
|
+ int alarmInfo = (frame[offset] & 0xFF ) | ((frame[offset + 1] & 0xFF) << 8);
|
|
|
data.setAlarmInfo(alarmInfo);
|
|
data.setAlarmInfo(alarmInfo);
|
|
|
offset += 2;
|
|
offset += 2;
|
|
|
|
|
|
|
@@ -133,7 +134,7 @@ public class DataParser {
|
|
|
System.out.println("命令: " + parsed.getCommand());
|
|
System.out.println("命令: " + parsed.getCommand());
|
|
|
System.out.println("设备属性: " + parsed.getDeviceAttr());
|
|
System.out.println("设备属性: " + parsed.getDeviceAttr());
|
|
|
System.out.println("协议版本: " + parsed.getProtocolVersion());
|
|
System.out.println("协议版本: " + parsed.getProtocolVersion());
|
|
|
- System.out.println("报警信息: " + parsed.getAlarmInfo());
|
|
|
|
|
|
|
+ System.out.println("报警信息: " + parsed.getAlarmInfo()); // 此处输出已为大小端转换后的值
|
|
|
System.out.println("时间戳: " + parsed.getReportTime());
|
|
System.out.println("时间戳: " + parsed.getReportTime());
|
|
|
System.out.println("气体浓度: " + parsed.getGasConcentration() + " " + parsed.getGasUnit());
|
|
System.out.println("气体浓度: " + parsed.getGasConcentration() + " " + parsed.getGasUnit());
|
|
|
System.out.println("气体类型: " + parsed.getGasType());
|
|
System.out.println("气体类型: " + parsed.getGasType());
|