diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/org/traccar/protocol/Tlt2hProtocolDecoder.java | 34 | ||||
-rw-r--r-- | src/test/java/org/traccar/protocol/Tlt2hProtocolDecoderTest.java | 4 |
2 files changed, 34 insertions, 4 deletions
diff --git a/src/main/java/org/traccar/protocol/Tlt2hProtocolDecoder.java b/src/main/java/org/traccar/protocol/Tlt2hProtocolDecoder.java index 2a06d35e5..7ad99b37e 100644 --- a/src/main/java/org/traccar/protocol/Tlt2hProtocolDecoder.java +++ b/src/main/java/org/traccar/protocol/Tlt2hProtocolDecoder.java @@ -36,10 +36,18 @@ public class Tlt2hProtocolDecoder extends BaseProtocolDecoder { } private static final Pattern PATTERN_HEADER = new PatternBuilder() - .number("#(d+)#") // imei - .any() - .expression("#([^#]+)#") // status - .number("d+") // number of records + .number("#(d+)") // imei + .expression("#[^#]*") // user + .number("#d+") // password + .groupBegin() + .number("#([01])") // door + .number("#(d+)") // fuel voltage + .number("#(d+)") // power + .number("#(d+)") // battery + .number("#(d+)") // temperature + .groupEnd("?") + .expression("#([^#]+)") // status + .number("#d+") // number of records .compile(); private static final Pattern PATTERN_POSITION = new PatternBuilder() @@ -114,6 +122,19 @@ public class Tlt2hProtocolDecoder extends BaseProtocolDecoder { return null; } + Boolean door = null; + Double adc = null; + Double power = null; + Double battery = null; + Double temperature = null; + if (parser.hasNext(5)) { + door = parser.nextInt() == 1; + adc = parser.nextInt() * 0.1; + power = parser.nextInt() * 0.1; + battery = parser.nextInt() * 0.1; + temperature = parser.nextInt() * 0.1; + } + String status = parser.next(); String[] messages = sentence.substring(sentence.indexOf('\n') + 1).split("\r\n"); @@ -140,6 +161,11 @@ public class Tlt2hProtocolDecoder extends BaseProtocolDecoder { dateBuilder.setDateReverse(parser.nextInt(0), parser.nextInt(0), parser.nextInt(0)); position.setTime(dateBuilder.getDate()); + position.set(Position.KEY_DOOR, door); + position.set(Position.PREFIX_ADC + 1, adc); + position.set(Position.KEY_POWER, power); + position.set(Position.KEY_BATTERY, battery); + position.set(Position.PREFIX_TEMP + 1, temperature); decodeStatus(position, status); positions.add(position); diff --git a/src/test/java/org/traccar/protocol/Tlt2hProtocolDecoderTest.java b/src/test/java/org/traccar/protocol/Tlt2hProtocolDecoderTest.java index 185c3c368..216e65a5d 100644 --- a/src/test/java/org/traccar/protocol/Tlt2hProtocolDecoderTest.java +++ b/src/test/java/org/traccar/protocol/Tlt2hProtocolDecoderTest.java @@ -11,6 +11,10 @@ public class Tlt2hProtocolDecoderTest extends ProtocolTest { Tlt2hProtocolDecoder decoder = new Tlt2hProtocolDecoder(null); + verifyPositions(decoder, text( + "#860425040088567#MT600+#0000#0#1#129#40#0#AUTOLOW#1\r\n", + "#000321901$GPRMC,172030.00,A,4845.2906,N,01910.2742,E,0.01,,041219,,,A*43\r\n")); + verifyAttribute(decoder, text( "#869260042149724#MP90_4G#0000#AUTOLOW#1\r\n" + "#02201be0000$GPRMC,001645.00,A,5333.2920,N,11334.3857,W,0.03,,250419,,,A*5E\r\n"), |