1

Все вопросы по Wialon IPS

Topic: Все вопросы по Wialon IPS

-------------------moderatorial-----------------------
В этой теме следует задавать все вопросы по использованию протокола Wialon IPS
новые темы про Wialon IPS создавать не следует
-----------------------------------------------------------

Добрый день.
при разработке программного модуля для мобильного телефона столкнулся с такой проблемой.
При передачи широты и долготы GPS приемник использует формат градусы.секунды . В протоколе используется формат
градусы.минуты.секунды
Так вот из-за того что типа double не совсем точно отображает знаки после запятой идет погрешность
при переводе.
Вся суть заключается в том, что если я при этой погрешности нахожу эти координаты без перевода, то все ок, но как только я перевожу в гр.мин.сек я получаю погрешность в 20 - 50 метров.

http://xmages.net/storage/10/1/0/0/5/upload/2f591d97.jpg
Спасибо.

С уважением, команда Overseer.
Киев, Черкассы, Винница.
http://overseer.ua
2

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Возможно Вы неправильно переводите?

At the dark side of telematics...
3

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

перевод я уже делал 3 емя способами
1) Писал используя стандартные типы
        int d1 = (int) lat ;
        double r11 = (lat - d1) * 60;
        int m1 = (int) r11;
        double s1 = ((r11 - m1) * 60)*1000;
       
        String lats = Integer.toString(d1)+Integer.toString(m1) + "." + Integer.toString((int)Math.round(s1));
        //double result = lat1* 100+lat2;
       
        int d2 = (int) lon ;
        double r21 = (lon - d2) * 60;
        int m2 = (int) r21;
        double s2 = ((r21 - m2) * 60)*1000;
        String do2 = Integer.toString(d2);
        if (d2 < 100) {do2 = "0"+Integer.toString(d2);}
        String lons = do2+Integer.toString(m2) + "." + Integer.toString((int)Math.round(s2));
2) Используя BigDecimal
BigDecimal blat = new BigDecimal(lat);
       
        BigDecimal degrees = blat.setScale(0, BigDecimal.ROUND_FLOOR);
        BigDecimal minutes = blat.subtract(degrees).multiply(new BigDecimal(60)).setScale(0,BigDecimal.ROUND_FLOOR);
        BigDecimal second  = blat.subtract(degrees).multiply(new BigDecimal(3600)).subtract(minutes.multiply(new BigDecimal(60))).setScale(4,BigDecimal.ROUND_HALF_DOWN);
        String str_second  = Integer.toString(second.multiply(new BigDecimal(1000)).intValue());
        //if (second.intValue() < 10) {str_second = "0"+str_second;}
        String  lats = Integer.toString(degrees.intValue()) + Integer.toString(minutes.intValue()) +"." + str_second;
       
        BigDecimal blon = new BigDecimal(lon);
        BigDecimal degrees1 = blon.setScale(0, BigDecimal.ROUND_FLOOR);
        BigDecimal minutes1 = blon.subtract(degrees1).multiply(new BigDecimal(60)).setScale(0,BigDecimal.ROUND_FLOOR);
        BigDecimal second1  = blon.subtract(degrees1).multiply(new BigDecimal(3600)).subtract(minutes1.multiply(new BigDecimal(60))).setScale(4,BigDecimal.ROUND_HALF_DOWN);
        String str_degrees1 = Integer.toString(degrees1.intValue());
        if (degrees1.intValue() < 100) {str_degrees1 = "0"+str_degrees1;}
        String str_second1  = Integer.toString(second1.multiply(new BigDecimal(1000)).intValue());
3) Используя штатные средства Андроида
       lat = Math.abs(lat);
        lon = Math.abs(lon);
        String latinsec = Location.convert(lat, Location.FORMAT_SECONDS);
        String[] latarray =  latinsec.split(":");
        String lats = latarray[0]+latarray[1]+"."+latarray[2].replace(".", "");
        String loninsec = Location.convert(lon, Location.FORMAT_SECONDS);
        String[] lonarray =  loninsec.split(":");
        String lons = lonarray[0]+lonarray[1]+"."+lonarray[2].replace(".", "");
        if ((int)lon < 100) {lons = "0"+lons;}

Результат одинаковый
передаю
32,11482531
49,40649735
тк тип используетсь double
то координаты приходят как
32.114825
49.40649666666666

Дальше при переводе
32:6:53.37
49:24:23.388
Конечно можно сказать, что double с погрешностью и  все из-за этого, но если эту погрешность не переводить в гр.мин.сек, то ей можно пренебречь, что подтверждает скриншот с Андроида, которому я отдал непереведенные координаты с погрешностью, которые дает тип double.

С уважением, команда Overseer.
Киев, Черкассы, Винница.
http://overseer.ua
4

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

overseer, что-то не так, часы д.б. целыми, а минуты - double(4-байтовый float). Этого достаточно для метровой точности.
Можете увеличить кол-во символов после запятой при необходимости.

Добавлено спустя    55 секунд:
И секунд там как таковых нет, это плаваяющая точка по минутам.

At the dark side of telematics...
5

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Да ошибка вышла, надо было не переводить в секунды, а оставлять в минутах.

Добавлено спустя    44 секунды:
А так все ок заработало. Спасибо.

С уважением, команда Overseer.
Киев, Черкассы, Винница.
http://overseer.ua
6

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Добрый день.
В продолжении вопросов по Wialon IPS .
Смотрите я посылаю сообщения за сегодняшний день, а приходят сообщения за месяц назад.
2011-01-18 19:02:34: Определено новое положение устройства Android от 2010-12-18 21:03:32: 3.
Черного ящика нет .
Генерированная строка
#SD#180011;190234;4925,3466;N;0326,15395;E;0;0;0;8
Может вы сталкивались ?

С уважением, команда Overseer.
Киев, Черкассы, Винница.
http://overseer.ua
7

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Так месяц начинается с единицы, а Вы шлете ноль.

At the dark side of telematics...
8

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Ага уточним. ) В протоколе месяц начинается с единицы.
Спасибо.

С уважением, команда Overseer.
Киев, Черкассы, Винница.
http://overseer.ua
9

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

shal, скажите, протоколе Wialon IPS предусмотрена работа с изображениями?
Заранее прошу прощенья, за глупый вопрос, но в описание не нашел.

www.intelstol.ru - Контролировать просто!
10

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

yurius wrote:

shal, скажите, протоколе Wialon IPS предусмотрена работа с изображениями?
Заранее прошу прощенья, за глупый вопрос, но в описание не нашел.

нет. Но возможно я ошибаюсь)

S&M Groups
11

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

yurius, пока нет, но собственно и оборудование работающее с изображением пока особо с ним не работает. Вот в Wialon Retranslator изображение равно как и почие бинарные данные положить можно уже сейчас.

At the dark side of telematics...
12

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

shal, то есть можно использовать протокол Wialon Retranslator для внедрения в оборудование, которое будет передавать изображения в режиме реального времени на Wialon?

www.intelstol.ru - Контролировать просто!
13

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

yurius, да, уже сейчас.

At the dark side of telematics...
14

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Спасибо!

www.intelstol.ru - Контролировать просто!
15

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Возник такой вопрос: отправляю по протоколу Wialon IPS данные (#SD#date;time;...). Время, которое отправляю (date;time) не фиксируется правильно. Т.е., данные вообще либо не проходят (если отправляю "задним числом"), либо фиксируется текущее время. Хотя, в общем случае, это неверно, т.к. я могу отсылать данные на сервер Wialon периодически (скажем, раз в минуту), и время, которое ассоциировано с объектом, должно отражать время снятия GPS-данных, а не их отправки на сервер.

16

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

marat
Неужели вы думаете, что система определяет время создания сообщения по времени его прибытия на сервер? В вашей ситуации возможны 3 варианта:
1. вы отправляете время в неправильном формате,
2. Если вы шлёте сообщение, в котором время указано 12 часов ранее текущего времени, оно будет зарегистрировано, как пришедшее 12 часов назад.
3. Вы отправляете сообщения, в которых время опережает текущее время сервера, система не может зарегистрировать сообщение из будущего, поэтому она регистрирует его с текущим временем сервера. Скорее всего у вас выставлен часовой пояс вашего региона в приборе. Установите часовой пояс GMT+0.

Technical Support Specialist
Gurtam
17

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Разрабатываю программу клиент для Wialon.
При отправке на сервер пакета авторизации в ответ не получаю никакого сообщения.
С чем это может быть связано?

18

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

stanisloe
неправильный формат пакета авторизации. убедитесь, что у вас не двоеточие после imei, а точка с запятой.

Technical Support Specialist
Gurtam
19

Все вопросы по Wialon IPS

(edited by stanisloe 19/04/2011 15:56:44)

Re: Все вопросы по Wialon IPS

Убедился.имено ; разделитель.в чем еще может быть проблема?
Отправляю данные в таком виде :
#L#355299123456789;NA\r\n -без ответа
Причем если в таком виде
#L#355299123456789; NA\r\n пробел после ";" сервер выдает - #AL#01 (ошибка проверки пароля)
В остальных случаях без ответа.

20

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Разобрался с авторизацией. но теперь почему то пакет с данными не имеет ответа.
Шлю вот так:
#SD#200411;123010;5544.6025;N;03739.6834;E;0;0;0;10\r\n

21

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

stanisloe
Пакет вполне корректный, проверил телнетом передачу данных:
#L#123;NA
#AL#1
#SD#200411;123010;5544.6025;N;03739.6834;E;0;0;0;10
#ASD#1
Залогинился, отправил данные, получил на всё ответы.

Либо Вы не слушаете ответ, либо теряете соединение.

Viacheslav Krival
22

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Залогинился.Отправил пакет пинга.Получил ответ.
Отправил сообщение для водителя
#M#msg \r\n
,и получил
#AM#0\r\n
Как определить теряется соединение или нет.

23

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

stanisloe, если ничего не ответил, значит и нет соединения.

At the dark side of telematics...
24

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

stanisloe
При отправке необходимо учитывать что таймаут разрыва соединения 5 минут. Если в течении 5 минут нет никаких данных от контроллера, даже пинга, то сервер разрывает соединение.

В Вашем случае при отправке пакета #M#msg \r\n выдаёт #AM#0\r\n т.к. до этого отсутствовал пакет логина. Вы шлёте "L" пакет в начале соединения?

Viacheslav Krival
25

Все вопросы по Wialon IPS

Re: Все вопросы по Wialon IPS

Например, gps перестал ловить. А у нас произошло включение цифрового входа. Если я буду передавать сообщение со старыми координатами, то будет неверное понимание о том, где устройство находится. Если вместо координат не передавать вообще ничего, типа будут следовать "точко-запятые подряд" - пакеты примутся? В общем, как это правильнее сделать? и еще, если эти пакеты будут в "черном ящике"...

MasterkKIT BM8009