From 96beee5caf560e4b441d2d9e2ebba434c70f5f79 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Mon, 2 Apr 2012 20:03:08 +0000 Subject: --- .../protocol/avl08/Avl08ProtocolDecoder.java | 58 +++++++++++++++++++++- 1 file changed, 56 insertions(+), 2 deletions(-) (limited to 'src/org/traccar/protocol/avl08') diff --git a/src/org/traccar/protocol/avl08/Avl08ProtocolDecoder.java b/src/org/traccar/protocol/avl08/Avl08ProtocolDecoder.java index 382c9e998..4fb33f5ba 100644 --- a/src/org/traccar/protocol/avl08/Avl08ProtocolDecoder.java +++ b/src/org/traccar/protocol/avl08/Avl08ProtocolDecoder.java @@ -45,7 +45,7 @@ public class Avl08ProtocolDecoder extends GenericProtocolDecoder { static private Pattern pattern = Pattern.compile( "\\$\\$.{2}" + // Length "(\\d{15})\\|" + // IMEI - ".{2}" + // Alarm Type + "(.{2})" + // Alarm Type "\\$GPRMC," + "(\\d{2})(\\d{2})(\\d{2}).(\\d{3})," + // Time (HHMMSS.SSS) "([AV])," + // Validity @@ -55,7 +55,17 @@ public class Avl08ProtocolDecoder extends GenericProtocolDecoder { "([EW])," + "(\\d+.\\d{2})?," + // Speed "(\\d+.\\d{2})?," + // Course - "(\\d{2})(\\d{2})(\\d{2})" + // Date (DDMMYY) + "(\\d{2})(\\d{2})(\\d{2}),[^\\|]*\\|" + // Date (DDMMYY) + "(\\d+.\\d)\\|(\\d+.\\d)\\|(\\d+.\\d)\\|" + // Dilution of precision + "(\\d{12})\\|" + // Status + "(\\d{14})\\|" + // Clock + "(\\d{8})\\|" + // Voltage + "(\\d{8})\\|" + // ADC + "(.{8})\\|" + // Cell + "(.\\d{3})\\|" + // Temperature + "(\\d+.\\d{4})\\|" + // Mileage + "(\\d{4})\\|" + // Serial + "(.{10})?\\|" + // RFID ".+"); /** * Decode message @@ -73,6 +83,7 @@ public class Avl08ProtocolDecoder extends GenericProtocolDecoder { // Create new position Position position = new Position(); + String extendedInfo = "avl08"; Integer index = 1; @@ -80,6 +91,9 @@ public class Avl08ProtocolDecoder extends GenericProtocolDecoder { String imei = parser.group(index++); position.setDeviceId(getDataManager().getDeviceByImei(imei).getId()); + // Alarm type + extendedInfo += "" + parser.group(index++) + ""; + // Time Calendar time = new GregorianCalendar(TimeZone.getTimeZone("UTC")); time.clear(); @@ -123,6 +137,46 @@ public class Avl08ProtocolDecoder extends GenericProtocolDecoder { time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++))); position.setTime(time.getTime()); + // Dilution of precision + extendedInfo += "" + parser.group(index++).replaceFirst ("^0*(?![\\.$])", "") + ""; + extendedInfo += "" + parser.group(index++).replaceFirst ("^0*(?![\\.$])", "") + ""; + extendedInfo += "" + parser.group(index++).replaceFirst ("^0*(?![\\.$])", "") + ""; + + // Status + extendedInfo += "" + parser.group(index++) + ""; + + // Real time clock + extendedInfo += "" + parser.group(index++) + ""; + + // Voltage + String voltage = parser.group(index++); + position.setPower(Double.valueOf(voltage.substring(1, 4)) / 100); + extendedInfo += "" + voltage + ""; + + // ADC + extendedInfo += "" + parser.group(index++) + ""; + + // Cell + extendedInfo += "" + parser.group(index++) + ""; + + // Temperature + extendedInfo += "" + parser.group(index++) + ""; + + // Mileage + extendedInfo += "" + parser.group(index++) + ""; + + // Serial + extendedInfo += "" + parser.group(index++).replaceFirst ("^0*", "") + ""; + + // RFID + String rfid = parser.group(index++); + if (rfid != null) { + extendedInfo += "" + rfid + ""; + } + + // Extended info + position.setExtendedInfo(extendedInfo); + return position; } -- cgit v1.2.3