diff options
author | Anton Tananaev <anton@traccar.org> | 2024-02-28 06:06:16 -0800 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2024-02-28 06:06:16 -0800 |
commit | 0e77bb0fd407806ce11593db37aa8557101022fe (patch) | |
tree | aaf62ab16781944ccf4bf49dbb8c036eec1c4192 | |
parent | 35829121adea923d0184e88d38939713bd5f9d4a (diff) | |
download | trackermap-server-0e77bb0fd407806ce11593db37aa8557101022fe.tar.gz trackermap-server-0e77bb0fd407806ce11593db37aa8557101022fe.tar.bz2 trackermap-server-0e77bb0fd407806ce11593db37aa8557101022fe.zip |
Add GV350M series CAN support
-rw-r--r-- | src/main/java/org/traccar/protocol/Gl200TextProtocolDecoder.java | 9 | ||||
-rw-r--r-- | src/test/java/org/traccar/protocol/Gl200TextProtocolDecoderTest.java | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/main/java/org/traccar/protocol/Gl200TextProtocolDecoder.java b/src/main/java/org/traccar/protocol/Gl200TextProtocolDecoder.java index 8fb30e2ad..0dac0ad70 100644 --- a/src/main/java/org/traccar/protocol/Gl200TextProtocolDecoder.java +++ b/src/main/java/org/traccar/protocol/Gl200TextProtocolDecoder.java @@ -432,8 +432,8 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder { if (BitUtil.check(reportMask, 1) && !values[index++].isEmpty()) { position.set(Position.KEY_IGNITION, Integer.parseInt(values[index - 1]) > 0); } - if (BitUtil.check(reportMask, 2)) { - position.set(Position.KEY_OBD_ODOMETER, values[index++]); + if (BitUtil.check(reportMask, 2) && !values[index++].isEmpty()) { + position.set(Position.KEY_OBD_ODOMETER, Integer.parseInt(values[index - 1].substring(1))); } if (BitUtil.check(reportMask, 3) && !values[index++].isEmpty()) { position.set(Position.KEY_FUEL_USED, Double.parseDouble(values[index - 1])); @@ -448,7 +448,10 @@ public class Gl200TextProtocolDecoder extends BaseProtocolDecoder { position.set(Position.KEY_COOLANT_TEMP, Integer.parseInt(values[index - 1])); } if (BitUtil.check(reportMask, 7) && !values[index++].isEmpty()) { - position.set(Position.KEY_FUEL_CONSUMPTION, Double.parseDouble(values[index - 1].substring(1))); + String value = values[index - 1]; + if (value.startsWith("L/H")) { + position.set(Position.KEY_FUEL_CONSUMPTION, Double.parseDouble(value.substring(3))); + } } if (BitUtil.check(reportMask, 8) && !values[index++].isEmpty()) { position.set(Position.KEY_FUEL_LEVEL, Double.parseDouble(values[index - 1].substring(1))); diff --git a/src/test/java/org/traccar/protocol/Gl200TextProtocolDecoderTest.java b/src/test/java/org/traccar/protocol/Gl200TextProtocolDecoderTest.java index 6327f6579..a6e1c212f 100644 --- a/src/test/java/org/traccar/protocol/Gl200TextProtocolDecoderTest.java +++ b/src/test/java/org/traccar/protocol/Gl200TextProtocolDecoderTest.java @@ -11,6 +11,9 @@ public class Gl200TextProtocolDecoderTest extends ProtocolTest { var decoder = inject(new Gl200TextProtocolDecoder(null)); + verifyAttributes(decoder, buffer( + "+RESP:GTCAN,F10413,862599050467479,GV350M,0,1,C18CFDFF,3BKHHZ8X7GF723380,2,H2898058,232160.50,896,0,64,L/H1.5,P99.20,0,40532.95,,,,,,,,,,,1,0.0,234,2812.2,-78.508807,-0.218812,20240226211921,,,,,,20240226211922,DE03$")); + verifyPositions(decoder, buffer( "+RESP:GTFRI,8020040305,866314060272661,,,50,1,1,0.0,0,2957.9,-78.691727,-0.951205,20231227162916,,,,,00,0.0,,,,,100,210100,,,,20231227162916,0117$")); |