如何将GPS位置打印到标准输出(Ubuntu 16.04/18.04)?

如何将GPS位置打印到标准输出(Ubuntu 16.04/18.04)?,gps,ubuntu-16.04,ubuntu-18.04,nmea,gpsd,Gps,Ubuntu 16.04,Ubuntu 18.04,Nmea,Gpsd,我是一个在Linux上使用GPS设备的新手 我有一个GlobalSat G-STAR IVUSB设备,我只想将GPS位置(纬度、经度)打印到标准输出。我怎样才能做到这一点?我正在阅读有关gpsd的文章,但不确定如何获取实际位置。文档似乎很旧 有什么常用的工具吗 似乎是 $ sudo stty -F /dev/ttyUSB0 4800 $ sudo cat /dev/ttyUSB0 我可以从设备读取一些NMEA(?)数据: $GPGGA,113935.199,,,,,0,00,,,M,0.0,M

我是一个在Linux上使用GPS设备的新手

我有一个
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
实例并删除了套接字,但仍然得到了..

您从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)上的套接字将其提供给其他应用程序。在这种情况下,串行监视器无法再访问串行端口。

您从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
现在创建一个到
localhost:4000
的TCP/IP套接字连接,并说
?WATCH={“enable”:true,“json”:true}或使用
libgps
等:


使该设备工作的步骤包括:

# 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
现在创建一个到
localhost:4000
的TCP/IP套接字连接,并说
?WATCH={“enable”:true,“json”:true}或使用
libgps
等:


joaquin@hamradio:~$sudo gpsctl-f-n/dev/ttyUSB0
gpsctl:ERROR:SER:/dev/ttyUSB0已由另一个进程打开
很抱歉出现了不完整的评论。只是想澄清一下:同一个GPS,用
sudo stty-F/dev/ttyUSB0 4800
获取数据,但是
sudo gpsctl…
如上所示失败检查该设备上是否已经运行了
gpsd
?它已停止。我运行了
sudo killall gpsd
。顺便说一句,这是Ubuntu20.04,如果在两天的战斗后运行。谢谢你的帮助。只需a)启动Ubuntu b)连接gps c)运行答案中指定的步骤。
joaquin@hamradio:~$sudo gpsctl-f-n/dev/ttyUSB0
gpsctl:ERROR:SER:/dev/ttyUSB0已由另一个进程打开
很抱歉出现了不完整的评论。只是想澄清一下:同一个GPS,用
sudo stty-F/dev/ttyUSB0 4800
获取数据,但是
sudo gpsctl…
如上所示失败检查该设备上是否已经运行了
gpsd