From 3ad24b1986bac058fae59249d010452d8554f518 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 16 Dec 2017 16:15:47 +1300 Subject: Decode remaining GV65 CAN data --- src/org/traccar/model/Position.java | 1 + .../traccar/protocol/AplicomProtocolDecoder.java | 2 +- .../traccar/protocol/Gl200TextProtocolDecoder.java | 50 +++++++++++----------- .../protocol/IntellitracProtocolDecoder.java | 2 +- src/org/traccar/protocol/TytanProtocolDecoder.java | 2 +- 5 files changed, 29 insertions(+), 28 deletions(-) (limited to 'src/org') diff --git a/src/org/traccar/model/Position.java b/src/org/traccar/model/Position.java index 099e6d686..4f78867c2 100644 --- a/src/org/traccar/model/Position.java +++ b/src/org/traccar/model/Position.java @@ -78,6 +78,7 @@ public class Position extends Message { public static final String KEY_COMMAND = "command"; public static final String KEY_BLOCKED = "blocked"; public static final String KEY_DOOR = "door"; + public static final String KEY_AXLE_WEIGHT = "axleWeight"; public static final String KEY_DTCS = "dtcs"; public static final String KEY_OBD_SPEED = "obdSpeed"; // knots diff --git a/src/org/traccar/protocol/AplicomProtocolDecoder.java b/src/org/traccar/protocol/AplicomProtocolDecoder.java index 154451b5b..c1d7ab087 100644 --- a/src/org/traccar/protocol/AplicomProtocolDecoder.java +++ b/src/org/traccar/protocol/AplicomProtocolDecoder.java @@ -486,7 +486,7 @@ public class AplicomProtocolDecoder extends BaseProtocolDecoder { position.set("vehicleSpeed", buf.readUnsignedShort() / 256.0); break; case 0x03: - position.set("axleLoadSum", buf.readUnsignedShort() * 2); + position.set(Position.KEY_AXLE_WEIGHT, buf.readUnsignedShort() * 2); break; case 0x04: position.set("tyrePressure", buf.readUnsignedByte() * 10); diff --git a/src/org/traccar/protocol/Gl200TextProtocolDecoder.java b/src/org/traccar/protocol/Gl200TextProtocolDecoder.java index d7468e71d..9429cff2f 100644 --- a/src/org/traccar/protocol/Gl200TextProtocolDecoder.java +++ b/src/org/traccar/protocol/Gl200TextProtocolDecoder.java @@ -552,7 +552,7 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder { position.set(Position.KEY_IGNITION, Integer.parseInt(values[index++]) > 0); } if (BitUtil.check(reportMask, 2)) { - index += 1; // total distance + position.set("totalVehicleDistance", values[index++]); } if (BitUtil.check(reportMask, 3)) { position.set("totalFuelConsumption", Double.parseDouble(values[index++])); @@ -566,14 +566,14 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder { if (BitUtil.check(reportMask, 6)) { position.set(Position.KEY_COOLANT_TEMP, Integer.parseInt(values[index++])); } - if (BitUtil.check(reportMask, 7)) { - index += 1; // fuel consumption + if (BitUtil.check(reportMask, 7) && !values[index++].isEmpty()) { + position.set(Position.KEY_FUEL_CONSUMPTION, Double.parseDouble(values[index - 1].substring(1))); } - if (BitUtil.check(reportMask, 8)) { - index += 1; // fuel level + if (BitUtil.check(reportMask, 8) && !values[index++].isEmpty()) { + position.set(Position.KEY_FUEL_LEVEL, Double.parseDouble(values[index - 1].substring(1))); } - if (BitUtil.check(reportMask, 9)) { - index += 1; // range + if (BitUtil.check(reportMask, 9) && !values[index++].isEmpty()) { + position.set("range", Long.parseLong(values[index - 1]) * 100); } if (BitUtil.check(reportMask, 10) && !values[index++].isEmpty()) { position.set(Position.KEY_THROTTLE, Integer.parseInt(values[index - 1])); @@ -582,34 +582,34 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder { position.set(Position.KEY_HOURS, Double.parseDouble(values[index++])); } if (BitUtil.check(reportMask, 12)) { - index += 1; // driving time + position.set("drivingHours", Double.parseDouble(values[index++])); } if (BitUtil.check(reportMask, 13)) { - index += 1; // idle time + position.set("idleHours", Double.parseDouble(values[index++])); } - if (BitUtil.check(reportMask, 14)) { - index += 1; // idle fuel + if (BitUtil.check(reportMask, 14) && !values[index++].isEmpty()) { + position.set("idleFuelConsumption", Double.parseDouble(values[index - 1])); } - if (BitUtil.check(reportMask, 15)) { - index += 1; // axle weight + if (BitUtil.check(reportMask, 15) && !values[index++].isEmpty()) { + position.set(Position.KEY_AXLE_WEIGHT, Integer.parseInt(values[index - 1])); } - if (BitUtil.check(reportMask, 16)) { - index += 1; // tachograph info + if (BitUtil.check(reportMask, 16) && !values[index++].isEmpty()) { + position.set("tachographInfo", Integer.parseInt(values[index - 1])); } - if (BitUtil.check(reportMask, 17)) { - index += 1; // indicators + if (BitUtil.check(reportMask, 17) && !values[index++].isEmpty()) { + position.set("indicators", Integer.parseInt(values[index - 1])); } - if (BitUtil.check(reportMask, 18)) { - index += 1; // lights + if (BitUtil.check(reportMask, 18) && !values[index++].isEmpty()) { + position.set("lights", Integer.parseInt(values[index - 1])); } - if (BitUtil.check(reportMask, 19)) { - index += 1; // doors + if (BitUtil.check(reportMask, 19) && !values[index++].isEmpty()) { + position.set("doors", Integer.parseInt(values[index - 1])); } - if (BitUtil.check(reportMask, 20)) { - index += 1; // total vehicle overspeed time + if (BitUtil.check(reportMask, 20) && !values[index++].isEmpty()) { + position.set("vehicleOverspeed", Double.parseDouble(values[index - 1])); } - if (BitUtil.check(reportMask, 21)) { - index += 1; // total engine overspeed time + if (BitUtil.check(reportMask, 21) && !values[index++].isEmpty()) { + position.set("engineOverspeed", Double.parseDouble(values[index - 1])); } if (BitUtil.check(reportMask, 29)) { index += 1; // expansion diff --git a/src/org/traccar/protocol/IntellitracProtocolDecoder.java b/src/org/traccar/protocol/IntellitracProtocolDecoder.java index 8f4e4c0d6..4a526376e 100644 --- a/src/org/traccar/protocol/IntellitracProtocolDecoder.java +++ b/src/org/traccar/protocol/IntellitracProtocolDecoder.java @@ -109,7 +109,7 @@ public class IntellitracProtocolDecoder extends BaseProtocolDecoder { position.set(Position.PREFIX_TEMP + 1, parser.nextInt(0)); position.set("chargerPressure", parser.nextInt(0)); position.set("tpl", parser.nextInt(0)); - position.set("axle", parser.nextInt(0)); + position.set(Position.KEY_AXLE_WEIGHT, parser.nextInt(0)); position.set(Position.KEY_OBD_ODOMETER, parser.nextInt(0)); return position; diff --git a/src/org/traccar/protocol/TytanProtocolDecoder.java b/src/org/traccar/protocol/TytanProtocolDecoder.java index 0ae669784..de0330250 100644 --- a/src/org/traccar/protocol/TytanProtocolDecoder.java +++ b/src/org/traccar/protocol/TytanProtocolDecoder.java @@ -84,7 +84,7 @@ public class TytanProtocolDecoder extends BaseProtocolDecoder { } break; case 28: - position.set("weight", buf.readUnsignedShort()); + position.set(Position.KEY_AXLE_WEIGHT, buf.readUnsignedShort()); buf.readUnsignedByte(); break; case 90: -- cgit v1.2.3