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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Навигация (http://pccar.ru/forumdisplay.php?f=176)
-   -   USB GPS for Android (http://pccar.ru/showthread.php?t=18871)

gorar 14.03.2014 14:29

Цитата:

Сообщение от s.m. (Сообщение 289873)
Интересно, но 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: : Broken pipe
date: invalid date '083541.600,140314'

с первой я непонял ничего, а вторая ... на сколько я понимаю время и дату с потока вытянуло но наверно там лишний ".600" как минимум.

pine 14.03.2014 14:45

Цитата:

Если бы работало - было бы "офигительная вещь" но вот неработает.
Цитата:

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

А вообще это всего-навсего означает, что ваш 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

gorar 14.03.2014 15:50

Цитата:

Сообщение от pine (Сообщение 290536)
Может просто эти два факта как-то между собой связаны, м? :)

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

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

После написания предыдущего поста появилась мысля и я пошел ее проверить. И вот что получилось:
Цитата:

Сообщение от pine (Сообщение 290536)
Путем нехитрых преобразований получаем, что новый код будет выглядеть как
Код:

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],//'
Учусь.

pine 14.03.2014 16:16

Цитата:

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

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

Welcome :)

Цитата:

Сообщение от gorar (Сообщение 290544)
Код:

sleep 5
...

и все работает на УРА!

Избыточно, имхо. То, что ниже


Цитата:

Сообщение от gorar (Сообщение 290544)
Спасибо за оптимизацию!
Код:

's/\.[0-9][0-9][0-9],//'
Учусь.

работает? Писал "из головы".

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

У меня есть ощущение, что на моем приемнике в случае, если спутники еще не найдены, то выдается "начало времен" 1 января 1970 года. Но проявляется это не каждый раз.

pine 14.03.2014 16:23

Кстати, вот такой код должен работать и с 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],//')"
проверить пока что не на чем опять же

gorar 14.03.2014 17:08

Цитата:

Сообщение от pine (Сообщение 290547)
работает? Писал "из головы".

работает, правда немножко сократил из-за ненадобности
Код:

's/\.[0-9]00,//'
Цитата:

Сообщение от pine (Сообщение 290547)
На самом деле еще хочу вас попросить понаблюдать, стабильно ли выставляется дата-время, если добавлять вызов этого скрипта в /etc/install-recovery.sh?
У меня есть ощущение, что на моем приемнике в случае, если спутники еще не найдены, то выдается "начало времен" 1 января 1970 года. Но проявляется это не каждый раз.

У меня какраз работает через этот скрипт, я установил задержку 5 сек после установки драйвера GPS, пока (несколько раз выключал) работает, посмотрим как будет работать после перерывов в несколько часов (суток).

п.с. пересмотрел Ваши ссылки по документации на NMEA и увидел там что есть флаг который отвечает за валидность информации о времени. Можно доработать скрипт на проверку этого флага и установка часов будет только тогда когда данные будут правильными.

DaveMF 15.03.2014 23:25

Добрый день!
подскажите пожалуйста, железо 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:51

После перезагрузки, по команде busybox stty -F /dev/ttyUSB0 показывает 9600, т.е. автозагрузка не выполнилась.
Кто знает почему?

Rage2 16.03.2014 12:49

Ну может автозагрузка (init.d) у вас не пашет или криво ее пытались поднять....попобуйте другой вариант. (install-recovery)
Смотрите логи командной dmesg, может все работает, а только скорость не выставляется....

DaveMF 16.03.2014 13:15

Цитата:

Сообщение от Rage2 (Сообщение 290692)
Ну может автозагрузка (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!


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

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