Как напечатать местоположение 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
так далее: