From 02de9b3a41bdb4dd3b10ec646200369b94b673fe Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Thu, 31 May 2012 22:10:54 +0400 Subject: Added xexun2 extra fields (fix #10) --- .../traccar/protocol/Xexun2ProtocolDecoder.java | 40 +++++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) (limited to 'src/org/traccar/protocol/Xexun2ProtocolDecoder.java') diff --git a/src/org/traccar/protocol/Xexun2ProtocolDecoder.java b/src/org/traccar/protocol/Xexun2ProtocolDecoder.java index 7c4f671f7..b10721070 100644 --- a/src/org/traccar/protocol/Xexun2ProtocolDecoder.java +++ b/src/org/traccar/protocol/Xexun2ProtocolDecoder.java @@ -22,8 +22,8 @@ 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.model.DataManager; import org.traccar.GenericProtocolDecoder; +import org.traccar.model.DataManager; import org.traccar.model.Position; /** @@ -43,8 +43,8 @@ public class Xexun2ProtocolDecoder extends GenericProtocolDecoder { */ static private Pattern pattern = Pattern.compile( "[\r\n]*" + - "\\d+," + - "\\+\\d+," + + "(\\d+)," + // Serial + "(\\+\\d+)," + // Number "GPRMC," + "(\\d{2})(\\d{2})(\\d{2}).(\\d{3})," + // Time (HHMMSS.SSS) "([AV])," + // Validity @@ -55,10 +55,13 @@ public class Xexun2ProtocolDecoder extends GenericProtocolDecoder { "(\\d+.\\d+)," + // Speed "(\\d+.\\d+)?," + // Course "(\\d{2})(\\d{2})(\\d{2})," + // Date (DDMMYY) + ",,.\\*..," + // Checksum + "([FL])," + // Signal + "(.*)," + // Alarm ".*imei:" + "(\\d+)," + // IMEI - "\\d+," + - "\\d+.\\d+," + + "(\\d+)," + // Satellites + "(\\d+.\\d+)," + // Altitude "F:(\\d+.\\d+)V," + // Power ".*" + "[\r\n]*"); @@ -80,9 +83,16 @@ public class Xexun2ProtocolDecoder extends GenericProtocolDecoder { // Create new position Position position = new Position(); + String extendedInfo = "xexun2"; Integer index = 1; + // Serial + extendedInfo += "" + parser.group(index++) + ""; + + // Number + extendedInfo += "" + parser.group(index++) + ""; + // Time Calendar time = new GregorianCalendar(TimeZone.getTimeZone("UTC")); time.clear(); @@ -106,9 +116,6 @@ public class Xexun2ProtocolDecoder extends GenericProtocolDecoder { if (parser.group(index++).compareTo("W") == 0) lonlitude = -lonlitude; position.setLongitude(lonlitude); - // Altitude - position.setAltitude(0.0); - // Speed position.setSpeed(Double.valueOf(parser.group(index++))); @@ -126,13 +133,28 @@ public class Xexun2ProtocolDecoder extends GenericProtocolDecoder { time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++))); position.setTime(time.getTime()); + // Signal + extendedInfo += "" + parser.group(index++) + ""; + + // Alarm + extendedInfo += "" + parser.group(index++) + ""; + // Get device by IMEI String imei = parser.group(index++); position.setDeviceId(getDataManager().getDeviceByImei(imei).getId()); - + + // Satellites + extendedInfo += "" + parser.group(index++).replaceFirst ("^0*(?![\\.$])", "") + ""; + + // Altitude + position.setAltitude(Double.valueOf(parser.group(index++))); + // Power position.setPower(Double.valueOf(parser.group(index++))); + // Extended info + position.setExtendedInfo(extendedInfo); + return position; } -- cgit v1.2.3