Как напечатать местоположение GPS на стандартный вывод (Ubuntu 16.04 / 18.04)? - PullRequest
0 голосов
/ 10 сентября 2018

Я полный новичок с устройствами GPS в Linux.

У меня есть GlobalSat G-STAR IV USB-устройство, и я просто хотел бы напечатать местоположение GPS (широта, долгота) на стандартный вывод. Как я могу этого достичь? Я читаю о gpsd, но не знаю, как узнать точное местоположение. Документация кажется старой.

Какие-нибудь распространенные инструменты и т. Д. Для этого?

Кажется, что с

$ sudo stty -F /dev/ttyUSB0 4800
$ sudo cat /dev/ttyUSB0

Я могу прочитать некоторые данные NMEA (?) С устройства:

$GPGGA,113935.199,,,,,0,00,,,M,0.0,M,,0000*5B

$GPGSA,A,1,,,,,,,,,,,,,,,*1E

$GPRMC,113935.199,V,,,,,,,100918,,,N*41

$GPGGA,113936.186,,,,,0,00,,,M,0.0,M,,0000*56

$GPGSA,A,1,,,,,,,,,,,,,,,*1E

$GPRMC,113936.186,V,,,,,,,100918,,,N*4C

$GPGGA,113937.185,,,,,0,00,,,M,0.0,M,,0000*54

$GPGSA,A,1,,,,,,,,,,,,,,,*1E

$GPRMC,113937.185,V,,,,,,,100918,,,N*4E

$GPGGA,113938.200,,,,,0,00,,,M,0.0,M,,0000*55

$GPGSA,A,1,,,,,,,,,,,,,,,*1E

Я до сих пор не вижу $GPGLL, который должен содержать местоположение ..?

Редактировать: я также получаю это:

$ sudo gpsd /dev/ttyUSB0 -N
gpsd:ERROR: can't bind to IPv4 port gpsd, Address already in use
gpsd:ERROR: maybe gpsd is already running!
gpsd:ERROR: can't bind to IPv6 port gpsd, Address already in use
gpsd:ERROR: maybe gpsd is already running!

Я убил все gpsd экземпляры и удалил сокет, но все еще получаю это ..

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Шаги, чтобы заставить это устройство работать, были:

# Switch the device to NMEA mode
sudo gpsctl -f -n /dev/ttyUSB0

# Set baudrate to 4800
sudo stty -F /dev/ttyUSB0 4800

# Start gpsd 
gpsd -S 4000 /dev/ttyUSB0

Теперь создайте соединение сокета TCP / IP с localhost:4000 и скажите ?WATCH={"enable":true,"json":true}; или используйте libgps и т. Д .:

http://www.catb.org/gpsd/client-howto.html

0 голосов
/ 11 сентября 2018

Вывод, который вы отправили с sudo cat /dev/ttyUSB0, - это то, что вы ожидаете от модуля GPS, который (пока) не имеет исправления, то есть у него недостаточно информации для расчета его текущего положения (+ другая информация).

Единственная информация, сообщаемая в сообщениях, - это текущее время дня, 11h39m35s и т. Д. Из сообщений, которые вы получаете от вашего модуля GPS, не только сообщение $GPGLL может рассказать вам о вашем местонахождении, но и $GPGGA и $GPRMC сообщений, которые вы получаете. Если бы в вашем модуле было исправление, вы бы видели не несколько запятых подряд, а реальные значения между ними.
Более подробную информацию о формате различных сообщений можно найти в этом обзоре .

Какова вероятная основная причина отсутствия GPS-исправления (если ваше оборудование + антенна исправны)?

  • Вы только что начали использовать этот модуль с завода, и ему нужно некоторое время, чтобы узнать его координаты. Время первого исправления для такого нового устройства может составлять до 15 минут.
  • Уровень сигнала GPS недостаточно высок в месте расположения вашего модуля.

Поэтому мой совет:

  • Убедитесь, что в вашем месте сигнал GPS от спутников достаточно сильный. В идеале при движении на открытом воздухе.
  • Если ваш модуль никогда не исправлялся, подождите некоторое время. Подождите до 20 минут.

GPSD:

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

systemctl status gpsd.service
systemctl status gpsd.socket

Если активен, демон gpsd считывает GPS-данные, поступающие через последовательный интерфейс, и передает их другим приложениям через сокет на конкретном порту (по умолчанию: порт 2947). В этом случае последовательный порт больше не доступен для последовательных мониторов.

...