PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > AndroidCar > Навигация

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2014, 14:29   #481
gorar
Пользователь
 
Регистрация: 22.02.2013
Возраст: 40
Город: Тернополь
Регион: Украина
Машина: Renault Logan MCV 1.5dci
Сообщений: 37
gorar is on a distinguished road
По умолчанию

Цитата:
Сообщение от s.m. Посмотреть сообщение
Интересно, но NMEA уже должен быть корректным?
Это офигительная вещь для тех у кого есть GPS, но нет батарейки и интернета и после включения время неправильное.
А как быть с часовым поясом?
Если бы работало - было бы "офигительная вещь" но вот неработает. (пока немогу вставить скрин но попробую описать)

После запуска команды
Код:
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GPRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
терминал подвисает (команда не заканчивает работать).
Немножко разобрался с командами и выяснил что команда ищет в посылках NMEA текст GPRMC. Командой
Код:
cat /dev/ttyUSB0
выяснил что там нет такой строки, а наиболее похожая есть GNRMC. Подставил ее:
Код:
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
выдало 2 ошибки:
Код:
sh: cat: <stdout>: Broken pipe
date: invalid date '083541.600,140314'
с первой я непонял ничего, а вторая ... на сколько я понимаю время и дату с потока вытянуло но наверно там лишний ".600" как минимум.
gorar вне форума   Ответить с цитированием
Старый 14.03.2014, 14:45   #482
pine
Пользователь
 
Регистрация: 26.12.2013
Возраст: 43
Город: Москва
Регион: 77, 97, 99, 177
Машина: Mercury Mariner 2.5 2011
Сообщений: 99
pine is just really nicepine is just really nicepine is just really nicepine is just really nice
По умолчанию

Цитата:
Если бы работало - было бы "офигительная вещь" но вот неработает.
Цитата:
я непонял ничего
Может просто эти два факта как-то между собой связаны, м?

А вообще это всего-навсего означает, что ваш GPS не выдает сообщения GPRMC. GPRMC - это сообщения которые есть в NMEA 2.0, предполагаю, что у вас приемник NMEA 4.0, в котором есть сообщения GNRMC.

Дабы не делать наобум неосмыленных действий, просто подменяя строки - для начала почитайте что-нибудь типа нижеследующего про 2.0 и про 4.0

По поводу ошибок - первая это ок, означает, что grep нашел нужную строку и вышел. Может быть подавлена при помощи
Код:
> /dev/null 2>&1
. А вот вторая означает, что sed не вырезал .600,

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

Код:
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.600,//')"
либо, если у вас точность до миллисекунды:

Код:
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/\.[0-9][0-9][0-9],//')"
Проверить, к сожалению, сейчас не могу, но вы мне несколько облегчите жизнь, если пришлете сюда или в личку вывод от команды

Код:
cat /dev/ttyUSB0 |busybox grep -m20 GNRMC

Последний раз редактировалось pine; 14.03.2014 в 15:17.
pine вне форума   Ответить с цитированием
Старый 14.03.2014, 15:50   #483
gorar
Пользователь
 
Регистрация: 22.02.2013
Возраст: 40
Город: Тернополь
Регион: Украина
Машина: Renault Logan MCV 1.5dci
Сообщений: 37
gorar is on a distinguished road
По умолчанию

Цитата:
Сообщение от pine Посмотреть сообщение
Может просто эти два факта как-то между собой связаны, м?
Ничего не имею против. Я в Unix (и подобным) вообще не работал так что учусь помаленьку по надобности.

Спасибо что откликнулись!

После написания предыдущего поста появилась мысля и я пошел ее проверить. И вот что получилось:
Цитата:
Сообщение от pine Посмотреть сообщение
Путем нехитрых преобразований получаем, что новый код будет выглядеть как
Код:
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.600,//')"
Вот это и была моя мысля. Но потом понял что у меня пакеты идут 5 раз на секунду, соответственно эти цыфры меняются: 000 200 400 600 800 000.
В результате нашел решение: добавил до скрипта который запускает сам GPS следующий код:

Код:
sleep 5
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
sleep 0.2
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
sleep 0.2
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
sleep 0.2
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
sleep 0.2
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
и все работает на УРА!

Спасибо за оптимизацию!
Код:
's/\.[0-9][0-9][0-9],//'
Учусь.
gorar вне форума   Ответить с цитированием
Старый 14.03.2014, 16:16   #484
pine
Пользователь
 
Регистрация: 26.12.2013
Возраст: 43
Город: Москва
Регион: 77, 97, 99, 177
Машина: Mercury Mariner 2.5 2011
Сообщений: 99
pine is just really nicepine is just really nicepine is just really nicepine is just really nice
По умолчанию

Цитата:
Сообщение от gorar Посмотреть сообщение
Ничего не имею против. Я в Unix (и подобным) вообще не работал так что учусь помаленьку по надобности.

Спасибо что откликнулись!
Welcome

Цитата:
Сообщение от gorar Посмотреть сообщение
Код:
sleep 5
...
и все работает на УРА!
Избыточно, имхо. То, что ниже


Цитата:
Сообщение от gorar Посмотреть сообщение
Спасибо за оптимизацию!
Код:
's/\.[0-9][0-9][0-9],//'
Учусь.
работает? Писал "из головы".

На самом деле еще хочу вас попросить понаблюдать, стабильно ли выставляется дата-время, если добавлять вызов этого скрипта в /etc/install-recovery.sh?

У меня есть ощущение, что на моем приемнике в случае, если спутники еще не найдены, то выдается "начало времен" 1 января 1970 года. Но проявляется это не каждый раз.
pine вне форума   Ответить с цитированием
Старый 14.03.2014, 16:23   #485
pine
Пользователь
 
Регистрация: 26.12.2013
Возраст: 43
Город: Москва
Регион: 77, 97, 99, 177
Машина: Mercury Mariner 2.5 2011
Сообщений: 99
pine is just really nicepine is just really nicepine is just really nicepine is just really nice
По умолчанию

Кстати, вот такой код должен работать и с 2.0 и с 4.0

Код:
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -e -m1 "G[NP]RMC" | busybox cut -f2,10 -d, | busybox sed -e 's/\.[0-9][0-9][0-9],//')"
проверить пока что не на чем опять же
pine вне форума   Ответить с цитированием
Старый 14.03.2014, 17:08   #486
gorar
Пользователь
 
Регистрация: 22.02.2013
Возраст: 40
Город: Тернополь
Регион: Украина
Машина: Renault Logan MCV 1.5dci
Сообщений: 37
gorar is on a distinguished road
По умолчанию

Цитата:
Сообщение от pine Посмотреть сообщение
работает? Писал "из головы".
работает, правда немножко сократил из-за ненадобности
Код:
's/\.[0-9]00,//'
Цитата:
Сообщение от pine Посмотреть сообщение
На самом деле еще хочу вас попросить понаблюдать, стабильно ли выставляется дата-время, если добавлять вызов этого скрипта в /etc/install-recovery.sh?
У меня есть ощущение, что на моем приемнике в случае, если спутники еще не найдены, то выдается "начало времен" 1 января 1970 года. Но проявляется это не каждый раз.
У меня какраз работает через этот скрипт, я установил задержку 5 сек после установки драйвера GPS, пока (несколько раз выключал) работает, посмотрим как будет работать после перерывов в несколько часов (суток).

п.с. пересмотрел Ваши ссылки по документации на NMEA и увидел там что есть флаг который отвечает за валидность информации о времени. Можно доработать скрипт на проверку этого флага и установка часов будет только тогда когда данные будут правильными.
gorar вне форума   Ответить с цитированием
Старый 15.03.2014, 23:25   #487
DaveMF
Banned
 
Регистрация: 26.06.2010
Регион: 52
Машина: duster
Сообщений: 113
DaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to all
По умолчанию

Добрый день!
подскажите пожалуйста, железо rk3188 + bu-353s4
когда в командной строке выполняю:

echo -n "1-1.2:1.0" > /sys/bus/usb/drivers/option/unbind
insmod /system/lib/modules/pl2303.ko
busybox stty -F /dev/ttyUSB0 ispeed 4800
busybox chmod 666 /dev/ttyUSB0
setprop ro.kernel.android.gps ttyUSB0


по команде cat /dev/ttyUSB0", побежали NMEA данные.
Но когда я все добавляю по инструкции в автозагрузку и перезагружаю устройство, то скорость сама не меняется.
Может кто знает почему?

Последний раз редактировалось DaveMF; 16.03.2014 в 11:47.
DaveMF вне форума   Ответить с цитированием
Старый 16.03.2014, 11:51   #488
DaveMF
Banned
 
Регистрация: 26.06.2010
Регион: 52
Машина: duster
Сообщений: 113
DaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to all
По умолчанию

После перезагрузки, по команде busybox stty -F /dev/ttyUSB0 показывает 9600, т.е. автозагрузка не выполнилась.
Кто знает почему?
DaveMF вне форума   Ответить с цитированием
Старый 16.03.2014, 12:49   #489
Rage2
Banned
 
Регистрация: 06.11.2009
Возраст: 38
Город: Nizhniy Novgorod
Регион: 52
Машина: Ford Focus III
Сообщений: 1,776
Rage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant futureRage2 has a brilliant future
По умолчанию

Ну может автозагрузка (init.d) у вас не пашет или криво ее пытались поднять....попобуйте другой вариант. (install-recovery)
Смотрите логи командной dmesg, может все работает, а только скорость не выставляется....
Rage2 вне форума   Ответить с цитированием
Старый 16.03.2014, 13:15   #490
DaveMF
Banned
 
Регистрация: 26.06.2010
Регион: 52
Машина: duster
Сообщений: 113
DaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to allDaveMF is a name known to all
По умолчанию

Цитата:
Сообщение от Rage2 Посмотреть сообщение
Ну может автозагрузка (init.d) у вас не пашет или криво ее пытались поднять....попобуйте другой вариант. (install-recovery)
Смотрите логи командной dmesg, может все работает, а только скорость не выставляется....
Да, действительно, на моем МК908 (rk3188) init.d не работает, а вот создал
install-recovery.sh
c содержимым:
Цитата:
#!/system/bin/sh
echo -n "1-1.2:1.0" > /sys/bus/usb/drivers/option/unbind
insmod /system/lib/modules/pl2303.ko
busybox stty -F /dev/ttyUSB0 ispeed 4800
busybox chmod 666 /dev/ttyUSB0
setprop ro.kernel.android.gps ttyUSB0
положил как по инструкции в /system/etc/install-recovery.sh
и назначил права busybox chmod 755 /system/etc/install-recovery.sh
и все, данные пошли, автозагрузка заработала!!!

Спасибо, Rage2!
DaveMF вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 6 (пользователей: 0 , гостей: 6)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 17:24.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot