From 98199ec657879cbea20d2364496b53c5f69e4e1f Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Sat, 16 Mar 2024 23:41:29 +0800 Subject: [PATCH] =?UTF-8?q?1078-=E4=BC=98=E5=8C=96BCD=E7=A0=81=E8=A7=A3?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/vmp/jt1078/bean/JTAlarmSign.java | 60 +++++++++---------- .../iot/vmp/jt1078/bean/JTStatus.java | 42 ++++++------- .../iot/vmp/jt1078/util/BCDUtil.java | 15 +++-- 3 files changed, 61 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTAlarmSign.java b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTAlarmSign.java index 6133090fd..04b638ced 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTAlarmSign.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTAlarmSign.java @@ -82,36 +82,36 @@ public class JTAlarmSign { } // 解析alarm参数 this.urgent = (alarmSignInt & 1) == 1; - this.alarmSpeeding = (alarmSignInt >> 1 & 1) == 1; - this.alarmTired = (alarmSignInt >> 2 & 1) == 1; - this.alarmDangerous = (alarmSignInt >> 3 & 1) == 1; - this.alarmGnssFault = (alarmSignInt >> 4 & 1) == 1; - this.alarmGnssBreak = (alarmSignInt >> 5 & 1) == 1; - this.alarmGnssShortCircuited = (alarmSignInt >> 6 & 1) == 1; - this.alarmUnderVoltage = (alarmSignInt >> 7 & 1) == 1; - this.alarmPowerOff = (alarmSignInt >> 8 & 1) == 1; - this.alarmLCD = (alarmSignInt >> 9 & 1) == 1; - this.alarmTtsFault = (alarmSignInt >> 10 & 1) == 1; - this.alarmCameraFault = (alarmSignInt >> 11 & 1) == 1; - this.alarmIcFault = (alarmSignInt >> 12 & 1) == 1; - this.warningSpeeding = (alarmSignInt >> 13 & 1) == 1; - this.warningTired = (alarmSignInt >> 14 & 1) == 1; - this.alarmwrong = (alarmSignInt >> 15 & 1) == 1; - this.warningTirePressure = (alarmSignInt >> 16 & 1) == 1; - this.alarmBlindZone = (alarmSignInt >> 17 & 1) == 1; - this.alarmDrivingTimeout = (alarmSignInt >> 18 & 1) == 1; - this.alarmParkingTimeout = (alarmSignInt >> 19 & 1) == 1; - this.alarmRegion = (alarmSignInt >> 20 & 1) == 1; - this.alarmRoute = (alarmSignInt >> 21 & 1) == 1; - this.alarmTravelTime = (alarmSignInt >> 22 & 1) == 1; - this.alarmRouteDeviation = (alarmSignInt >> 23 & 1) == 1; - this.alarmVSS = (alarmSignInt >> 24 & 1) == 1; - this.alarmOil = (alarmSignInt >> 25 & 1) == 1; - this.alarmStolen = (alarmSignInt >> 26 & 1) == 1; - this.alarmIllegalIgnition = (alarmSignInt >> 27 & 1) == 1; - this.alarmIllegalDisplacement = (alarmSignInt >> 28 & 1) == 1; - this.alarmRollover = (alarmSignInt >> 29 & 1) == 1; - this.warningRollover = (alarmSignInt >> 30 & 1) == 1; + this.alarmSpeeding = (alarmSignInt >>> 1 & 1) == 1; + this.alarmTired = (alarmSignInt >>> 2 & 1) == 1; + this.alarmDangerous = (alarmSignInt >>> 3 & 1) == 1; + this.alarmGnssFault = (alarmSignInt >>> 4 & 1) == 1; + this.alarmGnssBreak = (alarmSignInt >>> 5 & 1) == 1; + this.alarmGnssShortCircuited = (alarmSignInt >>> 6 & 1) == 1; + this.alarmUnderVoltage = (alarmSignInt >>> 7 & 1) == 1; + this.alarmPowerOff = (alarmSignInt >>> 8 & 1) == 1; + this.alarmLCD = (alarmSignInt >>> 9 & 1) == 1; + this.alarmTtsFault = (alarmSignInt >>> 10 & 1) == 1; + this.alarmCameraFault = (alarmSignInt >>> 11 & 1) == 1; + this.alarmIcFault = (alarmSignInt >>> 12 & 1) == 1; + this.warningSpeeding = (alarmSignInt >>> 13 & 1) == 1; + this.warningTired = (alarmSignInt >>> 14 & 1) == 1; + this.alarmwrong = (alarmSignInt >>> 15 & 1) == 1; + this.warningTirePressure = (alarmSignInt >>> 16 & 1) == 1; + this.alarmBlindZone = (alarmSignInt >>> 17 & 1) == 1; + this.alarmDrivingTimeout = (alarmSignInt >>> 18 & 1) == 1; + this.alarmParkingTimeout = (alarmSignInt >>> 19 & 1) == 1; + this.alarmRegion = (alarmSignInt >>> 20 & 1) == 1; + this.alarmRoute = (alarmSignInt >>> 21 & 1) == 1; + this.alarmTravelTime = (alarmSignInt >>> 22 & 1) == 1; + this.alarmRouteDeviation = (alarmSignInt >>> 23 & 1) == 1; + this.alarmVSS = (alarmSignInt >>> 24 & 1) == 1; + this.alarmOil = (alarmSignInt >>> 25 & 1) == 1; + this.alarmStolen = (alarmSignInt >>> 26 & 1) == 1; + this.alarmIllegalIgnition = (alarmSignInt >>> 27 & 1) == 1; + this.alarmIllegalDisplacement = (alarmSignInt >>> 28 & 1) == 1; + this.alarmRollover = (alarmSignInt >>> 29 & 1) == 1; + this.warningRollover = (alarmSignInt >>> 30 & 1) == 1; } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTStatus.java b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTStatus.java index 3a508b539..2d7cb8eb4 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTStatus.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/bean/JTStatus.java @@ -80,27 +80,27 @@ public class JTStatus { return; } this.acc = (statusInt & 1) == 1; - this.positioning = (statusInt >> 1 & 1) == 1; - this.southLatitude = (statusInt >> 2 & 1) == 1; - this.wesLongitude = (statusInt >> 3 & 1) == 1; - this.outage = (statusInt >> 4 & 1) == 1; - this.positionEncryption = (statusInt >> 5 & 1) == 1; - this.warningFrontCrash = (statusInt >> 6 & 1) == 1; - this.warningShifting = (statusInt >> 7 & 1) == 1; - this.load = (statusInt >> 8 & 3); - this.oilWayBreak = (statusInt >> 10 & 1) == 1; - this.circuitBreak = (statusInt >> 11 & 1) == 1; - this.doorLocking = (statusInt >> 12 & 1) == 1; - this.door1Open = (statusInt >> 13 & 1) == 1; - this.door2Open = (statusInt >> 14 & 1) == 1; - this.door3Open = (statusInt >> 15 & 1) == 1; - this.door4Open = (statusInt >> 16 & 1) == 1; - this.door5Open = (statusInt >> 17 & 1) == 1; - this.gps = (statusInt >> 18 & 1) == 1; - this.beidou = (statusInt >> 19 & 1) == 1; - this.glonass = (statusInt >> 20 & 1) == 1; - this.gaLiLeo = (statusInt >> 21 & 1) == 1; - this.driving = (statusInt >> 22 & 1) == 1; + this.positioning = (statusInt >>> 1 & 1) == 1; + this.southLatitude = (statusInt >>> 2 & 1) == 1; + this.wesLongitude = (statusInt >>> 3 & 1) == 1; + this.outage = (statusInt >>> 4 & 1) == 1; + this.positionEncryption = (statusInt >>> 5 & 1) == 1; + this.warningFrontCrash = (statusInt >>> 6 & 1) == 1; + this.warningShifting = (statusInt >>> 7 & 1) == 1; + this.load = (statusInt >>> 8 & 3); + this.oilWayBreak = (statusInt >>> 10 & 1) == 1; + this.circuitBreak = (statusInt >>> 11 & 1) == 1; + this.doorLocking = (statusInt >>> 12 & 1) == 1; + this.door1Open = (statusInt >>> 13 & 1) == 1; + this.door2Open = (statusInt >>> 14 & 1) == 1; + this.door3Open = (statusInt >>> 15 & 1) == 1; + this.door4Open = (statusInt >>> 16 & 1) == 1; + this.door5Open = (statusInt >>> 17 & 1) == 1; + this.gps = (statusInt >>> 18 & 1) == 1; + this.beidou = (statusInt >>> 19 & 1) == 1; + this.glonass = (statusInt >>> 20 & 1) == 1; + this.gaLiLeo = (statusInt >>> 21 & 1) == 1; + this.driving = (statusInt >>> 22 & 1) == 1; } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/util/BCDUtil.java b/src/main/java/com/genersoft/iot/vmp/jt1078/util/BCDUtil.java index b4ba8211c..39a67d04e 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/util/BCDUtil.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/util/BCDUtil.java @@ -1,17 +1,22 @@ package com.genersoft.iot.vmp.jt1078.util; +/** + * BCD码转换 + */ public class BCDUtil { public static String transform(byte[] bytes) { if (bytes.length == 0) { return null; } - // BCD[6] 解析时间 - StringBuffer temp = new StringBuffer(bytes.length * 2); + // BCD + StringBuilder stringBuffer = new StringBuilder(bytes.length * 2); for (int i = 0; i < bytes.length; i++) { - temp.append((byte) ((bytes[i] & 0xf0) >>> 4)); - temp.append((byte) (bytes[i] & 0x0f)); + // 每次取出四位的值,一个byte是八位,第一取出高四位,第二次取出低四位, + // 这里也可以先 & 0xf0再右移4位,0xf0二进制为11110000,与运算后,可以得到高4位是值,低四位清零的结果 + stringBuffer.append((byte) ((bytes[i] >>> 4 & 0xf))); + stringBuffer.append((byte) (bytes[i] & 0x0f)); } - return temp.toString(); + return stringBuffer.toString(); } }