aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/org/traccar/protocol/CarscopProtocolDecoder.java8
-rw-r--r--test/org/traccar/protocol/CarscopProtocolDecoderTest.java6
2 files changed, 12 insertions, 2 deletions
diff --git a/src/org/traccar/protocol/CarscopProtocolDecoder.java b/src/org/traccar/protocol/CarscopProtocolDecoder.java
index ac3df1cd7..2a081bcdd 100644
--- a/src/org/traccar/protocol/CarscopProtocolDecoder.java
+++ b/src/org/traccar/protocol/CarscopProtocolDecoder.java
@@ -44,8 +44,10 @@ public class CarscopProtocolDecoder extends BaseProtocolDecoder {
.number("(ddd.d)") // speed
.number("(dd)(dd)(dd)") // date (yymmdd)
.number("(ddd.dd)") // course
+ .groupBegin()
.number("(d{8})") // state
.number("L(d{6})") // odometer
+ .groupEnd("?")
.compile();
@Override
@@ -88,8 +90,10 @@ public class CarscopProtocolDecoder extends BaseProtocolDecoder {
position.setCourse(parser.nextDouble(0));
- position.set(Position.KEY_STATUS, parser.next());
- position.set(Position.KEY_ODOMETER, parser.nextInt(0));
+ if (parser.hasNext(2)) {
+ position.set(Position.KEY_STATUS, parser.next());
+ position.set(Position.KEY_ODOMETER, parser.nextInt(0));
+ }
return position;
}
diff --git a/test/org/traccar/protocol/CarscopProtocolDecoderTest.java b/test/org/traccar/protocol/CarscopProtocolDecoderTest.java
index 2d6ea208f..7b6f2f28d 100644
--- a/test/org/traccar/protocol/CarscopProtocolDecoderTest.java
+++ b/test/org/traccar/protocol/CarscopProtocolDecoderTest.java
@@ -11,6 +11,12 @@ public class CarscopProtocolDecoderTest extends ProtocolTest {
CarscopProtocolDecoder decoder = new CarscopProtocolDecoder(new CarscopProtocol());
verifyNull(decoder, text(
+ "*170821223045UB00HSO"));
+
+ verifyPosition(decoder, text(
+ "*170821223121UB05ORANGE000731512061825V0000.0000N00000.0000E000.0040331309.62"));
+
+ verifyPosition(decoder, text(
"*170724163029UB05ORANGE000000010061825V0000.0000N00000.0000E000.0040331309.62"));
verifyNull(decoder, text(