aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/protocol/Xexun2ProtocolDecoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/protocol/Xexun2ProtocolDecoder.java')
-rw-r--r--src/org/traccar/protocol/Xexun2ProtocolDecoder.java19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/org/traccar/protocol/Xexun2ProtocolDecoder.java b/src/org/traccar/protocol/Xexun2ProtocolDecoder.java
index 900315d20..098647499 100644
--- a/src/org/traccar/protocol/Xexun2ProtocolDecoder.java
+++ b/src/org/traccar/protocol/Xexun2ProtocolDecoder.java
@@ -38,22 +38,22 @@ public class Xexun2ProtocolDecoder extends BaseProtocolDecoder {
"(\\d+)," + // Serial
"(\\+?\\d+)," + // Number
"GPRMC," +
- "(\\d{2})(\\d{2})(\\d{2})\\.(\\d{3})," + // Time (HHMMSS.SSS)
+ "(\\d{2})(\\d{2})(\\d{2})\\.(\\d+)," + // Time (HHMMSS.SSS)
"([AV])," + // Validity
- "(\\d{2})(\\d{2}\\.\\d{4})," + // Latitude (DDMM.MMMM)
+ "(\\d{2})(\\d{2}\\.\\d+)," + // Latitude (DDMM.MMMM)
"([NS])," +
- "(\\d{3})(\\d{2}\\.\\d{4})," + // Longitude (DDDMM.MMMM)
+ "(\\d{3})(\\d{2}\\.\\d+)," + // Longitude (DDDMM.MMMM)
"([EW])," +
"(\\d+\\.\\d+)," + // Speed
"(\\d+\\.\\d+)?," + // Course
"(\\d{2})(\\d{2})(\\d{2})," + // Date (DDMMYY)
- ",,.\\*..," + // Checksum
+ "[^,]*,[^,]*,.\\*..," + // Checksum
"([FL])," + // Signal
- "(.*)," + // Alarm
+ "(?:([^,]*),)?" + // Alarm
".*imei:" +
"(\\d+)," + // IMEI
"(\\d+)," + // Satellites
- "(-?\\d+\\.\\d+)," + // Altitude
+ "(-?\\d+\\.\\d+)?," + // Altitude
"[FL]:(\\d+\\.\\d+)V," + // Power
".*" +
"[\r\n]*");
@@ -141,7 +141,12 @@ public class Xexun2ProtocolDecoder extends BaseProtocolDecoder {
extendedInfo.set("satellites", parser.group(index++).replaceFirst ("^0*(?![\\.$])", ""));
// Altitude
- position.setAltitude(Double.valueOf(parser.group(index++)));
+ String altitude = parser.group(index++);
+ if (altitude != null) {
+ position.setAltitude(Double.valueOf(altitude));
+ } else {
+ position.setAltitude(0.0);
+ }
// Power
position.setPower(Double.valueOf(parser.group(index++)));