diff options
-rw-r--r-- | src/org/traccar/protocol/VisiontekProtocolDecoder.java | 15 | ||||
-rw-r--r-- | test/org/traccar/protocol/VisiontekProtocolDecoderTest.java | 6 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/org/traccar/protocol/VisiontekProtocolDecoder.java b/src/org/traccar/protocol/VisiontekProtocolDecoder.java index 2fe58e5be..236f417e3 100644 --- a/src/org/traccar/protocol/VisiontekProtocolDecoder.java +++ b/src/org/traccar/protocol/VisiontekProtocolDecoder.java @@ -19,10 +19,8 @@ import java.util.Calendar; import java.util.TimeZone; import java.util.regex.Matcher; import java.util.regex.Pattern; - import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; - import org.traccar.BaseProtocolDecoder; import org.traccar.helper.UnitsConverter; import org.traccar.model.Event; @@ -40,9 +38,9 @@ public class VisiontekProtocolDecoder extends BaseProtocolDecoder { "(?:(\\d+),)?" + // IMEI "(\\d{2}),(\\d{2}),(\\d{2})," + // Date "(\\d{2}),(\\d{2}),(\\d{2})," + // Time - "(\\d{2})(\\d{6})([NS])," + // Latitude - "(\\d{3})(\\d{6})([EW])," + // Longitude - "(\\d+\\.\\d+)," + // Speed + "(\\d{2})(\\d{2}\\.?\\d{4})([NS])," + // Latitude + "(\\d{3})(\\d{2}\\.?\\d{4})([EW])," + // Longitude + "(\\d+\\.?\\d+)," + // Speed "(\\d+)," + // Course "(?:(\\d+)," + // Altitude "(\\d+),)?" + // Satellites @@ -97,18 +95,19 @@ public class VisiontekProtocolDecoder extends BaseProtocolDecoder { // Latitude Double latitude = Double.valueOf(parser.group(index++)); - latitude += Double.valueOf(parser.group(index++)) / 600000; + latitude += Double.valueOf(parser.group(index++).replace(".", "")) / 600000; if (parser.group(index++).compareTo("S") == 0) latitude = -latitude; position.setLatitude(latitude); // Longitude Double longitude = Double.valueOf(parser.group(index++)); - longitude += Double.valueOf(parser.group(index++)) / 600000; + longitude += Double.valueOf(parser.group(index++).replace(".", "")) / 600000; if (parser.group(index++).compareTo("W") == 0) longitude = -longitude; position.setLongitude(longitude); // Speed - position.setSpeed(UnitsConverter.knotsFromKph(Double.valueOf(parser.group(index++)))); + position.setSpeed(UnitsConverter.knotsFromKph(Double.valueOf( + parser.group(index++).replace(".", "")) / 10)); // Course position.setCourse(Double.valueOf(parser.group(index++))); diff --git a/test/org/traccar/protocol/VisiontekProtocolDecoderTest.java b/test/org/traccar/protocol/VisiontekProtocolDecoderTest.java index 3eb1045a7..19e9b3287 100644 --- a/test/org/traccar/protocol/VisiontekProtocolDecoderTest.java +++ b/test/org/traccar/protocol/VisiontekProtocolDecoderTest.java @@ -1,9 +1,8 @@ package org.traccar.protocol; -import org.traccar.helper.TestDataManager; -import static org.traccar.helper.DecoderVerifier.verify; import static org.junit.Assert.assertNull; import org.junit.Test; +import static org.traccar.helper.DecoderVerifier.verify; public class VisiontekProtocolDecoderTest extends ProtocolDecoderTest { @@ -11,6 +10,9 @@ public class VisiontekProtocolDecoderTest extends ProtocolDecoderTest { public void testDecode() throws Exception { VisiontekProtocolDecoder decoder = new VisiontekProtocolDecoder(null); + + //verify(decoder.decode(null, null, + // "$1,AP116,05,06,15,11,48,32,1725.0460N,07824.5289E,0617,07,0,030,2091,0,0,0,1,1,1,1,20,00.0000,00.3820,00.0000,VAJRA V1.00,A#")); verify(decoder.decode(null, null, "$1,AP09BU9397,861785006462448,20,06,14,15,03,28,17267339N,078279407E,060.0,073,0550,11,0,1,0,0,1,1,26,A,0000000000")); |