Как напечатать местоположение GPS на стандартный вывод (Ubuntu 16.04 / 18.04)?

Я полный новичок с устройствами 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 ответа

Вывод, который вы опубликовали с 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 deamon считывает GPS-данные, поступающие через последовательный интерфейс, и передает их другим приложениям через сокет на конкретном порту (по умолчанию: порт 2947). В этом случае последовательный порт больше не доступен для последовательных мониторов.

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

# 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

Другие вопросы по тегам