diff options
-rw-r--r-- | src/org/traccar/protocol/WialonProtocolDecoder.java | 18 | ||||
-rw-r--r-- | test/org/traccar/protocol/WialonProtocolDecoderTest.java | 6 |
2 files changed, 20 insertions, 4 deletions
diff --git a/src/org/traccar/protocol/WialonProtocolDecoder.java b/src/org/traccar/protocol/WialonProtocolDecoder.java index 65cc17bcd..5b8d9a24e 100644 --- a/src/org/traccar/protocol/WialonProtocolDecoder.java +++ b/src/org/traccar/protocol/WialonProtocolDecoder.java @@ -47,8 +47,8 @@ public class WialonProtocolDecoder extends BaseProtocolDecoder { "([NS]);" + "(\\d{3})(\\d{2}\\.\\d+);" + // Longitude (DDDMM.MMMM) "([EW]);" + - "(\\d+\\.?\\d*);" + // Speed - "(\\d+\\.?\\d*);" + // Course + "(\\d+\\.?\\d*)?;" + // Speed + "(\\d+\\.?\\d*)?;" + // Course "(?:(\\d+\\.?\\d*)|NA);" + // Altitude "(?:(\\d+)|NA)" + // Satellites ".*"); // Full format @@ -103,10 +103,20 @@ public class WialonProtocolDecoder extends BaseProtocolDecoder { position.setLongitude(longitude); // Speed - position.setSpeed(Double.valueOf(parser.group(index++)) * 0.539957); + String speed = parser.group(index++); + if (speed != null) { + position.setSpeed(Double.valueOf(speed) * 0.539957); + } else { + position.setSpeed(0.0); + } // Course - position.setCourse(Double.valueOf(parser.group(index++))); + String course = parser.group(index++); + if (course != null) { + position.setCourse(Double.valueOf(course)); + } else { + position.setCourse(0.0); + } // Altitude String altitude = parser.group(index++); diff --git a/test/org/traccar/protocol/WialonProtocolDecoderTest.java b/test/org/traccar/protocol/WialonProtocolDecoderTest.java index f5ef8f277..13aad6e2e 100644 --- a/test/org/traccar/protocol/WialonProtocolDecoderTest.java +++ b/test/org/traccar/protocol/WialonProtocolDecoderTest.java @@ -20,12 +20,18 @@ public class WialonProtocolDecoderTest { verify(decoder.decode(null, null, "#SD#270413;205601;5544.6025;N;03739.6834;E;1;2;3;4")); + + verify(decoder.decode(null, null, + "#SD#021214;065947;2237.7552;N;11404.8851;E;0.000;;170.9;5")); verify(decoder.decode(null, null, "#D#270413;205601;5544.6025;N;03739.6834;E;1;2;3;4;0.0;0;0;14.77,0.02,3.6;NA;count1:1:564,fuel:2:45.8,hw:3:V4.5")); verify(decoder.decode(null, null, "#D#190114;051312;4459.6956;N;04105.9930;E;35;306;204.000000;12;NA;452986639;NA;106.000000;NA;sats_gps:1:9,sats_glonass:1:3,balance:2:12123.000000,stay_balance:1:0")); + + verify(decoder.decode(null, null, + "#D#021214;065947;2237.7552;N;11404.8851;E;0.000;;170.9;5;1.74;NA;NA;NA;NA;NA")); verify(decoder.decode(null, null, "#B#080914;073235;5027.50625;N;03026.19321;E;0.700;0.000;NA;4;NA;NA;NA;;NA;Батарея:3:100 %|080914;073420;5027.50845;N;03026.18854;E;1.996;292.540;NA;4;NA;NA;NA;;NA;Батарея:3:100 %")); |