Откуда вы формулу подсчета координат взяли? Написано что значение хранится "в соответсвии с правилами ЕГТС". У вас есть эти правила? Также не совсем понятно зачем на 0xFFFFFFFF делить.
У меня формула подсчета. И она равна указанной.
По этой же формуле, с такой же структурой, и с теми же данными поэксперимонтировал на PHP скрипте. Там координаты нормально выводятся и указывают туда, куда надо.
Хотелось бы увидеть документацию откуда вы взяли формулу.
Попробуйте делить на 0xFFFFFFFFL.
При компиляций выходит такое сообщения, и остается.
INFO 8/3/17 4:26 PM: liquibase: Waiting for changelog lock....
Похоже что база заблокирована. Удалите файл и попробуйте еще раз.
Попробовал делить на 0xFFFFFFFFL. Вывод сделал через Log::error(). Получил следующий лог. Он всегда разделяет на 2, входящее количество данных.
2017-08-03 17:04:41 ERROR: 34 2017-08-03 17:04:41 ERROR: 808465976 2017-08-03 17:04:41 ERROR: 35 2017-08-03 17:04:41 WARN: Unknown device - 934633030313730 (192.168.1.16) 2017-08-03 17:04:41 ERROR: 16 2017-08-03 17:04:41 ERROR: 875573296 2017-08-03 17:04:41 ERROR: 33 2017-08-03 17:04:41 WARN: Unknown device - 131303531373133 (192.168.1.16)
Пример посланных данных
678b2c8a6cbe0d00680280b4452177c97a594c00170000dfa79480357f6d0002020be40c5400060c000b00037f0101a1051713050201869cff03745563594c00170000bfbf94006a
Значит у вас проблема с frame decoder'ом.
В протоколе Gt02 frameDecoder - LengthFieldBasedFrameDecoder.
Класс расположен где то внутри самой Java.
pipeline.addLast("frameDecoder", new LengthFieldBasedFrameDecoder(256, 1, 1, 2, 0));
pipeline.addLast("objectDecoder", new Gt02ProtocolDecoder(Gt02Protocol.this));
Получается я должен его заменить?
Скорее всего нужно параметры задать корректные. Либо заменить на другой или свой класс.
Я советую вам изучить документацию на Netty 3. Похоже что вы не совсем понимаете как система работает.
Добрый день. Я сейчас переписываю свой класс для Sat-Lite 3. По протоколу, есть преамбула, который должен быть всегда, 0x8A2C. Тестовые данные, которые я передаю, правильные, все соответствует, но у меня не получается получить преамбулу как надо. Не подскажете, где я ошибаюсь. Код такой
protected Object decode( Channel channel, SocketAddress remoteAddress, Object msg) throws Exception {
Log.debug("DEBUGS PROTOCAL DECODER");
ChannelBuffer buf = (ChannelBuffer) msg;
Log.debug("BUF-HEX: " + buf.toString(Charset.defaultCharset()));
ChannelBuffer crc = buf.readBytes(4);
Log.debug("CRC-HEX: " + crc.toString(Charset.defaultCharset()));
ChannelBuffer preamble = buf.readBytes(4);
Log.debug("preamble: "+ChannelBuffers.swapShort(buf.readShort()));
Log.debug("8a2c: "+String.valueOf(0x8a2c));
Передаваемые байты BIG ENDIAN. Мне надо его перевести в Little Endian?
Не понял у вас преамбула 2 байта или 4? Неясно зачем swapShort
нужен. В HEX данных она есть?
Добрый день! У меня проблема следующего рода. На автомобиле установлен девайс Sat-Lite 3. По умолчанию traccar не имеет поддержку этого девайса. Было решено переписать неиспользуемый протокол, схожий с протоколом девайса.Протокол девайса. Выбрал Gt02. В целях тестирование и вывода добавил следующий код:
Тестируемые данные верны. Но координаты получаемые в результате не верны.
Вопрос: в каком направлений искать ошибку? И есть ли более подходящие протоколы? Буду рад скорым ответам.