From 0e9ed16b31c3bb17bc76a1f793c013ed5c9c1e21 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Fri, 2 Aug 2024 07:26:02 -0700 Subject: Support Megastek MT65Plus (fix #5376) --- .../java/org/traccar/protocol/MegastekProtocolDecoder.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/main/java/org/traccar') diff --git a/src/main/java/org/traccar/protocol/MegastekProtocolDecoder.java b/src/main/java/org/traccar/protocol/MegastekProtocolDecoder.java index c16a0752d..f8aaeb996 100644 --- a/src/main/java/org/traccar/protocol/MegastekProtocolDecoder.java +++ b/src/main/java/org/traccar/protocol/MegastekProtocolDecoder.java @@ -257,6 +257,7 @@ public class MegastekProtocolDecoder extends BaseProtocolDecoder { .number("(x+)?,") // cid .number("(d+)?,") // gsm .groupBegin() + .number("(ddd),").optional() // heart rate .number("([01]{4})?,") // input .number("([01]{4})?,") // output .number("(d+)?,") // adc1 @@ -277,11 +278,13 @@ public class MegastekProtocolDecoder extends BaseProtocolDecoder { .number("(-?d+.?d*)") // temperature 2 .or().text(" ") .groupEnd("?").text(",") + .groupBegin() .number("(d+)?,") // rfid .number("([01])(d)?").optional() // charge and belt status .expression("[^,]*,") .number("(d+)?,") // battery .expression("([^,]*)[,;]") // alert + .groupEnd("?") .any() .compile(); @@ -336,7 +339,8 @@ public class MegastekProtocolDecoder extends BaseProtocolDecoder { } } - if (parser.hasNext(5)) { + if (parser.hasNext(6)) { + position.set(Position.KEY_HEART_RATE, parser.nextInt()); position.set(Position.KEY_INPUT, parser.nextBinInt(0)); position.set(Position.KEY_OUTPUT, parser.nextBinInt(0)); for (int i = 1; i <= 3; i++) { @@ -373,7 +377,9 @@ public class MegastekProtocolDecoder extends BaseProtocolDecoder { position.set(Position.KEY_BATTERY, Integer.parseInt(battery)); } - position.set(Position.KEY_ALARM, decodeAlarm(parser.next())); + if (parser.hasNext()) { + position.set(Position.KEY_ALARM, decodeAlarm(parser.next())); + } return position; } -- cgit v1.2.3